1 简介

无线定位技术是近年来十分热门的研究课题,它的基本原理是通过测量移动台和各固定位置节点之间的传播信号的特征参数(如到达角、传播时间或时间差、电波场强等)来估算出移动台的几何位置。无线传感器网络(WSN)由检测网络内大量微型传感器节点组成,它在实现运动目标的跟踪定位方面具有不可比拟的优势。无线传感器网络内应用基于到达时间差(TDOA)的定位方法对移动物体的定位,是应现代军事和民用的需求而发展起来的一门新兴技术。 目前,国内外很多学者专注于无线传感器网络定位算法研究,涌现出了许多高质量的理论成果。无线定位算法在无线传感器网络移动物体定位的具体应用中具有广阔的应用前景。 本文实现基于chan算法和克美拉罗界算法实现近场和远场无线传感器定位,并对两种算法误差进行对比。

【WSN定位】基于chan算法和克美拉罗界算法实现无线传感器定位及误差对比附matlab代码_方差

【WSN定位】基于chan算法和克美拉罗界算法实现无线传感器定位及误差对比附matlab代码_方差_02

【WSN定位】基于chan算法和克美拉罗界算法实现无线传感器定位及误差对比附matlab代码_算法研究_03

2 部分代码


          
          
clc;
clear all
close all
BSN = 4;%基站数量
%目标位置
MSP(1,1) =250*rand(1);
MSP(1,2) = 250*rand(1);
% 算法开始:
X=500;
Y=500;
BS = [0, X, 0,X
0, 0, Y,Y]; % 参考基站坐标
%chan算法
T = 0:0.5:20;%噪声
va = (-20:2:20)';
jishu=1;
for jishu=1:21
Noise= 10^(va(jishu)/10); % Variance of TDOA & FDOA
[EMSCI11,EMSCI12] = ChanAlgorithm(BSN, MSP,BS, Noise);
[EMSCI21,EMSCI22] = ChanAlgorithm_jin(BSN, MSP,BS, Noise);
chan_wucha3(jishu)= CRLB1(BSN,MSP,BS, Noise);
EMSC11(1, 1) = EMSCI11(1);
EMSC11(1, 2) = EMSCI11(2);
EMSC12(1, 1) = EMSCI12(1);
EMSC12(1, 2) = EMSCI12(2);
EMSC11(1, 1) = EMSCI21(1);
EMSC21(1, 2) = EMSCI21(2);
EMSC22(1, 1) = EMSCI22(1);
EMSC22(1, 2) = EMSCI22(2);
chan_wucha11(jishu)=sqrt((MSP(1) - EMSC11(1,1))^2 + (MSP(2) - EMSC11(1,2))^2);
chan_wucha12(jishu)=sqrt((MSP(1) - EMSC12(1,1))^2 + (MSP(2) - EMSC12(1,2))^2);
chan_wucha21(jishu)=sqrt((MSP(1) - EMSC21(1,1))^2 + (MSP(2) - EMSC21(1,2))^2);
chan_wucha22(jishu)=sqrt((MSP(1) - EMSC22(1,1))^2 + (MSP(2) - EMSC22(1,2))^2);
jishu=jishu+1;
end
disp(['远场chan算法一步定位误差=',num2str(chan_wucha11)])
disp(['远场chan算法一步定位误差=',num2str(chan_wucha12)])
disp(['近场chan算法一步定位误差=',num2str(chan_wucha21)])
disp(['近场chan算法一步定位误差=',num2str(chan_wucha22)])
disp(['克美拉罗界误差=',num2str(chan_wucha3)])
figure(1)%画出基站位置
plot(BS(1,1),BS(2,1),'rs','LineWidth',2,...
'MarkerEdgeColor','k',...
'MarkerFaceColor','r',...
'MarkerSize',20);hold on
plot(BS(1,2),BS(2,2),'rs','LineWidth',2,...
'MarkerEdgeColor','k',...
'MarkerFaceColor','r',...
'MarkerSize',20);
plot(BS(1,3),BS(2,3),'rs','LineWidth',2,...
'MarkerEdgeColor','k',...
'MarkerFaceColor','r',...
'MarkerSize',20);
plot(BS(1,4),BS(2,4),'rs','LineWidth',2,...
'MarkerEdgeColor','k',...
'MarkerFaceColor','r',...
'MarkerSize',20);
grid on
axis ([-10 1000 -10 1000]);
plot(MSP(1),MSP(2),'rp','MarkerSize',10);
plot(EMSC11(1, 1),EMSC11(1, 2),'co','MarkerSize',10);
plot(EMSC12(1, 1),EMSC12(1, 2),'m+','MarkerSize',10);
% plot(EMSC3(1, 1),EMSC3(1, 2),'ks','MarkerSize',10);
title('远场TDOA定位')
legend('基站1','基站2','基站3','基站4','目标真实位置','CHAN算法第一步','CHAN算法第二步')
figure(2)%画出基站位置
plot(BS(1,1),BS(2,1),'rs','LineWidth',2,...
'MarkerEdgeColor','k',...
'MarkerFaceColor','r',...
'MarkerSize',20);hold on
plot(BS(1,2),BS(2,2),'rs','LineWidth',2,...
'MarkerEdgeColor','k',...
'MarkerFaceColor','r',...
'MarkerSize',20);
plot(BS(1,3),BS(2,3),'rs','LineWidth',2,...
'MarkerEdgeColor','k',...
'MarkerFaceColor','r',...
'MarkerSize',20);
plot(BS(1,4),BS(2,4),'rs','LineWidth',2,...
'MarkerEdgeColor','k',...
'MarkerFaceColor','r',...
'MarkerSize',20);
grid on
axis ([-10 1000 -10 1000]);
plot(MSP(1),MSP(2),'rp','MarkerSize',10);
plot(EMSC21(1, 1),EMSC21(1, 2),'co','MarkerSize',10);
plot(EMSC22(1, 1),EMSC22(1, 2),'m+','MarkerSize',10);
% plot(EMSC3(1, 1),EMSC3(1, 2),'ks','MarkerSize',10);
title('近场-TDOA定位')
legend('基站1','基站2','基站3','基站4','目标真实位置','CHAN算法第一步','CHAN算法第二步')
figure(3)
semilogy(va,chan_wucha11,'rs-');hold on
semilogy(va,chan_wucha12,'bo-');hold on
semilogy(va,chan_wucha3,'m*-');hold on
legend('CHAN算法第一步','CHAN算法第二步','克美拉罗界')
xlabel('10log(\sigma_d^2(m^2))');
ylabel('RMSE')
title('远场-误差随噪声方差曲线图')
figure(4)
semilogy(va,chan_wucha21,'rs-');hold on
semilogy(va,chan_wucha22,'bo-');hold on
semilogy(va,chan_wucha3,'m*-');hold on
legend('CHAN算法第一步','CHAN算法第二步','克美拉罗界')
xlabel('10log(\sigma_d^2(m^2))');
ylabel('RMSE')
title('近场-误差随噪声方差曲线图')
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.
  • 72.
  • 73.
  • 74.
  • 75.
  • 76.
  • 77.
  • 78.
  • 79.
  • 80.
  • 81.
  • 82.
  • 83.
  • 84.
  • 85.
  • 86.
  • 87.
  • 88.
  • 89.
  • 90.
  • 91.
  • 92.
  • 93.
  • 94.
  • 95.
  • 96.
  • 97.
  • 98.
  • 99.
  • 100.
  • 101.
  • 102.
  • 103.
  • 104.
  • 105.
  • 106.

3 仿真结果

【WSN定位】基于chan算法和克美拉罗界算法实现无线传感器定位及误差对比附matlab代码_算法研究_04

【WSN定位】基于chan算法和克美拉罗界算法实现无线传感器定位及误差对比附matlab代码_方差_05

【WSN定位】基于chan算法和克美拉罗界算法实现无线传感器定位及误差对比附matlab代码_算法研究_06

【WSN定位】基于chan算法和克美拉罗界算法实现无线传感器定位及误差对比附matlab代码_参考文献_07

4 参考文献

[1]康婷. 无线传感器网络节点定位算法研究[D]. 东北师范大学.

[2]敖伟, 张扬. 基于Chan算法的无源雷达定位精度分析[J]. 电脑知识与技术:学术版, 2009, 5(4):3.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

【WSN定位】基于chan算法和克美拉罗界算法实现无线传感器定位及误差对比附matlab代码_算法研究_08