資源簡介
很齊全的WSN的matlab仿真希望貴大家有所幫助

代碼片段和文件信息
clear
m=1;
for?a=0:0.5:5
%1.初始參數(shù)設(shè)定模塊
%.傳感器節(jié)點區(qū)域界限(單位?M)
xm=100;
ym=100;
%(1)匯聚節(jié)坐標(biāo)給定
sink.x=0.5*xm;
sink.y=0.5*ym;
%區(qū)域內(nèi)傳器節(jié)數(shù)
n=100
%簇頭優(yōu)化比例(當(dāng)選簇頭的概率)
p=0.1;
P=0.1;
%能量模型(單位?焦)
%初始化能量模型
Eo=0.5;
%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;
%最大循環(huán)次數(shù)
rmax=5000
%算出參數(shù)?do
do=sqrt(Efs/Emp);
Et=0;
%2.無線傳感器網(wǎng)絡(luò)模型產(chǎn)生模塊
%構(gòu)建無線傳感器網(wǎng)絡(luò)在區(qū)域內(nèi)均勻投放100個節(jié)點并畫出圖形
for?i=1:1:n
????S1(i).xd=rand(11)*xm;
????S2(i).xd=S1(i).xd;
????S3(i).xd=S1(i).xd;
????S4(i).xd=S3(i).xd;
????XR4(i)=S4(i).xd;
????XR3(i)=S3(i).xd;
????XR2(i)=S2(i).xd;
????XR1(i)=S1(i).xd;
????S1(i).yd=rand(11)*ym;
????S2(i).yd=S1(i).yd;
????S3(i).yd=S1(i).yd;
????S4(i).yd=S3(i).yd;
????YR4(i)=S4(i).yd;
????S4(i).G=0;
????YR3(i)=S3(i).yd;
????S3(i).G=0;
????YR2(i)=S2(i).yd;
????YR1(i)=S1(i).yd;
????S1(i).G=0;
????S2(i).G=0;
????S1(i).E=Eo*(1+rand*a);
????S2(i).E=S1(i).E;
????S3(i).E=S1(i).E;
????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
????S1(i).type=‘N‘;
????S2(i).type=‘N‘;
????S3(i).type=‘N‘;
????S4(i).type=‘N‘;
end
S2(n+1).xd=sink.x;
S2(n+1).yd=sink.y;
%3.網(wǎng)絡(luò)運行模塊
%簇頭節(jié)點數(shù)
countCHs2=0;
cluster=1;%此定義的目的僅僅是給定一個1開始的下標(biāo)參數(shù),真正的簇頭數(shù)應(yīng)該還減去1
flag_first_dead2=0;
flag_teenth_dead2=0;
%死亡節(jié)點數(shù)
dead2=0;
first_dead2(m)=0;
teenth_dead2(m)=0;
%活動節(jié)點數(shù)
allive2=n;
%(1)循環(huán)模式設(shè)定
for?r=0:1:rmax?????%該?for?循環(huán)將下面的所有程序包括在內(nèi),直到最后一?end?才結(jié)束循環(huán)
????r;
??%每過一個輪轉(zhuǎn)周期(本程序為10次)使各節(jié)點的S(i).G參數(shù)(該參數(shù)用于后面的簇選舉,在該輪轉(zhuǎn)周期內(nèi)已當(dāng)選過簇頭的節(jié)點不能再當(dāng)選)恢復(fù)為零
??if(mod(r?round(1/p)?)==0)
????for?i=1:1:n
????????S2(i).G=0;
????????S2(i).cl=0;
????end
??end
%(2)死亡節(jié)點檢查模塊
dead2=0;
for?i=1:1:n
????%檢查有無死亡節(jié)點
????if?(S2(i).E<=0)
????????dead2=dead2+1;?
????????%(3)第一個死亡節(jié)點的產(chǎn)生時間(用輪次表示)
????????%第一個節(jié)點死亡時間
????????if?(dead2==1)
???????????if(flag_first_dead2==0)
??????????????first_dead2(m)=r;
??????????????flag_first_dead2(m)=1;
???????????end
????????end
????????%10%的節(jié)點死亡時間
????????if(dead2==0.1*n)
???????????if(flag_teenth_dead2==0)
??????????????teenth_dead2(m)=r;
??????????????flag_teenth_dead2=1;
???????????end
????????end
????end
????if?S2(i).E>0
????????S2(i).type=‘N‘;
????end
end
%(4)簇頭選舉模塊
countCHs2=0;
cluster2=1;
for?i=1:1:n
???if(S2(i).E>0)
???temp_rand=rand;?????
???if?(?(S2(i).G)<=0)??
???????%簇頭的選舉,當(dāng)選的簇頭會把各種相關(guān)信存入下面程序所給定的變量中
????????if(temp_rand<=?(p/(1-p*mod(rround(1/p)))))
????????????countCHs2=countCHs2+1;
????????????S2(i).type=‘C‘;
????????????S2(i).G=round(1/p)-1;
????????????C2(cluster2).xd=S2(i).xd;
????????????C2(cluster2).yd=S2(i).yd;
???????????distance=sqrt(?(S2(i).xd-(S2(n+1).xd)?)^2?+?(S2(i).yd-(S2(n+1).yd)?)^2?);
????????????C2(cluster2).distance=distance;
????????????C2(cluster2).id=i;
????????????X2(cluster2)=S2(i).xd;
????????????Y2(cluster2)=S2(i).yd;
????????????cluster2=cluster2+1;
???????????%計算簇頭發(fā)送4000bit數(shù)據(jù)到基站的能量消耗(這里
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????6118??2007-05-28?22:11??WSN\leachs1.m
?????文件??????12135??2007-06-04?19:02??WSN\leachs1vsleachs2.m
?????文件???????6346??2007-05-25?14:40??WSN\leachs2.m
?????文件??????22337??2007-06-03?23:10??WSN\leachvsdeec.m
?????文件??????10454??2007-05-25?19:47??WSN\bp2.m
?????文件??????19002??2007-05-25?19:52??WSN\bp4.m
?????文件??????12515??2007-06-04?19:02??WSN\DEEC1VSDEEC2.m
?????文件???????6637??2007-05-25?10:39??WSN\DEEC2.m
?????文件??????20473??2007-06-04?20:15??WSN\fps.m
?????文件???????5954??2007-05-25?11:23??WSN\leachm1.m
?????文件??????10957??2007-05-25?15:37??WSN\leachm1vsleachm2.m
?????文件???????6402??2007-05-25?11:24??WSN\leachm2.m
?????目錄??????????0??2007-10-24?10:35??WSN
-----------?---------??----------?-----??----
???????????????139330????????????????????13
評論
共有 條評論