资源简介
质心定位算法的MATLAB仿真,用于无线传感器网络的定位实验。
代码片段和文件信息
% function [Accuracy]=dingwei(BeaconAmount)
BorderLength=100;%正方形区域的边长
UNAmount=60;
BeaconAmount=20;
NodeAmount=UNAmount+BeaconAmount;%网络节点个数
R=50;%节点的通信距离
%D=zeros(NodeAmountNodeAmount);%未知节电到信标节点距离初始矩阵;BeaconAmount行NodeAmount列
%X=zeros(2UNAmount);%节点估计坐标初始矩
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~在正方形区域内产生均匀分布的随机拓扑
RandStream.setDefaultStream(RandStream(‘mt19937ar‘‘Seed‘sum(100*clock)))
C=BorderLength.*rand(2NodeAmount);
C
pause
D=C.‘
pause
%figure(1);
%plot(D(:1)D(:2)‘ko‘)
%pause
%带逻辑号的节点坐标
Sxy=[[1:NodeAmount];C];
Sxy
pause
Beacon=[Sxy(21:BeaconAmount);Sxy(31:BeaconAmount)];%信标节点坐标
B=Beacon.‘
figure(1);
plot(B(:1)B(:2)‘ro‘)
hold on;
pause
UN=[Sxy(2(BeaconAmount+1):NodeAmount);Sxy(3(BeaconAmount+1):NodeAmount)];%未知节点坐标
U=UN.‘
plot(U(:1)U(:2)‘ko‘)
pause
sume=0;
for i=1:1:UNAmount
m=0;
sumx=0; %x的累积值
sumy=0; %y的累积值
for j=1:1:BeaconAmount %n为信标节点个数
if sqrt(abs(UN(1i)-Beacon(1j))^2+abs(UN(2i)-Beacon(2j))^2)<=R %x2、y2为网络节点坐标,S.xd、S.yd为目标坐标
m=m+1;
sumx=sumx+Beacon(1j);
sumy=sumy+Beacon(2j);
end
end
if m==0
X(1i)=0;
X(2i)=0;
end
T.xd(i)=sumx./m;
X(1i)= T.xd(i); %x的坐标平均值
T.yd(i)=sumy./m;
X(2i)=T.yd(i); %y的坐标平均值
error(1i)=sqrt(abs(UN(1i)-X(1i))^2+abs(UN(2i)-X(2i))^2);
sume=sume+error(1i);
end
figure;
plot(error‘-o‘)
pause
Accuracy=sume/(UNAmount*R)
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1666 2018-07-11 11:22 ZXDW.m
----------- --------- ---------- ----- ----
1666 1
- 上一篇:蚁群算法求解旅行商最优路径问题
- 下一篇:基于DTW语音识别matlab代码
评论
共有 条评论