資源簡(jiǎn)介
無線傳感器網(wǎng)絡(luò)中l(wèi)each分簇算法,代碼編寫考慮較全面,無錯(cuò)誤。
代碼片段和文件信息
clear;%清除內(nèi)存變量
xm=100;%x軸範(fàn)圍
ym=100;%y軸範(fàn)圍
sink.x=0.5*xm;%基站x軸
sink.y=0.5*ym;%基站y軸
n=50;%節(jié)點(diǎn)總數(shù)
p=0.1;%簇頭概率
E0=0.02;%初始能量
ETX=50*0.000000000001;%傳輸能量,每bit
ERX=50*0.000000000001;%接收能量,每bit
Efs=10*0.000000000001;%耗散能量,每bit
EDA=5*0.000000000001;%融合能耗,每bit
cc=0.6;%融合率
rmax=1000;%總輪數(shù)
CM=32;%控制信息大小
DM=4000;%數(shù)據(jù)信息大小
figure(1);%顯示圖片
for?i=1:1:n
????S(i).xd=rand(11)*xm;
????S(i).yd=rand(11)*ym;
????S(i).G=0;%每一週期結(jié)束此變量為0
????S(i).E=E0;%設(shè)置初始能量為E0
????S(i).type=‘N‘;%節(jié)點(diǎn)類型為普通
????plot(S(i).xdS(i).yd‘o‘);
????hold?on;%保持所畫的圖像
end%為每個(gè)節(jié)點(diǎn)隨機(jī)分配坐標(biāo),並設(shè)置初始能量為E0,節(jié)點(diǎn)類型為普通
S(n+1).xd=sink.x;
S(n+1).yd=sink.y;
plot(S(n+1).xdS(n+1).yd‘hr‘);%繪製基站節(jié)點(diǎn)?紅色五角星形
flag_first_dead=0;%第一個(gè)死亡節(jié)點(diǎn)的標(biāo)誌變量
for?r=1:1:rmax%開始每輪循環(huán)
??r+1%顯示輪數(shù)
????if(mod(rround(1/p))==0)
???????for?i=1:1:n
???????????S(i).G=0;
???????end
????end%如何輪數(shù)正好是一個(gè)週期的整數(shù)倍,則設(shè)置S(i).E為0
?????hold?off;%每輪圖片重新繪製
?????cluster=0;%初始簇頭數(shù)為0
?????dead=0;%初始死亡節(jié)點(diǎn)數(shù)為0
?????
?????figure(1);
?????for?i=1:1:n
?????????if(S(i).E<=0)
?????????plot(S(i).xdS(i).yd‘red?.‘);
?????????dead=dead+1;%將能量小於等於0的節(jié)點(diǎn)繪製成紅色,並將死亡節(jié)點(diǎn)數(shù)增加1
?????????
?????????if(dead==1)
???????????if(flag_first_dead==0)
?????????????first_dead=r?%第一個(gè)節(jié)點(diǎn)的死亡輪數(shù)
?????????????save?ltest?first_dead;
?????????????flag_first_dead=1;
???????????end
?????????end%將能量小於等於0的節(jié)點(diǎn)繪製成紅色,並將死亡節(jié)點(diǎn)數(shù)增加1
???????????
?????????hold?on;
?????????else
?????????????S(i).type=‘N‘;
?????????????plot(S(i).xdS(i).yd‘o‘);%繪製其他節(jié)點(diǎn)
?????????????hold?on;
?????????end
?????????
?????end
?????plot(S(n+1).xdS(n+1).yd‘hr‘);%繪製基站
?????Dead(r+1)=dead;?%每輪有死亡節(jié)點(diǎn)數(shù)
?????save?ltest?Dead(r+1);%將此數(shù)據(jù)存入ltest文件
?????
?????for?i=1:1:n
?????????if(S(i).E>0)
???????????if(S(i).G<=0)
????????????temp_rand=rand;%取一個(gè)隨機(jī)數(shù)
????????????if(temp_rand<=(p/(1-p*mod(rround(1/p)))))%如果隨機(jī)數(shù)小於等於
????????????S(i).type=‘C‘;%此節(jié)點(diǎn)為此輪簇頭
????????????S(i).G=round(1/p)-1;%S(i).G設(shè)置為大於0,此週期不能再被選擇為簇頭
????????????cluster=cluster+1;%簇頭數(shù)加1
????????????C(cluster).xd=S(i).xd;
????????????C(cluster).yd
- 上一篇:經(jīng)典SAX符號(hào)化算法
- 下一篇:瑞利衰落信道仿真matlab
評(píng)論
共有 條評(píng)論