資源簡介
本算法是DV_hop算法的改進(jìn)型,對于不同的信標(biāo)節(jié)點(diǎn)比例情況下,定位誤差的對比;已經(jīng)隨著網(wǎng)絡(luò)節(jié)點(diǎn)密度變化,定位誤差的變化趨勢圖。
針對于 最大使然估計(jì)的方法修改于牛頓迭代的方法,提高定位精度

代碼片段和文件信息
function?[?MSEVARbadnode]?=?DV_hop(AreaSizeNodeCountBeaconPerRangeCom);
%=======================================================
%?function:?DV_hop?算法?
%?Inputs:
%???????AreaSize????????--?節(jié)點(diǎn)布置區(qū)域大小,建議為正方形,單位為?m
%???????NodeCount???????--?節(jié)點(diǎn)的總數(shù)量?=?信標(biāo)節(jié)點(diǎn)?+?未知節(jié)點(diǎn)
%???????BeaconPer???????--?信標(biāo)節(jié)點(diǎn)的密度(以%表示占總節(jié)點(diǎn)數(shù)的比例)
%???????RangeCom????????--?節(jié)點(diǎn)間通信距離,單位為?m,保持和?AreaSize?一致
%?Outputs:
%???????MSE???????????--?某一信標(biāo)節(jié)點(diǎn)密度參數(shù)下,均方誤差?MSE
%???????VAR?????????
%???????badnode???????--?不能定位的點(diǎn)的個(gè)數(shù)
%
%?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???????輸入?yún)?shù)變化的情況下
%=======================================================
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
%?是否利用?已存儲(chǔ)的數(shù)據(jù)進(jìn)行仿真?
Flag_quick?=?0;
if?Flag_quick?==?1
????UNnode?=?load(‘UNnode_new.mat‘);?
????UNnode?=?UNnode.UNnode;
else
????%?生成?topo?無線傳感器網(wǎng)絡(luò)的節(jié)點(diǎn)?分布拓?fù)鋱D?均勻隨機(jī)分布
????[?topo_BEtopo_UN?]?=?topology(AreaSizeNodeCountBeaconPerRangeCom);
????%?設(shè)置信標(biāo)節(jié)點(diǎn)、未知節(jié)點(diǎn)的相關(guān)信息:如跳數(shù)、距離等
????[?BEnode?UNnode?Distance_all]?=?hops_all(?topo_BE?topo_UN?RangeCom);
????
????%?利用線性方程組?進(jìn)行求解
????[?UNnodebadID?]?=?LS(?UNnodetopo_BERangeCom);
end
%?實(shí)際位置和定位位置的誤差?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
%?------------------------------------------
%?定位誤差的?均方值
%?對于不能定位的點(diǎn),不能考慮到誤差中所以將他們的誤差設(shè)置為0即不影響誤差
%???但是?求平均的時(shí)候?注意分母應(yīng)該為?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));
????%?定位誤差的?方差值
????%?這里的方差是有誤差的,因?yàn)橛行゜adnode的error設(shè)置為0,這對MSE沒有影響,
????%?但有VAR,是有影響的,所以參考意義不大
????VAR?=?var(error(3:)?);????
else
????%?若所有的點(diǎn)都不能定位則認(rèn)為,最大誤差為100%*RangeCom
????disp(‘a(chǎn)ll?the?note?can?not?locate...‘);
????MSE?=?alpha?*?RangeCom;
????VAR?=?alpha?*?RangeCom;
end
%?不能定位的節(jié)點(diǎn)數(shù)
badnode?=?length(badID);
%{
%?畫出定位誤差分布圖
figure(2);
plot(error(3:)‘r-‘);
xlabel(‘?未知節(jié)點(diǎn)?個(gè)數(shù)?編號?‘);
ylabel(‘?各個(gè)未知節(jié)點(diǎn)的定位誤差?/m?‘);
hold?on;
title(‘定位誤差‘);
%}
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件???????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仿真
評論
共有 條評論