❶ 利用matlab分別對三邊測量定位演算法和改進演算法進行模擬和驗證 急求源程序
%%清空環境變數
clc
clear
loaddata
%%數據累加作為網路輸入
[n,m]=size(X);
fori=1:n
y(i,1)=sum(X(1:i,1));
y(i,2)=sum(X(1:i,2));
y(i,3)=sum(X(1:i,3));
y(i,4)=sum(X(1:i,4));
y(i,5)=sum(X(1:i,5));
y(i,6)=sum(X(1:i,6));
end
%%網路參數初始化
a=0.3+rand(1)/4;
b1=0.3+rand(1)/4;
b2=0.3+rand(1)/4;
b3=0.3+rand(1)/4;
b4=0.3+rand(1)/4;
b5=0.3+rand(1)/4;
%%學習速率初始化
u1=0.0015;
u2=0.0015;
u3=0.0015;
u4=0.0015;
u5=0.0015;
%%權值閥值初始化
t=1;
w11=a;
w21=-y(1,1);
w22=2*b1/a;
w23=2*b2/a;
w24=2*b3/a;
w25=2*b4/a;
w26=2*b5/a;
w31=1+exp(-a*t);
w32=1+exp(-a*t);
w33=1+exp(-a*t);
w34=1+exp(-a*t);
w35=1+exp(-a*t);
w36=1+exp(-a*t);
theta=(1+exp(-a*t))*(b1*y(1,2)/a+b2*y(1,3)/a+b3*y(1,4)/a+b4*y(1,5)/a+b5*y(1,6)/a-y(1,1));
kk=1;
%%循環迭代
forj=1:10
%循環迭代
E(j)=0;
fori=1:30
%%網路輸出計算
t=i;
LB_b=1/(1+exp(-w11*t));%LB層輸出
LC_c1=LB_b*w21;%LC層輸出
LC_c2=y(i,2)*LB_b*w22;%LC層輸出
LC_c3=y(i,3)*LB_b*w23;%LC層輸出
LC_c4=y(i,4)*LB_b*w24;%LC層輸出
LC_c5=y(i,5)*LB_b*w25;%LC層輸出
LC_c6=y(i,6)*LB_b*w26;%LC層輸出
LD_d=w31*LC_c1+w32*LC_c2+w33*LC_c3+w34*LC_c4+w35*LC_c5+w36*LC_c6;%LD層輸出
theta=(1+exp(-w11*t))*(w22*y(i,2)/2+w23*y(i,3)/2+w24*y(i,4)/2+w25*y(i,5)/2+w26*y(i,6)/2-y(1,1));%閥值
ym=LD_d-theta;%網路輸出值
yc(i)=ym;
%%權值修正
error=ym-y(i,1);%計算誤差
E(j)=E(j)+abs(error);%誤差求和
error1=error*(1+exp(-w11*t));%計算誤差
error2=error*(1+exp(-w11*t));%計算誤差
error3=error*(1+exp(-w11*t));
error4=error*(1+exp(-w11*t));
error5=error*(1+exp(-w11*t));
error6=error*(1+exp(-w11*t));
error7=(1/(1+exp(-w11*t)))*(1-1/(1+exp(-w11*t)))*(w21*error1+w22*error2+w23*error3+w24*error4+w25*error5+w26*error6);
%修改權值
w22=w22-u1*error2*LB_b;
w23=w23-u2*error3*LB_b;
w24=w24-u3*error4*LB_b;
w25=w25-u4*error5*LB_b;
w26=w26-u5*error6*LB_b;
w11=w11+a*t*error7;
end
end
%畫誤差隨進化次數變化趨勢
figure(1)
plot(E)
title('訓練誤差','fontsize',12);
xlabel('進化次數','fontsize',12);
ylabel('誤差','fontsize',12);
%print-dtiff-r60028-3
%根據訓出的灰色神經網路進行預測
fori=31:36
t=i;
LB_b=1/(1+exp(-w11*t));%LB層輸出
LC_c1=LB_b*w21;%LC層輸出
LC_c2=y(i,2)*LB_b*w22;%LC層輸出
LC_c3=y(i,3)*LB_b*w23;%LC層輸出
LC_c4=y(i,4)*LB_b*w24;%LC層輸出
LC_c5=y(i,5)*LB_b*w25;
LC_c6=y(i,6)*LB_b*w26;
LD_d=w31*LC_c1+w32*LC_c2+w33*LC_c3+w34*LC_c4+w35*LC_c5+w36*LC_c6;%LD層輸出
theta=(1+exp(-w11*t))*(w22*y(i,2)/2+w23*y(i,3)/2+w24*y(i,4)/2+w25*y(i,5)/2+w26*y(i,6)/2-y(1,1));%閥值
ym=LD_d-theta;%網路輸出值
yc(i)=ym;
end
yc=yc*100000;
y(:,1)=y(:,1)*10000;
%計算預測的每月需求量
forj=36:-1:2
ys(j)=(yc(j)-yc(j-1))/10;
end
figure(2)
plot(ys(31:36),'-*');
holdon
plot(X(31:36,1)*10000,'r:o');
❷ matlab相關問題
% 假設AM MC AC等都是已知的
AMC = acos((AM^2 + MC^2 - AC^2)/(2*AM*MC))
% 算出來的是弧度, 如果你想轉化為度數的話,執行下面一句
AMC = AMC * 180/pi;
❸ 三邊定位演算法的精度怎麼評價
n為路徑損耗指數,與周圍的環境有關;XΣ是標准差為Σ的正態隨機變數;d0是參考距離,在室內環境中通常取1 m;PL(d0)為參考位置的信號強度。
假設有n個AP,m個參考標簽,則AP點接收到的待定標簽的強度量P=(AP1,AP2,…,APn),採集到的第t個參考標簽的強度矢量為St=(St1,St2,…,Stn)
❹ 在無線感測器網路中,如何根據接收信號的強度來判斷發送者的距離有具體的計算公式么
基於RSSI的定位
RSSI測量,一般利用信號傳播的經驗模型與理論模型。
對於經驗模型,在實際定位前,先選取若干測試點,記錄在這些點各基站收到的信號強度,建立各個點上的位置和信號強度關系的離線資料庫(x,y,ss1,ss2,ss3)。在實際定位時,根據測得的信號強度(ss1′,ss2′,ss3′)和資料庫中記錄的信號強度進行比較,信號強度均方差最小的那個點的坐標作為節點的坐標。
對於理論模型,常採用無線電傳播路徑損耗模型進行分析。常用的傳播路徑損耗模型有:自由空間傳播模型、對數距離路徑損耗模型、哈它模型、對數一常態分布模型等。自由空間無線電傳播路徑損耗模型為:
式中,d為距信源的距離,單位為km;f為頻率,單位為MHz;k為路徑衰減因子。其他的模型模擬現實環境,但與現實環境還是有一定的差距。比如對數一常態分布模型,其路徑損耗的計算公式為:
式中,Xσ是平均值為O的高斯分布隨機變數,其標准差范圍為4~10;k的范圍在2~5之間。取d=1,代入式(1)可得,LOSS,即PL(d0)的值。此時各未知節點接收錨節點信號時的信號強度為:
RSSI=發射功率+天線增益一路徑損耗(PL(d))
2.2 基於RSSI的三角形質心定位演算法的數學模型
不論哪種模型,計算出的接收信號強度總與實際情況下有誤差,因為實際環境的復雜性,換算出的錨節點到未知節點的距離d總是大於實際兩節點間的距離。如圖1所示,錨節點A,B,C,未知節點D,根據RSSI模型計算出的節點A和D的距離為rA;節點B和D的距離為rB;節點C和D的距離為rC。分別以A,B,C為圓心;rA,rB,rC為半徑畫圓,可得交疊區域。這里的三角形質心定位演算法的基本思想是:計算三圓交疊區域的3個特徵點的坐標,以這三個點為三角形的頂點,未知點即為三角形質心,如圖2所示,特徵點為E,F,G,特徵點E點的計算方法為:
同理,可計算出F,G,此時未知點的坐標為由模擬得,在圖2中,實際點為D;三角形質心演算法出的估計點為M;三邊測量法算出的估計點為N。可知,三角形質心演算法的准確度更高。
3 基於RSSI的三角形質心演算法過程
3.1 步驟
(1)錨節點周期性向周圍廣播信息,信息中包括自身節點ID及坐標。普通節點收到該信息後,對同一錨節點的RSSI取均值。
(2)當普通節點收集到一定數量的錨節點信息時,不再接收新信息。普通節點根據RSSI從強到弱對錨節點排序,並建立RSSI值與節點到錨節點距離的映射。建立3個集合。
錨節點集合:
(3)選取RSSI值大的前幾個錨節點進行自身定位計算。
在B_set:中優先選擇RSSI值大的信標節點組合成下面的錨節點集合,這是提高定位精度的關鍵。
對錨節點集合,依次根據(3)式算出3個交點的坐標,最後由質心演算法,得出未知節點坐標。
(4)對求出的未知節點坐標集合取平均,得未知節點坐標。
3.2 誤差定義
定義定位誤差為ER,假設得到的未知節點的坐標為(xm,ym),其真實位置為(x,y),則定位誤差ER為:
4 仿 真
利用Matlab模擬工具模擬三角形質心演算法,考察該演算法的性能。假設在100 m×100 m的正方形區域內,36個錨節點均勻分布,未知節點70個,分別用三邊測量法和三角形質心定位演算法進行模擬,模擬結果如圖3所示。由圖3可知,三角形質心演算法比三邊測量法,定位精度更高,當測距誤差變大時,用三角形質心演算法得出的平均定位誤差比用三邊測量法得出的小得多。
5 結 語
在此提出了將RSSI方法和三角形質心定位演算法相結合的方法,通過模擬實驗,將該演算法和三邊測量演算法相比較,證明了該演算法的優越性。下一步將研究在錨節點數量不同時的平均定位誤差。
❺ 請問有無線感測器網I加權質心演算法matlab代碼嗎
[capture-of-moving.rar] - 本文詳細介紹了在視頻圖像的基礎上用!"#$ & 』(( )*+ 實現運動目標形心捕獲的具體程序"從而可以實現運動 目標的位置檢測 程序運用改進的形心演算法計算目標圖形 的中心坐標"並使用了計時器函數實時顯示坐標變化值
[codebook.rar] - 實現了基於碼書的運動檢測,並有與其他的檢測演算法做對比,例如MOG,Bayes,三幀差分等。
[xin.rar] - 無線感測器網路加權質心自定位演算法中加權質心演算法模擬
[qq1_2.rar] - 3種定位演算法(多邊:3 邊及4邊 最小二乘 質心)的主程序
[802.11opnet.rar] - 802.11opnet,802.11在OPNET中的模擬代碼
[rssic.rar] - 無線感測器網路的加權質心演算法,用matlab編程的,需要的可以參考
[Simulation1.rar] - 本程序先使用RSSI中對數常態模型來測距離,然後用三邊測量法來計算未知節點的坐標。
[RSSIxin.rar] - 基於RSSI測距的無線感測器網路改進質心定位演算法
[xinsuanfa2.rar] - 無線感測器網路中質心演算法,並有錨節點比例和誤差分析
[myDVHOP.rar] - 一種基於RSSI的DV-HOP加權演算法,該演算法基於節點接收信標節點位置元組時的信號強度(RSSI)對鄰居節點間跳數進行加權處理,將節點間的跳數與距離相關聯,模擬試驗結果證明該加權演算法可大大提高定位精度。