91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 3KB
    文件類型: .zip
    金幣: 2
    下載: 2 次
    發布日期: 2021-11-13
  • 語言: 其他
  • 標簽: WSN仿真??

資源簡介

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

評論

共有 條評論