【WSN定位】基于chan算法实现无源定位附matlab代码

0 阅读1分钟

cover_image

【WSN定位】基于chan算法实现无源定位附matlab代码

天天Matlab 天天Matlab 天天Matlab

2023年02月26日 07:10 福建 __

在小说阅读器中沉浸阅读

1 内容介绍

Chan 算法是 TDOA 定位方法的一个很赞的 trick。但是很多方法一旦从学术的角度去看,就罩上了奇异的光环。TDOA,the time differnces of arrival,到达时间差。Chan 算法1是非递归双曲线方程组解法,具有解析表达式解。其主要的特点为在测量误差服从理想高斯分布时,它的定位精度高、计算量小。该算法的推导的前提是基于测量误差为零均值高斯随机变量,对于实际环境中误差较大的测量值,比如在有非视距误差的环境下,该算法的性能会有显著下降。

读取基站经纬度---获取每个基站测到目标信号的时间--根据速度*时间求其基站与基站到目标的距离差,得到两组方程--使用CHAN算法求解该双曲线方程组--舍弃无效解,得到目标位置,与GPS定位进行比较,使用大地主题公式求其距离误差。

2 仿真代码

% TDOA定位的Chan算法Matlab源码

clc;

clear all;

close all

weizhi=xlsread('4月21日.xlsx','实验四','B1:C3');

shijian=xlsread('4月21日.xlsx','实验四','D1:D150');

gps=xlsread('4月21日.xlsx','实验四','B4:C4');

cc = 3e8;%g光速

length=floor(length(shijian)/3);

x=zeros(1,length);

y=zeros(1,length);

x3=zeros(1,length);

y1=zeros(1,length);

[X(1,1),X(1,2)]= jingwei(weizhi(1,1),weizhi(1,2)); %网关1

[X(2,1),X(2,2)]= jingwei(weizhi(2,1),weizhi(2,2)); %网关2

[X(3,1),X(3,2)]= jingwei(weizhi(3,1),weizhi(3,2)); %网关3

% X(1,1)=weizhi(1,1);X(1,2)=weizhi(1,2); %网关1

% X(2,1)=weizhi(2,1);X(2,2)=weizhi(2,2); %网关1

% X(3,1)=weizhi(3,1);X(3,2)=weizhi(3,2); %网关1

X=X';

for i=1:length

for j= 1:3

K(j)=X(1,j)^2 + X(2,j)^2;

end

%% 方差

m=mean(diff,2);

var=sum((diff(1,:)-m).^2)/100 ;

%% 画图

figure(1)

t=1:100;

plot(t,diff,'bo-');

xlabel('次数');

ylabel('误差大小(m)'); axis([0 100 0 700])

title('实验四')

disp(['平均误差为',num2str(mean(diff,2)),'方差为',num2str(var)]);

figure(2)

plot( weizhi(1,1),weizhi(1,2),'rs','LineWidth',2,...

'MarkerEdgeColor','k',...

'MarkerFaceColor','r',...

'MarkerSize',10);hold on

plot(weizhi(2,1),weizhi(2,2),'rs','LineWidth',2,...

'MarkerEdgeColor','k',...

'MarkerFaceColor','m',...

'MarkerSize',10);hold on

plot(weizhi(3,1),weizhi(3,2),'rs','LineWidth',2,...

'MarkerEdgeColor','k',...

'MarkerFaceColor','g',...

'MarkerSize',10);hold on

plot(gps(1,1),gps(1,2),'yo','LineWidth',2,...

'MarkerEdgeColor','k',...

'MarkerFaceColor','y',...

'MarkerSize',10);hold on

title('实验四')

xlabel('经度');

ylabel('纬度');

for i=1:length

plot(xx(i),yy(i),'bo');hold on

end

axis([108.93 108.95 34.05 34.09]);

legend('基站1','基站2','基站3','目标真实位置','TDOA定位结果');

figure(3);

plot( weizhi(1,1),weizhi(1,2),'rs','LineWidth',2,...

'MarkerEdgeColor','k',...

'MarkerFaceColor','r',...

'MarkerSize',10);hold on

plot(weizhi(2,1),weizhi(2,2),'rs','LineWidth',2,...

'MarkerEdgeColor','k',...

'MarkerFaceColor','m',...

'MarkerSize',10);hold on

plot(weizhi(3,1),weizhi(3,2),'rs','LineWidth',2,...

'MarkerEdgeColor','k',...

'MarkerFaceColor','g',...

'MarkerSize',10);hold on

plot(gps(1,1),gps(1,2),'yo','LineWidth',2,...

'MarkerEdgeColor','k',...

'MarkerFaceColor','y',...

'MarkerSize',10);hold on

legend('基站1','基站2','基站3','目标真实位置');

title('实验四')

xlabel('经度');

ylabel('纬度');

3 运行结果

4 参考文献

[1]沙勇. 基于Matlab的WSN定位算法仿真设计[J]. 齐齐哈尔大学学报:自然科学版, 2017, 33(6):3.

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

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

预览时标签不可点

继续滑动看下一个

轻触阅读原文

天天Matlab

向上滑动看下一个

知道了

微信扫一扫
使用小程序


取消 允许


取消 允许


取消 允许

× 分析

__

跳转二维码

作者头像

微信扫一扫可打开此内容,
使用完整服务

: , , , , , , , , , , , , 。 视频 小程序 赞 ,轻点两下取消赞 在看 ,轻点两下取消在看 分享 留言 收藏 听过