無線傳感器網(wǎng)絡(luò)實驗指導(dǎo)書_第1頁
無線傳感器網(wǎng)絡(luò)實驗指導(dǎo)書_第2頁
無線傳感器網(wǎng)絡(luò)實驗指導(dǎo)書_第3頁
無線傳感器網(wǎng)絡(luò)實驗指導(dǎo)書_第4頁
無線傳感器網(wǎng)絡(luò)實驗指導(dǎo)書_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、無線傳感器網(wǎng)絡(luò)實驗指導(dǎo)書信息工程學(xué)院實驗一 質(zhì)心算法一、實驗?zāi)康恼莆蘸喜①|(zhì)心算法的基本思想;學(xué)會利用MATLAB實現(xiàn)質(zhì)心算法;學(xué)會利用數(shù)學(xué)計算軟件解決實際問題。二、實驗內(nèi)容和原理無需測距的定位技術(shù)不需要直接測量距離和角度信息。定位精度相對較低,不過可以滿足某些應(yīng)用的需要。在計算幾何學(xué)里多邊形的幾何中心稱為質(zhì)心,多邊形頂點坐標(biāo)的平均值就是質(zhì)心節(jié)點的坐標(biāo)。假設(shè)多邊形定點位置的坐標(biāo)向量表示為pi= (xi,yi)T,則這個多邊形的質(zhì)心坐標(biāo)為:例如,如果四邊形 ABCD 的頂點坐標(biāo)分別為 (x1, y1),(x2, y2), (x3, y3) 和(x4,y4),則它的質(zhì)心坐標(biāo)計算如下:這種方法的計算與

2、實現(xiàn)都非常簡單,根據(jù)網(wǎng)絡(luò)的連通性確定出目標(biāo)節(jié)點周圍的信標(biāo)參考節(jié)點,直接求解信標(biāo)參考節(jié)點構(gòu)成的多邊形的質(zhì)心。錨點周期性地向臨近節(jié)點廣播分組信息,該信息包含了錨點的標(biāo)識和位置。當(dāng)未知結(jié)點接收到來自不同錨點的分組信息數(shù)量超過某一門限或在一定接收時間之后,就可以計算這些錨點所組成的多邊形的質(zhì)心,作為確定出自身位置。由于質(zhì)心算法完全基于網(wǎng)絡(luò)連通性,無需錨點和未知結(jié)點之間的協(xié)作和交互式通信協(xié)調(diào),因而易于實現(xiàn)。三、實驗內(nèi)容及步驟該程序在Matlab環(huán)境下完成無線傳感器中的質(zhì)心算法的實現(xiàn)。在長為100米的正方形區(qū)域,信標(biāo)節(jié)點(錨點)為90個,隨機生成50個網(wǎng)絡(luò)節(jié)點。節(jié)點的通信距離為30米。需完成:分別畫出不同

3、通信半徑,不同未知節(jié)點數(shù)目下的誤差圖,并討論得到的結(jié)果所用到的函數(shù):1. M = min(A)返回A最小的元素.如果A是一個向量,然后min(A)返回A的最小元素.如果A是一個矩陣,然后min(A)是一個包含每一列的最小值的行向量。2. randX = rand返回一個單一均勻分布隨機數(shù)在區(qū)間 (0,1)。X = rand(n)返回n-n矩陣的隨機數(shù)字。3. S = sum(A)返回 A 沿其大小不等于 1 的第一個數(shù)組維度的元素的總和。如果A是一個向量,sum(A)可返回元素的總和。如果A是一個矩陣,然后sum(A)返回一個行向量包含每個列的總和。4. inf無窮大此 MATLAB 函數(shù) 返

