资源简介
基于虚拟力的一种无线传感网络的MATLAB程序代码

代码片段和文件信息
clear all
clc
N=40;%传感器节点个数
XMAX=900;%区域总长度
XMIN=100;
YMAX=800;%区域总宽度
YMIN=100;%区域总宽度
x=zeros(N2);
x(:1)=(XMAX-XMIN)*rand(N1)+XMIN;%使节点坐标随机分布
x(:2)=(YMAX-YMIN)*rand(N1)+YMIN;
figure
xm=[XMIN YMIN;XMIN YMAX;XMAX YMAX;XMAX YMIN];%区域的四个顶点
fill(xm(:1)xm(:2)[0.80.80.8]);
hold on
plot(x(:1)x(:2)‘r.‘‘linewidth‘5);
r=90; %传感器节点的感知半径
w=0:pi/50:2*pi;
for i=1:N
x1=x(i1)+r*cos(w);
y1=x(i2)+r*sin(w);%表示圆每一个角度对应一个点,然后把这些点连接起来构成圆
hold on
plot(x1y1‘b‘); %画出各个传感器节点的感知范围
text(x(i1)+3x(i2)[‘\fontsize{8}\rm‘num2str(i)]);
hold on
fill(x1y1‘b‘)
end
axis([0 1000 0 900]);%设定坐标范围
xlabel(‘X/m‘);ylabel(‘Y/m‘);
%legend(‘要监测的区域‘[‘传感器节点(‘‘\fontsize{12}\bf‘num2str(N)‘\fontsize{10}\rm个)的位置‘]‘ 传感器节点的感知范围‘);
hold on
plot([XMIN XMAX][YMIN YMIN]‘k‘‘linewidth‘1.5);
hold on
plot([XMIN XMIN][YMIN YMAX]‘k‘‘linewidth‘1.5);
hold on
plot([XMAX XMAX][YMIN YMAX]‘k‘‘linewidth‘1.5);
hold on
plot([XMIN XMAX][YMAX YMAX]‘k‘‘linewidth‘1.5);%把四个顶点连接起来组成一个监测区域
%--------------------------------虚拟力算法---------------------------------
%------------先对区域进行离散化---------
deta=2;%网络大小
x1=XMIN:deta:XMAX;
y1=YMIN:deta:YMAX;
[xxyy]=meshgrid(x1y1);
[mn]=size(xx);
K=m*n; %总的网格点数目
xx1=reshape(xxK1);%网格点的横坐标
yy1=reshape(yyK1);%网格点的纵坐标
%hold on
%plot(xx1yy1‘g*‘)
%----------------计算起初的网络覆盖率-----------------------------------------------------
[no_coversummk1]=compute_cover(xx1yy1xr);
%no_cover存储没有被覆盖的格点位置,k1为求被覆盖的格点,summ为被覆盖的格点数;
q(11)=summ/K;
%-------------------------------------------------------
figure
fill(xm(:1)xm(:2)[0.80.80.8]); %填充监测区域
hold on
plot(x(:1)x(:2)‘ro‘‘markerfacecolor‘‘r‘‘linewidth‘3); %传感器节点位置
for i=1:N
text(x(i1)+3x(i2)[‘\fontsize{8}\rm‘num2str(i)]); %标出传感器节点位置
end
axis([0 1000 0 900]);
xlabel(‘X/m‘);ylabel(‘Y/m‘);
%----------------------
R=2*r; %传感器节点的通信半径
maxiter=100; %最大迭代次数
max_step=2.5; %传感器节点移动的最大步长(在格点作用下的最大步长)
max_sensor=3.5; %传感器节点移动的最大步长(在传感器节点作用下的最大步长)
%----------------------
kp=1;
xp{kp1}=x;
for t=1:maxiter
%k3=1;
F=0;
tx_old=x; %前一次迭代的传感器节点位置
for i=1:N
k2=1;
flag1=0;
for k=1:(k1-1)
dik=sqrt((x(i1)-no_cover(k1))^2+(x(i2)-no_cover(k2))^2); %x为传感器节点的位置,no_cover是未被网络覆盖的网格点的位置
if ((dik>r)&(dik<=R)) %R为通信半径,r为感知半径
F(k21)=no_cover(k1)-x(i1);
F(k22)=no_cover(k2)-x(i2);
k2=k2+1;
%flag1=flag1+1;
end
end
Fx=0;
Fy=0;
for j=1:(k2-1)
Fx=Fx+F(j1); %水平力
Fy=Fy+F(j2); %垂直力
end
Fxy=sqrt(Fx^2+Fy^2);
if Fxy==0
x(i1)=x(i1)+0;
x(i2)=x(i2)+0;
else
x(i1)=x(i1)+Fx/Fxy*max_step*exp(-1/Fxy);%节点位置更新
x(i2)=x(i2)+Fy/Fxy*max_step*exp(-1/Fxy);
end
%if flag1~=0
% k3=k3+1;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2012-10-30 10:09 无线传感网络仿真代码\
文件 2916 2012-10-30 10:06 无线传感网络仿真代码\Unti
文件 2942 2012-10-30 10:09 无线传感网络仿真代码\Unti
文件 5045 2012-10-16 09:53 无线传感网络仿真代码\amd.m
文件 938 2011-06-30 10:50 无线传感网络仿真代码\compute_cover.m
文件 938 2011-07-05 10:12 无线传感网络仿真代码\q.mat
文件 1428 2011-06-30 10:53 无线传感网络仿真代码\six_figures_arrange.asv
文件 1423 2011-05-16 20:18 无线传感网络仿真代码\six_figures_arrange.m
文件 5032 2011-09-29 22:30 无线传感网络仿真代码\xp.asv
文件 5045 2011-10-01 22:08 无线传感网络仿真代码\xp.m
文件 3180 2011-05-16 20:18 无线传感网络仿真代码\xp.mat
- 上一篇:matlab实现haar小波分解
- 下一篇:脑电信噪比计算 matlab 程序
相关资源
- matlab_OFDM调制解调(来自剑桥大学)
- Matlab路面裂缝识别69319
- 高灵敏度GPS接收机MATLAB仿真,附捕获
- 基于MATLAB的质点弹道计算与外弹道优
- 阵列天线的matlab仿真
- MATLAB 经典程序源代码大全
- MATLAB小波软阈值去噪代码33473
- 天线阵的波束形成在MATLAB仿真程序及
- 非线性SVM算法-matlab实现
- 《MATLAB 智能算法超级学习手册》-程序
- 组合导航matlab程序
- 读取txt文件内容matlab代码实现
- Matlab实现基于相关的模板匹配程序
- matlab优化工具箱讲解
- 基于MATLAB的快速傅里叶变换
- 光纤传输中的分布傅立叶算法matlab实
- 基于matlab的图像处理源程序
- matlab 椭圆拟合程序
- 算术编码解码matlab源代码
- optical_flow 光流法 matlab 实现程序
- 引导图像滤波器 Matlab实现
- 分形几何中一些经典图形的Matlab画法
- OFDM系统MATLAB仿真代码
- SVM工具箱(matlab中运行)
- 图像小波变换MatLab源代码
- LU分解的MATLAB实现
- 冈萨雷斯数字图像处理matlab版(第三
- 替代数据法的matlab程序
- 用matlab实现的多站定位系统性能仿真
- 通过不同方法进行粗糙集属性约简m
评论
共有 条评论