首页 > 其他分享 >MATLAB代码|TOA/TDOA测距定位|二维|任意个锚节点

MATLAB代码|TOA/TDOA测距定位|二维|任意个锚节点

时间:2024-07-24 12:24:47浏览次数:18  
标签:baseP TDOA point1 range 坐标 TOA out MATLAB

TOA/TDOA

TOA (Time of Arrival)和TDOA (Time Difference of Arrival)是通过传播时间来确定位置的方法。
换算成的单程信号传输时间 τ \tau τ加上噪声 n o i s e noise noise后,再乘上光速 c c c,即可得到距离 r a n g e range range,如下:
r a n g e = ( τ + n o i s e ) ∗ c range = (\tau+noise)*c range=(τ+noise)∗c
当已知点的坐标确定,已知点与待测点之间的距离也测得以后,可以根据最小二乘法计算出来待测点的位置坐标。

之前发布的相关程序有:

设置过程与运行结果

如下,设置待求点坐标、锚节点数量、测距误差:

point1 = [0.5,0.5]; %待求点坐标真值
n = 8; %定义锚节点数量
range_err = 0.1; %测距误差

绘制锚点、待测点真值、求出来的值的二维图像:
请添加图片描述
图中,共8个红色小圆圈,它们是已知的锚点,也就是定位使用的基站,数量符合前面设置的“num = 8;”。同理,蓝色圆圈是待测点的真值,是前面输入的值,红色“*”号是实际解算出来的值,和蓝点比较接近,它们俩离得越近说明定位效果越好。

程序结构

结构如下,由主程序注释、绘图、输出、定位函数组成:
在这里插入图片描述

命令行窗口也能显示出来准确的坐标:
在这里插入图片描述

程序源码

测试代码部分

% TOA/TDOA测距定位,二维任意(>3)个锚节点
% author:Evand
% 2024-7-22/Ver1
clear;clc;close all;
rng(0);
%% 主程序
point1 = [0.5,0.5]; %待求点坐标真值
n = 8; %定义锚节点数量
range_err = 0.1; %测距误差
baseP = [sin(1:n);cos(1:n)]';
R_calcu = sqrt(diag((point1-baseP)*(point1'-baseP')))+range_err*randn; %含噪声的距离
[p_out] = position(R_calcu,baseP);
%% 绘图
figure;
plot(point1(1),point1(2),'o');
hold on
plot(p_out(1),p_out(2),'*');
scatter(baseP(:,1),baseP(:,2),'or');
legend('待定位点(真实值)','待定位点位置解算(输出值)','锚点(已知点)');
%% output
fprintf('输入的坐标为(%f,%f)\n',point1(1),point1(2));
fprintf('输出的坐标为(%f,%f)\n',p_out(1),p_out(2));

函数代码部分

上面测试代码里面,positon是我写的函数:

function [p_out] = position(R_calcu,baseP)
[baseX_,baseY_] = deal(baseP(:,1),baseP(:,2));
len = size(baseP,1);
% 完整代码下载链接:https://gf.bilibili.com/item/detail/1105868012
end

标签:baseP,TDOA,point1,range,坐标,TOA,out,MATLAB
From: https://blog.csdn.net/callmeup/article/details/140619960

相关文章

  • 如何使用 Python 和 Numpy 重现 Matlab 文件读取以解码 .dat 文件?
    我有一个Matlab脚本,可以读取编码的.dat文件,对其进行解码并保存。我试图使用numpy将其转换为Python。我发现对于同一个文件,我得到不同的输出结果(python数字没有意义)。该代码最初作为从串行端口读取的脚本的一部分运行,因此是数据的结构。我首先认为位移是问题所在,因为......
  • 基于CNN卷积神经网络的MQAM调制识别matlab仿真
    1.算法运行效果图预览(完整程序运行后无水印)  2.算法运行软件版本matlab2022a 3.部分核心程序(完整版代码包含中文注释,训练库) digitDatasetPath=['Image_train\'];imds=imageDatastore(digitDatasetPath,'IncludeSubfolders',true,'LabelSource','fold......
  • JCR一区级 | Matlab实现GA-Transformer-LSTM多变量回归预测
    JCR一区级|Matlab实现GA-Transformer-LSTM多变量回归预测目录JCR一区级|Matlab实现GA-Transformer-LSTM多变量回归预测效果一览基本介绍程序设计参考资料效果一览基本介绍1.【JCR一区级】Matlab实现GA-Transformer-LSTM多变量回归预测,遗传优化算法(GA)优......
  • Aquila优化算法(基本原理+matlab源代码)—— 基于Aquila Optimizer原始论文分析
    Matlab源代码位于:AquilaOptimizer:Ameta-heuristicoptimizationalgorithm-FileExchange-MATLABCentral(mathworks.cn)1Aquila优化算法AO是一种基于种群优化方法,受启发于Aquila捕获猎物的方式。Aquila捕获猎物的方式主要有四种:(1)有垂直弯曲的高空翱翔(2)用短......
  • XGBoost、RF随机森林算法MATLAB实现
    %加载并预处理训练数据opts1=detectImportOptions('附件一AE.xlsx','PreserveVariableNames',true);train_data=readtable('附件一AE.xlsx',opts1);train_data.Time=datetime(train_data.time,'InputFormat','yyyy-MM-ddHH:mm:s......
  • 基于单片机和MATLAB的FIR滤波器设计
    摘要:随着社会经济的进步和科学技术的不断发展,数字滤波器的优势使其广泛应用于不同领域。但是,数字滤波器设计过程中的复杂性对其发展造成了制约。因此,笔者实现了基于单片机和MATLAB的滤波器的全新设计方法,并对设计后的滤波器进行仿真和实现验证。结果表明,此种方法所设计的......
  • Aquila优化算法(基本原理+matlab源代码)—— 基于Aquila Optimizer原始论文分析
    Matlab源代码位于:AquilaOptimizer:Ameta-heuristicoptimizationalgorithm-FileExchange-MATLABCentral(mathworks.cn)1Aquila优化算法AO是一种基于种群优化方法,受启发于Aquila捕获猎物的方式。Aquila捕获猎物的方式主要有四种:(1)有垂直弯曲的高空翱翔(2)用短滑翔攻......
  • 史上SCI学术论文最全的30种图表类型代码实现(matlab版)
    1、柱状图(BarGraph)matlab代码%数据group_values=[10,15,7,25];class_values=[20,5,30,10];%X轴标签labels={'1','2','3','4'};%创建一个图形figure;%创建第一个子图:组数据subplot(1,2,1);bar(group_values,'FaceC......
  • 基于GA遗传算法的WSN网络节点覆盖优化matlab仿真
    1.程序功能描述      通过遗传优化算法,优化WSN无线传感器网络中的各个节点的坐标位置以及数量,使得整个网络系统已最少数量的节点达到最大的网络覆盖率。仿真最后输出覆盖率收敛曲线,节点数量收敛曲线,GA优化前后的覆盖率变化情况。 2.测试软件版本以及运行结果展示MATLA......
  • 基于深度学习网络的USB摄像头实时视频采集与手势检测识别matlab仿真
    1.算法运行效果图预览(完整程序运行后无水印) 训练过程如下:   将摄像头对准手势,然后进行识别,识别结果如下:   本课题中,使用的USB摄像头为:   2.算法运行软件版本MATLAB2022a 3.部分核心程序程序中包括MATLAB读取摄像头的配置方法,摄像头配置工具......