4、回正無窮大的 IEEE 算術(shù)表示。除以零和溢出等操作會生成無窮值,從而導(dǎo)致結(jié)果因太大而無法表示為傳統(tǒng)的浮點值5. zeros - 創(chuàng)建全零數(shù)組X = zeros返回標(biāo)量0.X = zeros(n) -由-n矩陣的零返回n.6. plot(X,Y)畫出Y隨X變化的2D 曲線。plot(X,Y,o)用o描述(X,Y)這一點。7.n= norm(v)返回的 2-范數(shù)或歐氏范數(shù)的向量v.n = norm (v,p)返回向量范數(shù)定義的sum(abs(v)p)(1/p),這里p是任何正值, Inf或-Inf.8.s = num2str(A)數(shù)值數(shù)組轉(zhuǎn)換為字符數(shù)組輸出,它表示的數(shù)字。輸出格式取決于原始值的大

5、小。num2str是用于標(biāo)簽和標(biāo)題情節(jié)與數(shù)字值。所用到的變量:xy:均勻分布的信標(biāo)節(jié)點位置矩陣n:未知節(jié)點數(shù)量SS: 未知節(jié)點位置矩陣dm:通信半徑cent:質(zhì)心MM:未知節(jié)點估計坐標(biāo)矩陣e:估計位置和實際位置距離矩陣(誤差)四、源程序clearclc%錨節(jié)點節(jié)點設(shè)置for i=1:1:10%1到10,步長是1;畫出錨點,前一個括號是標(biāo)號。 for j=1:1:10 x(j+(i-1)*10)=(i-1)*10; y(j+(i-1)*10)=(j-1)*10; endendfigure%出現(xiàn)圖形界面plot(x,y,k.); %黑點hold on %繼續(xù)畫圖axis(0 100 0 100);

6、xy=x;y;把X,Y的坐標(biāo)付給矩陣XYxy;hold onxm=90;ym=90;n=50; %未知節(jié)點 for i=1:1:n Sx(i)=rand(1,1)*xm;%產(chǎn)生一個一行一列的矩陣;依然是0-1中任意一個值。 Sy(i)=rand(1,1)*ym; plot(Sx(i),Sy(i),r*);% 紅星 xlabel(x軸); ylabel(y軸); hold onenddm=30 ;%通信半徑m=100; 一共100個點;for j=1:1:n%未知節(jié)點循環(huán);每一個未知節(jié)點都與在通訊范圍內(nèi)所有的錨點算一遍距離,放到一個矩陣中,通訊距離以外的點為零。 SS=Sx(j);Sy(j);

