資源簡介
本算法是DV_hop算法的改進型,對于不同的信標節點比例情況下,定位誤差的對比;已經隨著網絡節點密度變化,定位誤差的變化趨勢圖。
針對于 最大使然估計的方法修改于牛頓迭代的方法,提高定位精度

代碼片段和文件信息
function?[?MSEVARbadnode]?=?DV_hop(AreaSizeNodeCountBeaconPerRangeCom);
%=======================================================
%?function:?DV_hop?算法?
%?Inputs:
%???????AreaSize????????--?節點布置區域大小,建議為正方形,單位為?m
%???????NodeCount???????--?節點的總數量?=?信標節點?+?未知節點
%???????BeaconPer???????--?信標節點的密度(以%表示占總節點數的比例)
%???????RangeCom????????--?節點間通信距離,單位為?m,保持和?AreaSize?一致
%?Outputs:
%???????MSE???????????--?某一信標節點密度參數下,均方誤差?MSE
%???????VAR?????????
%???????badnode???????--?不能定位的點的個數
%
%?Notes:?Copyright?by?zxy?in?fuzhou?.?china?.?2011?03?10?
%????????Any?problem?conact?with?zhou2090@126.com
%???????
%
%?revsion?1.0???????2011?03?11?23:11???????初始版本
%?revsion?1.1???????2011?03?11?23:41???????輸入參數變化的情況下
%=======================================================
switch?nargin
????case?0?AreaSize??=?100;
????????????NodeCount?=?100;
????????????BeaconPer?=?10;
????????????RangeCom??=?20;
????case?1?NodeCount?=?100;
????????????BeaconPer?=?10;
????????????RangeCom??=?20;
????case?2?BeaconPer?=?10;
????????????RangeCom??=?20;
????case?3?RangeCom??=?20;??
end
%?是否利用?已存儲的數據進行仿真?
Flag_quick?=?0;
if?Flag_quick?==?1
????UNnode?=?load(‘UNnode_new.mat‘);?
????UNnode?=?UNnode.UNnode;
else
????%?生成?topo?無線傳感器網絡的節點?分布拓撲圖?均勻隨機分布
????[?topo_BEtopo_UN?]?=?topology(AreaSizeNodeCountBeaconPerRangeCom);
????%?設置信標節點、未知節點的相關信息:如跳數、距離等
????[?BEnode?UNnode?Distance_all]?=?hops_all(?topo_BE?topo_UN?RangeCom);
????
????%?利用線性方程組?進行求解
????[?UNnodebadID?]?=?LS(?UNnodetopo_BERangeCom);
end
%?實際位置和定位位置的誤差?ERROR
for?i=1:length(UNnode)
????error(1i)?=?abs(?UNnode(i).X?-?UNnode(i).estX?);
????error(2i)?=?abs(?UNnode(i).Y?-?UNnode(i).estY?);
????error(3i)?=?(error(1i)^2?+?error(2i)^2)^0.5;
end
%?------------------------------------------
%?定位誤差的?均方值
%?對于不能定位的點,不能考慮到誤差中所以將他們的誤差設置為0即不影響誤差
%???但是?求平均的時候?注意分母應該為?N?-?length(badID)
for?j=1:length(badID)?
????error(3badID(j))?=?0;??????
end
alpha?=?1;
if?length(UNnode)?-?length(badID)~=0??
????%?定位誤差的?均方值
????MSEtemp?=?sum(?error(3:)?);?
????MSE?=?MSEtemp/(length(UNnode)?-?length(badID));
????%?定位誤差的?方差值
????%?這里的方差是有誤差的,因為有些badnode的error設置為0,這對MSE沒有影響,
????%?但有VAR,是有影響的,所以參考意義不大
????VAR?=?var(error(3:)?);????
else
????%?若所有的點都不能定位則認為,最大誤差為100%*RangeCom
????disp(‘all?the?note?can?not?locate...‘);
????MSE?=?alpha?*?RangeCom;
????VAR?=?alpha?*?RangeCom;
end
%?不能定位的節點數
badnode?=?length(badID);
%{
%?畫出定位誤差分布圖
figure(2);
plot(error(3:)‘r-‘);
xlabel(‘?未知節點?個數?編號?‘);
ylabel(‘?各個未知節點的定位誤差?/m?‘);
hold?on;
title(‘定位誤差‘);
%}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????2956??2011-03-18?10:51??DV_hop_new\DV_hop.m
?????文件???????6554??2011-03-18?13:22??DV_hop_new\hops_all.m
?????文件???????4080??2011-03-18?10:50??DV_hop_new\LS.m
?????文件???????7270??2011-03-18?13:17??DV_hop_new\MSE.fig
?????文件????????588??2011-03-12?11:28??DV_hop_new\test_verify_dis.m
?????文件???????2921??2011-03-18?10:32??DV_hop_new\topology.m
?????文件???????1541??2011-03-12?11:30??DV_hop_new\verify_distance.m
?????目錄??????????0??2011-03-23?17:24??DV_hop_new
-----------?---------??----------?-----??----
????????????????25910????????????????????8
- 上一篇:卷積碼的程序和論文,有程序和誤碼率的圖
- 下一篇:放大器放大信號protues仿真
評論
共有 條評論