【雷达跟踪与滤波|MATLAB例程】平面上的雷达跟踪与UKF(无迹卡尔曼滤波),估计目标轨迹,输出真值、误差曲线、误差特性等

单雷达、极坐标量测(距离 + 方位角)的二维目标跟踪器
原创代码,非AI生成,请勿翻卖

文章目录

程序详解

本程序构建了一个基于单站雷达的二维移动目标跟踪系统。雷达能够同时测得目标的距离和方位角,目标本身按给定加速度在平面中运动。由于雷达量测属于典型的非线性极坐标观测,本程序采用**无迹卡尔曼滤波(UKF)**作为主滤波器,对目标的位置与速度进行实时估计。

主要功能与流程

  1. 目标真实运动模拟

    目标在平面中具有位置、速度和加速度,程序根据给定的时间步长对目标进行逐步更新,得到真实轨迹。

  2. 雷达量测生成

    程序根据目标与雷达的相对位置计算真实距离和方位角,并加入随机噪声模拟实际雷达观测。

    量测被转换成 XY 坐标仅用于绘图展示。

  3. 惯性推演(对比项)

    同时生成一个基于"匀速积分"的惯性预测轨迹,用于和 UKF 的估计结果做对比,展示单纯推演的误差积累情况。

  4. UKF 预测与更新

    • 使用当前的状态协方差生成多个 sigma 点;
    • 通过状态模型预测未来状态;
    • 通过雷达测量模型预测量测;
    • 计算预测值与实际量测之间的差异;
    • 更新目标位置与速度。
      由于方位角具有周期性,程序特别处理了角度的归一化问题,确保滤波过程稳定。
  5. 误差计算与性能分析

    程序对以下三条轨迹进行误差评估:

    • 雷达量测(经转换为 XY 后)
    • 纯惯导推演
    • UKF 估计
      计算平均误差、RMSE,并给出柱状图和误差曲线,直观比较三者的性能差异。

整体特点

  • 适用于单站雷达对机动目标的二维定位与跟踪;
  • 使用 UKF 应对非线性极坐标量测;
  • 加入角度归一化处理,提高滤波稳定性;
  • 提供真实轨迹、雷达观测、惯导推演、UKF 结果的可视化;
  • 自动输出各方法的定位精度对比,便于性能评估。

运行结果

轨迹对比:

误差曲线:

误差柱状图对比:

命令行输出的结果:

MATLAB源代码

部分代码如下:

matlab 复制代码
% 雷达测角测距定位-二维-单一雷达,轨迹用UKF,观测为距离和角度
% 作者:matlabfilter
% 2025-12-07/Ver1
clear; close all; clc;
rng(0);

%% 参数设置
dt = 0.01;
N = 400;

target_position = [100; 200];
target_velocity = [2; 5];
target_acceleration = [0.5; -0.1];
radar_position = [120; 223];

range_noise_std = 0.2; %雷达测距误差
angle_noise_std = 0.1; %雷达测角误差

%% 滤波状态模型
F = [1 0 dt 0;
     0 1 0  dt;
     0 0 1  0;
     0 0 0  1];

q = 0.1;
Q = q * [dt^4/4 0       dt^3/2 0;
         0       dt^4/4 0       dt^3/2;
         dt^3/2  0       dt^2   0;
         0       dt^3/2  0       dt^2];

% 测量噪声(r, theta)
R = diag([range_noise_std^2, angle_noise_std^2]);

% 初始状态估计
x_est = [target_position; target_velocity];
P = diag([3 3 0.5 0.5]);

%% UKF 参数设置
n = 4;  % 状态维度
alpha = 1e-3;  % 控制sigma点分布
beta = 2;      % 用于高斯分布 (beta=2为最优)
kappa = 0;     % 次要参数
lambda = alpha^2 * (n + kappa) - n;

% 权重计算
Wm = zeros(2*n+1, 1);
Wc = zeros(2*n+1, 1);
Wm(1) = lambda / (n + lambda);
Wc(1) = lambda / (n + lambda) + (1 - alpha^2 + beta);
for i = 2:2*n+1
    Wm(i) = 1 / (2*(n + lambda));
    Wc(i) = 1 / (2*(n + lambda));
end

%% 纯惯导
inertial_position = target_position;
inertial_velocity = target_velocity;

%% 数据存储
true_positions = zeros(N, 2);
true_velocities = zeros(N, 2);
measurements_xy = zeros(N, 2);  % 仅用于绘图
estimated_positions = zeros(N, 2);
estimated_velocities = zeros(N, 2);
inertial_positions = zeros(N, 2);
inertial_velocities = zeros(N, 2);

fprintf('开始 UKF 雷达跟踪仿真...\n');

完整代码如下:
https://download.csdn.net/download/callmeup/92441419

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

相关推荐
listhi5201 天前
基于MATLAB的LTE系统仿真实现
开发语言·matlab
崇山峻岭之间1 天前
Matlab学习记录16
开发语言·学习·matlab
wuk9981 天前
基于MATLAB/Simulink实现交流异步电动机矢量控制的仿真
开发语言·matlab
88号技师1 天前
2026年1月一区SCI-波动光学优化算法Wave Optics Optimizer-附Matlab免费代码
开发语言·算法·数学建模·matlab·优化算法
guygg882 天前
基于MATLAB的64QAM单载波通信系统仿真实现
开发语言·matlab
wuk9982 天前
基于直方图优化的图像去雾MATLAB实现
opencv·计算机视觉·matlab
yugi9878382 天前
基于Takens嵌入定理和多种优化算法的混沌序列相空间重构MATLAB实现
算法·matlab·重构
随风飘摇的土木狗2 天前
【MATLAB第121期】基于MATLAB的sobol、lhs等17种方法数据抽样插件(含UI界面)
matlab·插件·采样·lhs·数据抽样
Dargon2882 天前
Simulink的SIL软件在环测试
开发语言·matlab·simulink·mbd软件开发
机器学习之心2 天前
MATLAB基于BP神经网络-多模态多目标优化的喷墨打印纳米银导线工艺参数优化
神经网络·matlab·工艺参数优化