资源简介
MATLAB平台的LEACH协议代码.对于搞毕业设计的人还是很好的东西。
代码片段和文件信息
clear;
%%%%%%%%%%%%%%%%%%%%%%%%% 参数初始化 %%%%%%%%%%%%%%%%%%%%%%%%
xm=100;%待投放节点的场景范围
ym=100;
sink.x=0.5*xm;%基站的位置
sink.y=0.5*ym;
n=100;%节点总数
data_packet=4000;%每个节点采集数据形成的数据包大小
p=0.05;%期望蔟头占所有节点的百分比
%能量模型
Eo=0.05;%初始能量
ETX=50*0.000000001;%Eelec=Etx=Erx
ERX=50*0.000000001;
Efs=10*0.000000000001;%放大器的两个参数
Emp=0.0013*0.000000000001;
EDA=5*0.000000001;%融合单位数据所要消耗的能量
rmax=1999;%运行的总轮数
do=sqrt(Efs/Emp);%能量损耗的界限值:大于它则符合friss free space model,小于它则符合two-ray ground model
%%%%%%%%%%%%%%%%%%%%%%%%% 参数初始化结束 %%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%% 簇的建立 %%%%%%%%%%%%%%%%%%%%%%%%%
for i=1:1:n
S(i).xd=rand(11)*xm;%随机生成节点的坐标
S(i).yd=rand(11)*ym;
S(i).G=0;%节点是否属于集合G的标志
S(i).type=‘N‘;%表征普通节点
S(i).E=Eo;%初始化节点能量
end
S(n+1).xd=sink.x;%画出基站节点‘x‘
S(n+1).yd=sink.y;
firstflag=0;
firstflag_round=0;
for r=0:1:rmax%开始循环
r %输出当前的轮数
dead=0;%统计总的死亡节点数
if(mod(r round(1/p) )==0)%G为最近1/p轮不是簇头的节点集
for i=1:1:n
S(i).G=0;
end
end
for i=1:1:n
if (S(i).E<=0)
dead=dead+1;%统计总的死亡节点个数
else
S(i).type=‘N‘;
end
end
if(dead>0 && firstflag==0)
firstflag=1;
firstflag_round=r;
end
if (dead == n)%如果节点全部死亡退出循环
break;
end
STATISTICS(r+1).DEAD=dead;%统计第r+1轮的死亡节点数
%%%%%%%%%%%%%%%%%%%%%%%%%第一阶段:簇首节点的选择
cluster=1;%记录簇的个数
for i=1:1:n
if(S(i).E>0 && (S(i).G)<=0)%属于候选节点集合
temp_rand=rand;%生成一个0-1的随机数
if(temp_rand<= (p/(1-p*mod(rround(1/p)))))%若生成的随机数小于门限值T(n),就成为簇头
S(i).type=‘C‘;%标志该节点为簇头
S(i).G=round(1/p)-1;%标志该节点在最近的1/p轮中不会再成为簇头
C(cluster).xd=S(i).xd;%记录簇头的位置
C(cluster).yd=S(i).yd;
C(cluster).distance=sqrt( (S(i).xd-(S(n+1).xd) )^2 + (S(i).yd-(S(n+1).yd) )^2 );%簇头距离基站的距离
C(cluster).id=i;%簇头的在原来n个节点中的编号
C(cluster).packet=0;%该簇头所控制的簇成员个数
cluster=cluster+1;
end
end
end
CLUSTERHS(r+1)=cluster-1;%统计第r+1轮的簇头数
%%%%%
- 上一篇:svm+smo matlab程序
- 下一篇:宽度学习matlab代码
相关资源
- 宽度学习matlab代码
- BPSK,QPSK Matlab仿真代码
- MOEA/D的MATLAB代码
- MATLAB源程序代码分享:MATLAB实现牛顿
- 基于小波变换的数字水印嵌入与提取
- matlab使用libsvm进行分类代码.rar
- 地心地固坐标系ECEF转地心惯性系ECI
- matlab 去除人脸图像中的雀斑,人脸美
- RGB到YIQ,RGB到HSI和HSI到RGB,RGB到YcbC
- 数据包络法DEA)matlab代码
- 人工鱼群算法Matlab代码
- 基于Matlab随机时间序列预测模型数据
- 快速傅里叶变换算法matlab实现
- 基于粒子群算法的无功优化MATLAB源代
- rs码编译码的matlab代码
- 通信信号特征参数的提取matlab代码
- MATLAB图像分割提取算法源代码---车牌
- am调制解调系统仿真matlab代码
- l-bfgs的matlab代码
- MATLAB画三维球体、半球体、圆柱、山
- nurbs曲线matlab程序代码
- 卷积神经网络matlab代码
- matlab模拟光纤光栅算法与代码
- OIF计算代码matlab
- 空间后方交会matlab源代码
- Isomapmatlab,官方源代码
- Matlab余弦相似度算法判断图片相似度
- SISO系统的多径瑞利信道理想信道估计
- 神经网络滑模控制器设计的matlab源代
- 关于肤色分割的matlab源代码
评论
共有 条评论