在这里插入图片描述

针对二维平面上的多目标、多基站时的TOA定位,编写下面的MATLAB代码,只有一个m文件,主程序和函数都在,方便学习与修改。

另有三维的,在专栏中:https://blog.csdn.net/callmeup/article/details/150651470?spm=1011.2415.3001.5331

程序简介

功能简介

例程模拟了在二维空间中对多个目标进行定位的过程,其核心是利用 TOA(Time of Arrival) 技术。它通过计算目标信号到达多个已知位置的锚点(基站)的时间,来推算出目标的位置。

这个程序具备以下主要功能:

  • 灵活的参数设置:可以轻松调整锚点(基站)的数量和需要定位的目标数量。
    本文所述的程序里面可以随意调节锚点数量和目标数量的,这里以10锚点、5目标为例,更改数量的方法如下:

在这里插入图片描述

  • 模拟真实场景:程序会生成随机的锚点和目标位置,并为计算出的信号传播时间添加微小的随机噪声,以模拟真实的测量误差。
  • 核心定位算法:使用 最小二乘法 求解线性方程组来解算目标位置。这种方法非常适合当锚点数量大于或等于3个时的情况。
  • 结果可视化:通过图表,可以直观地看到锚点、目标的真实位置和算法解算出的位置,以及它们之间的误差。
  • 性能评估:程序会输出每个目标的详细坐标和定位误差,还会生成一个误差条形图,方便对整体性能有清晰的认识。

代码主要组成部分

  1. 参数设置区:定义了锚点数量、目标数量、信号速度和时间误差等关键变量。
  2. 主程序区:
    • 生成位置:随机生成锚点和目标的坐标。
    • 计算 T O A TOA TOA:根据真实距离和添加的误差计算出“测量”到的传播时间。
    • 调用定位函数:循环调用 position 函数,对每个目标进行独立的定位解算。
  3. 绘图区:负责生成所有可视化图表,包括位置散点图和误差条形图。
  4. 定位函数:这是一个独立的函数 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

如需帮助,或有导航、定位滤波相关的代码定制需求,请点击下方卡片联系作者

更多推荐