资源简介
可以分析不同的分簇算法比较死亡节点等功能可以分析不同的分簇算法比较死亡节点等功能

代码片段和文件信息
clear
%1.初始参数设定模块
%.传感器节点区域界限(单位 M)
xm=200;
ym=200;
%(1)汇聚节坐标给定
sink.x=0.5*xm;
sink.y=0.5*ym;
%区域内传器节数
n=100
%簇头优化比例(当选簇头的概率)
P=0.05;
%能量模型(单位 焦)
%初始化能量模型
Eo=0.1;
%Eelec=Etx=Erx
ETX=50*0.000000001;
ERX=50*0.000000001;
%Transmit Amplifier types
Efs=10*0.000000000001;
Emp=0.0013*0.000000000001;
%Data Aggregation Energy
EDA=5*0.000000001;
%高能量节点超出一节点能量的百分比
a=1;
%最大循环次数
rmax=1000
%算出参数 do
do=sqrt(Efs/Emp);
Et=0;
%2.无线传感器网络模型产生模块
%构建无线传感器网络在区域内均匀投放100个节点并画出图形
for i=1:1:n
S3(i).xd=rand(11)*xm;
S4(i).xd=S3(i).xd;
XR4(i)=S4(i).xd;
XR3(i)=S3(i).xd;
S3(i).yd=rand(11)*ym;
S4(i).yd=S3(i).yd;
YR4(i)=S4(i).yd;
S4(i).G=0;
YR3(i)=S3(i).yd;
S3(i).G=0;
S3(i).E=Eo*(1+rand*a);
S4(i).E=S3(i).E;
E3(i)= S3(i).E;
E4(i)= S4(i).E;
Et=Et+E3(i);
%initially there are no cluster heads only nodes
S3(i).type=‘N‘;
S4(i).type=‘N‘;
end
d1=0.765*xm/2;
K=sqrt(0.5*n*do/pi)*xm/d1^2;
d2=xm/sqrt(2*pi*K);
Er=4000*(2*n*ETX+n*EDA+K*Emp*d1^4+n*Efs*d2^2);
S3(n+1).xd=sink.x;
S3(n+1).yd=sink.y;
S4(n+1).xd=sink.x;
S4(n+1).yd=sink.y;
%3.网络运行模块
%簇头节点数
countCHs3=0;
cluster3=1;%此定义的目的仅仅是给定一个1开始的下标参数,真正的簇头数应该还减去1
flag_first_dead3=0;
flag_teenth_dead3=0;
flag_all_dead3=0;
%死亡节点数
dead3=0;
first_dead3=0;
teenth_dead3=0;
all_dead3=0;
%活动节点数
allive3=n;
%counter for bit transmitted to bases Station and to Cluster Heads
packets_TO_BS3=0;
packets_TO_CH3=0;
%(1)循环模式设定
for r=0:1:rmax %该 for 循环将下面的所有程序包括在内,直到最后一 end 才结束循环
r
%每过一个轮转周期(本程序为10次)使各节点的S(i).G参数(该参数用于后面的簇选举,在该轮转周期内已当选过簇头的节点不能再当选)恢复为零
if(mod(r round(1/P) )==0)
for i=1:1:n
S3(i).G=0;
S3(i).cl=0;
end
end
Ea=Et*(1-r/rmax)/n;
El3(r+1)=0;
for i=1:100
El3(r+1)=S3(i).E+El3(r+1);
end
Ec3(r+1)=Et-El3(r+1);
%(2)死亡节点检查模块
dead3=0;
for i=1:1:n
%检查有无死亡节点
if (S3(i).E<=0)
dead3=dead3+1;
%(3)第一个死亡节点的产生时间(用轮次表示)
%第一个节点死亡时间
if (dead3==1)
if(flag_first_dead3==0)
first_dead3=r;
flag_first_dead3=1;
end
end
%10%的节点死亡时间
if(dead3==0.1*n)
if(flag_teenth_dead3==0)
teenth_dead3=r;
flag_teenth_dead3=1;
end
end
if(dead3==n)
if(flag_all_dead3==0)
all_dead3=r;
flag_all_dead3=1;
end
end
end
if S3(i).E>0
S3(i).type=‘N‘;
end
end
STATISTICS.DEAD3(r+1)=dead3;
STATISTICS.ALLIVE3(r+1)=allive3-dead3;
%(4)簇头选举模块
countCHs3=0;
cluster3=1;
for i=1:1:n
if Ea>0
p(i)=P*n*S3(i).E*E3(i)/(Et*Ea);
if(S3(i).E>0)
temp_rand=rand;
if ( (S3(i).G)<=0)
%簇头的选举,当选的簇头会把各种相关信存入下面程序所给定的变量中
if(temp_rand<= (p(i)/(1-p(i)*mod(rround(1/p(i))))))
countCHs3=countCHs3+1;
packets_TO_BS3=packets_TO_BS3+1;
PACKETS_TO_BS3(r+1)=packets_TO_BS3;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 14257 2014-04-29 14:23 cucfineUnti
----------- --------- ---------- ----- ----
14257 1
相关资源
- 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
评论
共有 条评论