7、k=0;%表示通信半徑內(nèi)的信標(biāo)節(jié)點數(shù) for i=1:1:m d=norm(xy(:,i)-SS),2);%2范數(shù)就是求直線距離;不管行,第i列; if d=dm 是否在范圍內(nèi),取出信標(biāo)節(jié)點,放到XX,yy中 xx(j,i)=xy(1,i);第1行第i列;%X坐標(biāo)都給了XX yy(j,i)=xy(2,i); 第2行第i列; k=k+1; else xx(j,i)=0; yy(j,i)=0; end end if k=0%k不等于零 cent(:,j)=sum(xx(j,:);sum(yy(j,:)/k;%第j行的所有列 else cent(:,j)=0; 令第j列的所有元素為零。 end pl

8、ot(cent(1,j),cent(2,j),o) ; hold on plot(cent(1,j) Sx(j),cent(2,j) Sy(j),R-) ;%估計位置和真實位置連接 title(Centroid); hold on MM=cent(1,j);cent(2,j); e(j)=norm(MM-SS),2); %定位誤差end% figure/dm% axis(0 n 0 1)% j=1:1:n% plot(j,e(j) ,-r.)% hold on% title(Centroid)% E=sum(e)/nE=sum(e)/(n*dm);disp(定位誤差=,num2str(E);

9、%將結(jié)果轉(zhuǎn)換成字符串輸出實驗二 DV-hop算法一、 實驗?zāi)康恼莆誅V-hop算法的基本思想;學(xué)會利用MATLAB實現(xiàn)DV-hop算法;學(xué)會利用數(shù)學(xué)計算軟件解決實際問題。二、實驗內(nèi)容和原理DV-Hop算法解決了低錨點密度引發(fā)的問題,它根據(jù)距離矢量路由協(xié)議的原理在全網(wǎng)范圍內(nèi)廣播跳數(shù)和位置。已知錨點L1與L2、L3之間的距離和跳數(shù)。L2計算得到校正值(即平均每跳距離)為(40+75)/(2+5)=16.42m。假設(shè)傳感器網(wǎng)絡(luò)中的待定位節(jié)點A從L2獲得校正值,則它與3個錨點之間的距離分別是L1=316.42,L2=216.42,L3=316.42,然后使用多邊測量法確定節(jié)點的位置。圖1 DV hop

10、 算法示意圖三、實驗內(nèi)容及步驟該程序在Matlab環(huán)境下完成無線傳感器中的DV-Hop算法的實現(xiàn)。在長為100米的正方形區(qū)域,隨機生成100個網(wǎng)絡(luò)節(jié)點,其中信標(biāo)節(jié)點(錨點)為8個,未知坐標(biāo)節(jié)點為92個。節(jié)點的通信距離為50米??伤愠鲎疃搪方?jīng)算法計算節(jié)點間跳數(shù)、每個信標(biāo)節(jié)點的校正值并可用用跳數(shù)估計距離。(1000-1000, 300個節(jié)點,60個信標(biāo)節(jié)點)所用到的函數(shù):參見上節(jié):質(zhì)心算法;需完成:1) 運行程序,生成隨機分布的節(jié)點;2) 更正程序中的錯誤,求每個信標(biāo)節(jié)點的校正值;3) 繼續(xù)運行程序,利用跳數(shù)估計待求節(jié)點的距離。四、源程序% DV-Hop算法 % BorderLength-正方形區(qū)

11、域的邊長,單位:m% NodeAmount-網(wǎng)絡(luò)節(jié)點的個數(shù)% BeaconAmount-信標(biāo)節(jié)點數(shù)% Sxy-用于存儲節(jié)點的序號,橫坐標(biāo),縱坐標(biāo)的矩陣%Beacon-信標(biāo)節(jié)點坐標(biāo)矩陣;BeaconAmount*BeaconAmount%UN-未知節(jié)點坐標(biāo)矩陣;2*UNAmount% Distance-未知節(jié)點到信標(biāo)節(jié)點距離矩陣;2*BeaconAmount%h-節(jié)點間初始跳數(shù)矩陣%X-節(jié)點估計坐標(biāo)初始矩陣,X=x,y% R-節(jié)點的通信距離,一般為10-100mclear,close all;BorderLength=100;NodeAmount=100;BeaconAmount=8;UNAmo

12、unt=NodeAmount-BeaconAmount;R=50;% D=zeros(NodeAmount,NodeAmount);%未知節(jié)電到信標(biāo)節(jié)點距離初始矩陣;BeaconAmount行NodeAmount列h=zeros(NodeAmount,NodeAmount);%初始跳數(shù)為0;NodeAmount行NodeAmount列X=zeros(2,UNAmount);%節(jié)點估計坐標(biāo)初始矩陣%在正方形區(qū)域內(nèi)產(chǎn)生均勻分布的隨機拓?fù)銫=BorderLength.*rand(2,NodeAmount);%帶邏輯號的節(jié)點坐標(biāo)Sxy=1:NodeAmount;C;%將1-NodeAmount與C上下

