【matlabfilter例程】二维平面的雷达测角+测距目标跟踪,单个雷达,KF融合雷达和IMU数据。轨迹绘图、误差绘图输出。附代码下载链接

原创代码,拒绝AI生成。未经允许,禁止翻卖

文章目录

程序详解

简介

程序模拟了二维场景下单部测角测距雷达对运动目标的实时跟踪,并基于卡尔曼滤波(KF)实现对目标轨迹的融合估计。

目标按"带加速度"的非匀速模型运动,而滤波器采用匀速运动模型,从而体现模型失配与滤波器补偿能力。雷达位于平面固定坐标处,每一帧输出带噪声的距离与方位角测量,程序将其转化为直角坐标作为观测输入。

对比

除了雷达观测和KF融合结果外,代码还加入了"纯惯导(基于匀速假设的推算)"作为对比,用于展示不同方法在长时间跟踪中的误差发散与抑制能力。

结果输出

输出真实轨迹、雷达量测、纯惯导估计及KF结果,并统计平均误差、RMSE以及滤波相对提升幅度。最后给出多种图形,包括轨迹对比、误差曲线及柱状统计图,便于全面评估单雷达定位方案与卡尔曼滤波在噪声环境中的性能差异。

运行结果

轨迹对比:

误差对比曲线:

结果输出:

MATLAB源代码

部分代码如下:

matlab 复制代码
% 雷达测角测距定位-二维-单一雷达,轨迹用KF
% 作者:matlabfilter
% 2025-11-25/Ver1 - 添加雷达观测和纯惯导对比

clear; close all; clc;
rng(0);
%%  系统参数设置
dt = 0.01;                          % 时间步长 (秒)
N = 400;                           % 仿真步数

%%  目标初始状态
target_position = [100; 200];      % 初始位置 [x; y] (米)
target_velocity = [1; 5];         % 初始速度 [vx; vy] (米/秒)
target_acceleration = [0.5; -0.1]; % 加速度来破坏匀速模型 [ax; ay] (米/秒²)
radar_position = [100; 210];  %雷达坐标 m,可调

%% 测量噪声参数
range_noise_std = 1;      % 距离测量噪声标准差 (m)
angle_noise_std = 0.1;   % 角度测量噪声标准差 (rad)

%% 卡尔曼滤波器
% 状态向量: [x, y, vx, vy]'
% 状态转移矩阵 (匀速模型)
F = [1, 0, dt, 0;
    0, 1, 0, dt;
    0, 0, 1, 0;
    0, 0, 0, 1];

% 观测矩阵 (只观测位置)
H = [1, 0, 0, 0;
    0, 1, 0, 0];

% 过程噪声协方差
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 = diag([1,1].^2);

% 初始状态估计
x_est = [target_position; target_velocity];

% 初始协方差矩阵
P = diag([1, 1, 0.5, 0.5]);

%% 纯惯导解算初始化
% 假设初始状态已知(实际中可能来自首次观测)
inertial_position = target_position;
inertial_velocity = target_velocity;


% 平均位置误差柱状图
figure;
bar_data = [mean_error_radar, mean_error_inertial, mean_error_kf];
b = bar(bar_data);
b.FaceColor = 'flat';
b.CData(1,:) = [0 0 0];       % 黑色
b.CData(2,:) = [1 0 1];       % 洋红色
b.CData(3,:) = [0 0 1];       % 蓝色
set(gca, 'XTickLabel', {'雷达观测', '纯惯导', 'KF估计'});
ylabel('平均位置误差 (米)', 'FontSize', 12);
title('平均位置误差对比', 'FontSize', 14, 'FontWeight', 'bold');
grid on;
for i = 1:length(bar_data)
    text(i, bar_data(i)+max(bar_data)*0.05, sprintf('%.2f m', bar_data(i)), ...
        'HorizontalAlignment', 'center', 'FontSize', 11, 'FontWeight', 'bold');
end

% 位置RMSE柱状图
figure;
rmse_data = [rmse_radar, rmse_inertial, rmse_kf];
b = bar(rmse_data);
b.FaceColor = 'flat';
b.CData(1,:) = [0 0 0];       % 黑色
b.CData(2,:) = [1 0 1];       % 洋红色
b.CData(3,:) = [0 0 1];       % 蓝色
set(gca, 'XTickLabel', {'雷达观测', '纯惯导', 'KF估计'});
ylabel('位置RMSE (米)', 'FontSize', 12);
title('位置RMSE对比', 'FontSize', 14, 'FontWeight', 'bold');
grid on;
for i = 1:length(rmse_data)
    text(i, rmse_data(i)+max(rmse_data)*0.05, sprintf('%.2f m', rmse_data(i)), ...
        'HorizontalAlignment', 'center', 'FontSize', 11, 'FontWeight', 'bold');
end

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

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

相关推荐
Evand J4 分钟前
【MATLAB例程】基于低精度IMU、GNSS的UAV初始航向(三维角度)校准的仿真,包含卡尔曼滤波、惯导解算与校正
开发语言·matlab·gnss·imu·卡尔曼滤波
简简单单做算法1 小时前
基于CNN卷积神经网络的数据预测matlab仿真,对比BP,RBF,LSTM
matlab·cnn·卷积神经网络·lstm·数据预测
yu85939586 小时前
时延估计的互相关算法(MATLAB实现)
开发语言·算法·matlab
强盛机器学习~6 小时前
考虑异常天气和太阳辐射下基于强化学习的无人机三维路径规划
算法·matlab·无人机·强化学习·路径规划·无人机路径规划·q-learning
Matlab光学6 小时前
Matlab 复现:分数阶&整数阶OAM 变换
算法·matlab·拓扑学
机器学习之心7 小时前
ICEEMDAN-CMBE特征提取+Bayes-TCN-LSTM故障诊断+SHAP可解释分析!MATLAB完整代码
matlab·lstm
强盛机器学习~7 小时前
2026年SCI一区新算法-贝塞尔曲线优化算法(BCO)-公式原理详解与性能测评 Matlab代码免费获取
算法·matlab·进化计算·智能优化算法·元启发式算法·群体智能算法
源代码杀手7 小时前
利用MATLAB®和Simulink®资源的可再生能源
开发语言·matlab
yugi9878388 小时前
基于最大信息熵的粒子群优化算法图像分割(MATLAB实现)
开发语言·算法·matlab
沅_Yuan8 小时前
基于四开关Buck-Boost的Simulink仿真模型(免费下载)【MATLAB】
matlab·仿真·电力电子·simulink·四开关buck-boost