資源簡介
WSN仿真-MATLAB基于COMPOW協(xié)議下的網(wǎng)絡(luò)連通率和覆蓋率,附源代碼(注釋詳盡)。WSN仿真-MATLAB基于COMPOW協(xié)議下的網(wǎng)絡(luò)連通率和覆蓋率,附源代碼(注釋詳盡)。

代碼片段和文件信息
%參數(shù)初始化、矩陣初始化
N=100;
M=(1000+1)*(1000+1);??%將矩陣分為1000*1000份
r=0;
flag=zeros(1M);?%這里定義為一維數(shù)組是為了在計算覆蓋率的時候便于計算。先將其置零。
sum=0;???????????%被覆蓋的額數(shù)
x=rand(1N);
y=rand(1N);
%判斷矩陣(節(jié)點)連通性,求出滿足連通的最小半徑
adjacencyMatrix=zeros(N);
for?R=0:0.01:1
????for?i=1:N
????????for?j=(i+1):1:N
????????????if?(x(i)-x(j))^2+(y(i)-y(j))^2?????????????????adjacencyMatrix(ij)=1;
????????????????adjacencyMatrix(ji)=1;
????????????end
???????end
????end
????
????S=zeros(N);
????for?m=1:1:N-1?
????????S=S+adjacencyMatrix^m;
????????if?all(all(S))==1
????????????r=R;
????????????break;
????????end
????end
????if(r~=0)
????????break;
????end
????
end
r?????%輸出最小能級對應(yīng)的半徑
%繪制節(jié)點覆蓋范圍,并將其置為黑色。
angle=0:pi/50:2*pi;
for?k=1:N
????figure(1);
????plot(r*cos(angle)+x(k)r*sin(angle)+y(k));
????plot(x(k)y(k)‘.‘);
????axis([0101]);
????axis?equal;
????hold?on?;
????figure(2);
????plot(r*cos(angle)+x(k)r*sin(angle)+y(k));
????plot(x(k)y(k)‘.‘);
????fill(r*cos(angle)+x(k)r*sin(angle)+y(k)[000]);
????axis([0101]);
????axis?equal;
????hold?on?;
end
%把矩陣分成1000*1000份,逐一判斷是否在覆蓋范圍內(nèi),并置標(biāo)志位為1
for?i=0:0.001:1????%把矩陣分成1000*1000份
????for?j=0:0.001:1
????????for?m=1:N
????????????if?(i-r) ????????????????if??(x(m)-i)^2+(y(m)-j)^2 ????????????????????flag(?int32(i*1000*1001+j*1000)+1?)=1;??????%將已經(jīng)被覆蓋的地方標(biāo)記,從1開始轉(zhuǎn)化成整型???????????
????????????????????break;???????????????????????????????%已被覆蓋就不用再計算
????????????????end???????????????????
????????????end
????????end
????end
end
%計算覆蓋率
for?i=1:M
????if?flag(i)==1
????????sum=sum+1;
????end
end
sum
double(sum/M)???%輸出覆蓋率,轉(zhuǎn)為double顯示???0.1600???0.9760
%?sum(flag==1)/M?????%輸出覆蓋率
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????1930??2018-04-02?21:42??wsn2.m
?????文件??????147922??2018-04-02?21:46??基于COMPOW協(xié)議下的網(wǎng)絡(luò)連通率和覆蓋率.docx
評論
共有 條評論