【MATLAB例程】二维平面上的多目标TOA定位,目标和TOA基站的数量、位置可自行设置。附代码下载链接
·

针对二维平面上的多目标、多基站时的TOA定位,编写下面的MATLAB代码,只有一个m文件,主程序和函数都在,方便学习与修改。
另有三维的,在专栏中:https://blog.csdn.net/callmeup/article/details/150651470?spm=1011.2415.3001.5331
程序简介
功能简介
例程模拟了在二维空间中对多个目标进行定位的过程,其核心是利用 TOA(Time of Arrival) 技术。它通过计算目标信号到达多个已知位置的锚点(基站)的时间,来推算出目标的位置。
这个程序具备以下主要功能:
- 灵活的参数设置:可以轻松调整锚点(基站)的数量和需要定位的目标数量。
本文所述的程序里面可以随意调节锚点数量和目标数量的,这里以10锚点、5目标为例,更改数量的方法如下:

- 模拟真实场景:程序会生成随机的锚点和目标位置,并为计算出的信号传播时间添加微小的随机噪声,以模拟真实的测量误差。
- 核心定位算法:使用 最小二乘法 求解线性方程组来解算目标位置。这种方法非常适合当锚点数量大于或等于3个时的情况。
- 结果可视化:通过图表,可以直观地看到锚点、目标的真实位置和算法解算出的位置,以及它们之间的误差。
- 性能评估:程序会输出每个目标的详细坐标和定位误差,还会生成一个误差条形图,方便对整体性能有清晰的认识。
代码主要组成部分
- 参数设置区:定义了锚点数量、目标数量、信号速度和时间误差等关键变量。
- 主程序区:
- 生成位置:随机生成锚点和目标的坐标。
- 计算 T O A TOA TOA:根据真实距离和添加的误差计算出“测量”到的传播时间。
- 调用定位函数:循环调用
position函数,对每个目标进行独立的定位解算。
- 绘图区:负责生成所有可视化图表,包括位置散点图和误差条形图。
- 定位函数:这是一个独立的函数
position(R_calcu, baseP),它接受锚点坐标和测量距离,并使用最小二乘法解算出目标位置。该函数是整个定位系统的核心算法所在。
程序结构:

运行结果
定位示意图:

定位误差柱状图:

命令行窗口输出的数据:

MATLAB源代码
部分如下:
% TOA测距定位,二维任意(>3)个锚节点,多个目标(数量可调)
% author:Evand
% 2025-08-23/Ver1
clear;clc;close all;
rng(0); % 设置随机数种子以便结果复现
%% 参数设置
c = 3e8; % 信号传输速度,即光速
n = 10; % 定义锚节点数量<<<<---- 在这里调节基站的数量
range_err = 1e-10; % 时钟与时间计算误差(秒)
num_targets = 5; % <<<<---- 在这里调节目标的数量
%% 主程序
% 生成锚点位置
baseP = [sin(1:n)+0.01*[1:n];cos(1:n)+0.01*[1:n]]';
% 生成多个目标的真实位置 (points_true)
% 这里我们随机生成 num_targets 个在一定范围内的目标
points_true = 1*rand(num_targets, 2);
完整代码:
https://download.csdn.net/download/callmeup/91740880
如需帮助,或有导航、定位滤波相关的代码定制需求,请点击下方卡片联系作者
更多推荐



所有评论(0)