【MATLAB例程】二维平面上,三个雷达对一个目标跟踪,输出观测平均与UKF滤波两种算法的结果对比,附下载链接

二维平面上,三个雷达对一个目标跟踪,输出观测平均与UKF(无迹卡尔曼滤波)两种算法的结果对比,包括轨迹图、误差曲线、误差统计特性等。

文章目录

程序简介

程序实现基于无迹卡尔曼滤波(Unscented Kalman Filter, UKF) 的多雷达二维目标跟踪系统,适用于匀速运动模型(Constant Velocity Model)。系统利用三个空间分布已知的雷达节点对目标进行距离(Range)和方位角(Bearing) 联合测量,并通过非线性滤波实现对目标位置与速度的高精度估计。

主要功能

  • 目标轨迹仿真:根据匀速运动方程与过程噪声生成动态目标的真实轨迹;
  • 多雷达观测模拟:为三部固定雷达生成含噪声的距离与方位角观测;
  • UKF滤波估计:通过Sigma点变换实现非线性状态与观测更新,无需Jacobian矩阵;
  • 数据融合:采用序贯观测更新方式融合多雷达信息,提高估计精度与稳定性;
  • 结果可视化与统计分析:输出轨迹对比、误差曲线、速度估计及协方差变化等图像,并自动计算RMSE及性能提升百分比。

模型与配置

  • 状态向量
    x = [ x , , y , , v x , , v y ] T \mathbf{x} = [x, , y, , v_x, , v_y]^T x=[x,,y,,vx,,vy]T

    其中 ((x, y)) 为二维位置,((v_x, v_y)) 为速度分量。

  • 观测模型 (非线性):
    z = [ r θ ] z = \begin{bmatrix} r \ \theta \end{bmatrix} z=[r θ]

    ( x − x r ) 2 + ( y − y r ) 2 a t a n 2 ( y − y r , , x − x r ) \] \\begin{bmatrix} \\sqrt{(x-x_r)\^2 + (y-y_r)\^2} \\ \\mathrm{atan2}(y-y_r,,x-x_r) \\end{bmatrix} \[(x−xr)2+(y−yr)2 atan2(y−yr,,x−xr)

    其中 ((x_r, y_r)) 为雷达位置。

  • 滤波结构

    1. 生成Sigma点;
    2. 状态预测与过程噪声注入;
    3. 序贯融合多雷达观测;
    4. 状态更新与协方差修正。

结果输出

程序将自动绘制以下结果图:

  • 二维轨迹对比图(真实轨迹、UKF估计、观测均值);
  • 位置误差与速度误差曲线
  • 协方差迹变化图(反映不确定性收敛趋势);
  • 统计对比条形图,展示UKF滤波与直接观测的RMSE对比及性能提升比例。

此外,命令行中输出详细的性能统计,包括:

  • 位置与速度RMSE;
  • 各轴误差;
  • 平均/最大误差;
  • 滤波前后性能改善百分比。

运行结果

轨迹对比图像:

速度与位置误差图像:

非滤波方法无法得到速度,所以速度误差仅有UKF的

误差统计特性:


MATLAB源代码

完整代码如下:

matlab 复制代码
% 3雷达二维目标跟踪滤波系统 - EKF实现,匀速运动模型
% 输入:雷达观测数据(距离、方位角),输出:目标状态估计(位置、速度)
% 作者: matlabfilter
% 2025-11-09/Ver1
clc; clear; close all;
rng(0);
%% === 系统参数配置 ===
config = struct();

% 【可修改】基本参数
config.T = 0.5;                     % 采样周期 (s) - 可修改
config.total_time = 60;             % 总仿真时间 (s) - 可修改
config.num_steps = config.total_time / config.T;

% 【可修改】雷达位置配置 [x, y] (m) - 固定位置,需要时可修改
radar_positions = [
    0,    0;         % 雷达1位置
    2000, 0;        % 雷达2位置
    0,2000];         % 雷达3位置

% 【可修改】测量噪声标准差 - 根据实际雷达精度调整
config.sigma_range = 20;            % 距离测量噪声标准差 (m)
config.sigma_bearing = 0.05;        % 方位角测量噪声标准差 (rad) ≈ 2.86°

% 【可修改】过程噪声标准差 - 影响滤波器的跟踪能力
config.sigma_acc = 2.0;             % 加速度过程噪声标准差 (m/s²)

% 【可修改】仿真参数
config.detection_prob = 0.95;       % 检测概率 - 可调整丢失观测的概率
config.max_range = 15000;           % 雷达最大探测距离 (m)

% 【新增】UKF参数
config.alpha = 1e-3;                % Sigma点分布参数 (通常1e-4到1)
config.beta = 2;                    % 高斯分布最优值为2
config.kappa = 0;                   % 次级缩放参数 (通常为0或3-n)

%% === 初始化UKF滤波器 ===

完整代码:
https://download.csdn.net/download/callmeup/92270414

或:

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

相关推荐
AI小怪兽14 小时前
YOLO11-4K:面向4K全景图像实时小目标检测的高效架构
人工智能·目标检测·计算机视觉·目标跟踪·架构
那雨倾城16 小时前
PiscCode实现用 YOLO 给现实世界加上「NPC 血条 HUD」
图像处理·python·算法·yolo·计算机视觉·目标跟踪
上天夭17 小时前
目标跟踪篇
人工智能·计算机视觉·目标跟踪
fie888918 小时前
基于MATLAB的多幅图像拼接
人工智能·计算机视觉·matlab
Evand J20 小时前
【MATLAB免费例程】多无人机,集群多角度打击目标,时间与角度约束下的协同攻击算法,附下载链接
算法·matlab·无人机
简简单单做算法1 天前
基于WOA鲸鱼优化CNN-BiLSTM网络模型的多输入单输出回归预测算法matlab仿真
matlab·回归预测·cnn-bilstm·woa-cnn-bilstm·鲸鱼优化
cici158741 天前
基于高斯混合模型(GMM)的说话人识别系统MATLAB实现
开发语言·人工智能·matlab
崇山峻岭之间1 天前
Matlab学习记录11
开发语言·学习·matlab
bu_shuo1 天前
GUI_Syre报错问题解决
matlab·synrm·syr-e
gihigo19981 天前
回溯搜索法与梯度下降/牛顿迭代结合的MATLAB优化实现
开发语言·matlab