13、合到一起,產(chǎn)生一個總矩陣。Beacon=Sxy(2,1:BeaconAmount);Sxy(3,1:BeaconAmount);%信標(biāo)節(jié)點坐標(biāo)UN=Sxy(2,(BeaconAmount+1):NodeAmount);Sxy(3,(BeaconAmount+1):NodeAmount);%未知節(jié)點坐標(biāo)%畫出節(jié)點分布圖plot(Sxy(2,1:BeaconAmount),Sxy(3,1:BeaconAmount),r*,Sxy(2,(BeaconAmount+1):NodeAmount),Sxy(3,(BeaconAmount+1):NodeAmount),k.)xlim(0,BorderLen

14、gth);ylim(0,BorderLength);title(* 紅色信標(biāo)節(jié)點 . 黑色未知節(jié)點)%初始化節(jié)點間距離、跳數(shù)矩陣for i=1:NodeAmount for j=1:NodeAmount Dall(i,j)=(Sxy(2,i)-Sxy(2,j)2+(Sxy(3,i)-Sxy(3,j)2)0.5;%所有節(jié)點間相互距離 if (Dall(i,j)0) h(i,j)=1;%初始跳數(shù)矩陣 elseif i=j h(i,j)=0;%自己到自己的距離 else h(i,j)=inf; end endend%最短路經(jīng)算法計算節(jié)點間跳數(shù)for k=1:NodeAmount for i=1:No

15、deAmount for j=1:NodeAmount if h(i,k)+h(k,j)h(i,j)%min(h(i,j),h(i,k)+h(k,j) h(i,j)=h(i,k)+h(k,j); end end endendh%求每個信標(biāo)節(jié)點的校正值h1=h(1:BeaconAmount,1:BeaconAmount);%從大矩陣中取出信標(biāo)節(jié)點的跳數(shù)D1=Dall(1:BeaconAmount,1:BeaconAmount); %從大矩陣中取出信標(biāo)節(jié)點的距離for i=1:BeaconAmount dhop(i,1)=sum(D1(i,:)/sum(h1(i,:);%每個信標(biāo)節(jié)點的平均每跳距離

16、endD2=Dall(1:BeaconAmount,(BeaconAmount+1):NodeAmount);%新標(biāo)節(jié)點與未知節(jié)點的距離,逗號前面是行的范圍,后面是列的范圍。 for i=1:BeaconAmount for j=1:UNAmount if min(D2(:,j)=D2(i,j) Dhop(1,j)= dhop (i,j);%未知節(jié)點從最近的信標(biāo)獲得校正值 end endendDhop%用跳數(shù)估計距離hop1=h(1:BeaconAmount,(BeaconAmount+1):NodeAmount)%未知節(jié)點到信標(biāo)跳數(shù),BeaconAmount行UNAmount列for i=1

17、:UNAmount hop=Dhop(1,i);%hop為從最近信標(biāo)獲得的校正值 Distance(:,i)=hop*hop1(:,i);%Beacon行UN列;end% %最小二乘法求未知點坐標(biāo) d=Distance; for i=1:2 for j=1:(BeaconAmount-1) a(i,j)=Beacon(i,j)-Beacon(i,BeaconAmount); end end %a為第一個信標(biāo)節(jié)點和最后一個信號節(jié)點的坐標(biāo)差值,保留最后一個信標(biāo)節(jié)點% a A=-2*(a);% d=d1; for m=1:UNAmount for i=1:(BeaconAmount-1) B(i,1

18、)=d(i,m)2-d(BeaconAmount,m)2-Beacon(1,i)2+Beacon(1,BeaconAmount)2-Beacon(2,i)2+Beacon(2,BeaconAmount)2; % 前九個信標(biāo)節(jié)點到未知節(jié)點的距離平方% 最后信標(biāo)節(jié)點到未知節(jié)點的距離平方% 前九個信標(biāo)節(jié)點橫坐標(biāo)平方% 最后信標(biāo)節(jié)點到未知節(jié)點的橫坐標(biāo)平方 % 前九個信標(biāo)節(jié)點縱坐標(biāo)平方% 最后信標(biāo)節(jié)點縱坐標(biāo)平方 end X1=inv(A*A)*A*B; %inv是求逆矩陣 X(1,m)=X1(1,1); X(2,m)=X1(2,1); end %X為估計的未知節(jié)點位置 for i=1:UNAmount error(Z,i)=(X(1,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論