资源简介
WSN仿真-Leach分簇+能量消耗控制,附源代码(注释详细)WSN仿真-Leach分簇+能量消耗控制,附源代码(注释详细)
代码片段和文件信息
clear all
close all
clc;
xm=100; %x轴范围
ym=100; %y轴范围
n=100;
p=0.08;
%随机产生100个点
for i=1:1:n
S(i).xd=rand(11)*xm;
S(i).yd=rand(11)*ym;
S(i).temp_rand=rand;
S(i).type=‘N‘; %进行选举簇头前先将所有节点设为普通节点
S(i).selected=‘N‘;
S(i).power=500; %初始能量为500
hold on;
end
flag=1;
%在此进行10次分簇
for r=1:1:10
figure(r);
for i=1:1:n %随机产生100个点
S(i).temp_rand=rand; %0-1之间的随机数
end
for i=1:1:n
if S(i).selected==‘N‘ %被选为候选节点,选过了之后就不再被选
if ( S(i).temp_rand<=(p/(1-p*mod(rround(1/p)))))
S(i).type=‘C‘; %节点类型为蔟头
S(i).selected=‘O‘; %选过了之后就不再被选
plot(S(i).xdS(i).yd‘ro‘); %绘制簇头节点
text(S(i).xdS(i).ydnum2str(i)); %绘制节点标号
else S(i).type=‘N‘; %节点类型为普通
plot(S(i).xdS(i).yd‘.‘); %绘制普通节点
text(S(i).xdS(i).ydnum2str(i));%绘制节点标号
end
else %本来是普通节点
plot(S(i).xdS(i).yd‘.‘); %普通节点以o标记
text(S(i).xdS(i).ydnum2str(i));
end
hold on;
end
%采用距离矩阵判断最近的簇头结点
yy=zeros(n);
for a=1:1:n
if S(a).type==‘N‘
for b=1:1:n
if S(b).type==‘C‘
S(a).power=S(a).power-1; %每收1个候选簇头信息,即接收信息,则能量-1
S(b).power=S(b).power-2; %簇头被簇成员接收信息,即发送信息,则能量-2
length(ab)=sqrt((S(a).xd-S(b).xd)^2+(S(a).yd-S(b).yd)^2); %簇头与每个普通节点的距离
else
length(ab)=10000;
end
end
[valb]=min(length(a:)); %找到离自己最近的簇头节点
plot([S(b).xd;S(a).xd][S(b).yd;S(a).yd]) %将节点与簇头连起来,即加入簇头集合
S(a).power=S(a).power-2; %通知簇头成为其成员,发送信息能量-2
S(b).power=S(b).power-2; %被通知成为簇头,接收信息,则能量-1
yy(ab)=1;
hold on
else
length(a:)=10000; %若是簇头节点,则到所有的节点距离都为最大
end
end
%本次分簇后,计算通信过程能量的消耗
for m=1:1:10 %每个簇成员每轮向簇头发送10次数据
for i=1:1:n
if S(i).type==‘C‘
number=sum(yy(:i)); %计算该簇头有多少个成员节点
S(i).power=S(i).power-number; %每接受一次,簇头能量-number
else
S(i).power=S(i).power-2; %每次成员能量-2
end
end
end
%对每轮完成后,判断能量是否耗尽
for i=1:1:n
if (S(i).power)<0
plot(S(i).xdS(i).yd‘k.‘‘markersize‘30);
text(S(i).xdS(i).yd‘能量耗尽‘);
flag=0;
break;
end
end
% %如果存在能量耗尽,跳出循环
% if flag==0
% break;
% end
%重置所有节点
for i=1:1:n
S(i).type=‘N‘;
end
end
% if flag==0
% break
% end
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3000 2018-04-23 22:40 wsn3.m
文件 3475 2018-04-22 15:00 WSNLeach分簇+能量.txt
- 上一篇:SPSS从入门到精通_网盘链接37.93M
- 下一篇:操作系统知识点整理
评论
共有 条评论