【MATLAB例程】基于Taylor迭代的二维TOA定位解算程序,锚点数量可自由设置。附代码下载链接

在这里插入图片描述

Taylor迭代可以在噪声复杂的情况下,取得良好的定位效果,广泛应用于TDOA的解算过程中,但如果TOA的情况下,噪声呈现非高斯,可是可以使用Taylor的,本文给出其二维平面上的例程。
参考文献:《基于Taylor-Chan算法的改进UWB室内三维定位方法》

简介

Taylor 方法(又称迭代线性化方法)用于求解非线性测距模型的最小二乘解,通过在当前估计点处对测距方程进行一阶泰勒展开,线性化后利用最小二乘(LS)迭代更新位置估计,直到收敛。

  • 适用场景:锚点数目 N ≥ 3 N\ge 3 N3(二维),测量为 TOA(Time of Arrival),噪声满足高斯分布近似。
  • 优点:实现简单,计算量低;收敛速度与初值选取有关。
  • 参考文献:《基于 Taylor–Chan 算法的改进 UWB 室内三维定位方法》。
  1. 初始化

    num_stations = 4;                  % 锚点数
    std_var1 = 1e-11;                  % TOA 时间噪声标准差
    stations_position = 100*rand(num_stations,2);  
    c = 3e8;                           % 光速
    position = 5*ones(1,2)+5*randn(1,2); % 待定位真值
    
    • 随机生成 4 个锚点位置;
    • 随机生成目标真实坐标;
    • 通过 Δ t = ∥ x − s i ∥ / c + ε i \Delta t = \|\mathbf{x}-\mathbf{s}_i\|/c + \varepsilon_i Δt=xsi∥/c+εi 构造有噪 TOA 测量。
  2. TOA 测量建模

    delta   = ones(N,1)*position - stations_position;
    r_ideal = sqrt(sum(delta.^2,2));
    delta_t = r_ideal/c + std_var1*randn(size(r_ideal));
    r       = delta_t * c;
    
    • 计算理想距离 r i ideal = ∥ x − s i ∥ r_i^\text{ideal} = \|\mathbf{x}-\mathbf{s}_i\| riideal=xsi
    • 加入测时误差 ε i ∼ N ( 0 , σ t 2 ) \varepsilon_i\sim\mathcal{N}(0,\sigma_t^2) εiN(0,σt2),得到带噪测距 r i r_i ri
  3. 迭代线性化(Taylor 展开)

    • 初值选取:取所有锚点坐标平均值

      x ( 0 ) = 1 N ∑ i = 1 N s i . \mathbf{x}^{(0)} = \frac{1}{N}\sum_{i=1}^N\mathbf{s}_i. x(0)=N1i=1Nsi.

    • k k k 次迭代

      1. 计算残差向量

        B i = ∥ x ( k ) − s i ∥ − r i , i = 1 , … , N . B_i = \|\mathbf{x}^{(k)}-\mathbf{s}_i\| - r_i, \quad i=1,\dots,N. Bi=x(k)siri,i=1,,N.

      2. 构造雅可比矩阵

        A i , : = [ x ( k ) − s i , x ∥ x ( k ) − s i ∥ ,    y ( k ) − s i , y ∥ x ( k ) − s i ∥ ] . A_{i,:} = \left[\frac{x^{(k)}-s_{i,x}}{\|\mathbf{x}^{(k)}-\mathbf{s}_i\|},\; \frac{y^{(k)}-s_{i,y}}{\|\mathbf{x}^{(k)}-\mathbf{s}_i\|}\right]. Ai,:=[x(k)six(k)si,x,x(k)siy(k)si,y].

      3. 线性最小二乘更新

        Δ x = ( A T A ) − 1 A T   B , x ( k + 1 ) = x ( k ) + Δ x . \Delta\mathbf{x} = (A^T A)^{-1} A^T \, \mathbf{B}, \qquad \mathbf{x}^{(k+1)} = \mathbf{x}^{(k)} + \Delta\mathbf{x}. Δx=(ATA)1ATB,x(k+1)=x(k)+Δx.

      4. 判断收敛: ∥ Δ x ∥ < ϵ \|\Delta\mathbf{x}\|<\epsilon ∥Δx<ϵ 或达到最大迭代次数。

  4. 结果可视化与输出

    • 绘制锚点、真实位置与迭代后估计位置;
    • 画出迭代误差随迭代次数的曲线;
    • 在命令行打印最终估计值及误差。

更多细节,见程序中的注释,具有丰富的中文注释

运行结果

4个锚点的示例

定位示意图:
在这里插入图片描述
定位结果:
在这里插入图片描述

迭代时的误差曲线:
在这里插入图片描述

40个锚点的示例

在这里插入图片描述

matlab源代码

部分代码如下:

% Taylor方法解算TOA,二维目标、N个锚点
% 参考文献:《基于Taylor-Chan算法的改进UWB室内三维定位方法》
% 作者:matlabfilter
% 2025-07-12/Ver1
%% 初始化
clc;clear;close all;
rng(0);
% 定义参数和待测点位置
num_stations = 4; % 基站数量(锚点数量)
std_var1 = 1e-11; %TOA时间误差(标准差)
% 固定基站位置
stations_position = 100*rand(num_stations,2);
c = 3e8;
% 生成待定位点坐标
position = 5*ones(1,2)+5*randn(1,2);
%% TOA 建模

%% 迭代过程
% 基站均值作为初值

%% 绘图

%% 坐标输出

修改基站数量的代码:
在这里插入图片描述
完整代码见对应的付费专栏:https://blog.youkuaiyun.com/callmeup/article/details/149293309?spm=1011.2415.3001.5331

或单个代码的下载链接:https://download.youkuaiyun.com/download/callmeup/91359667

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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MATLAB卡尔曼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值