【MATLAB例程】二维平面下的CV和CA模型,组成IMM的仿真,滤波使用粒子滤波PF,适用于非线性目标跟踪、定位等

C V CV CV和 C A CA CA双模型,二维,基于粒子滤波的 I M M IMM IMM(交互式多模型)
原创代码,包运行成功,可联系我获取讲解和一对一定制,请勿翻卖

文章目录

代码介绍

算法简介

本程序为IMM-PF(交互多模型粒子滤波) 。其核心思想是不再依赖单一运动模型,而是同时引入**匀速(CV)匀加速(CA)**两种模型,对目标运动进行并行建模与估计。

在每个时刻,算法根据观测数据自动评估两种模型的可信度,并进行加权融合,从而实现对不同运动状态的自适应切换。

核心特点

  • 多模型协同:同时跟踪多种运动模式
  • 自适应切换:根据数据自动调整模型权重
  • 粒子滤波驱动:适用于非线性、非高斯场景
  • 统一融合输出:保证轨迹平滑且稳定

效果总结

相比单一模型方法,该算法在运动状态发生变化(如加速、减速)时表现更加稳定,整体跟踪精度更高,是一种兼顾灵活性与鲁棒性的目标跟踪方案。

运行结果

运行代码后,即可得到下面的结果:

运动轨迹示意图:

各轴估计的误差曲线:

各轴RMSE:

各模型概率曲线:

与实际仿真的运动模型更替相匹配:

命令行截图:

MATLAB源代码

部分代码如下:

matlab 复制代码
% CV和CA模型组成的IMM,PF,二维
% 2026-03-29/Ver1

clear; clc; close all;
rng(0); % 固定随机种子
%% 建模与初始化
N  = 600; % 仿真时间步
T  = 1;   % 采样间隔
x0 = [100;1;0;100;1;0]; % 初始状态 [x位置, x速度, x加速度, y位置, y速度, y加速度]
xA = [];  % 真实状态存储

%% 粒子滤波参数
Np = 5000;          % 粒子数量
resample_thresh = 0.9; % 重采样阈值(有效粒子数 < Np*此值时重采样)

%% 模型定义
% CV 匀速运动模型(4维状态:位置+速度)
Q1 = 4 * diag([1,1]);
fCV = @(x, w) [x(1) + T*x(2) + T^2/2*w(1);
               x(2) +           T*w(1);
               x(3) + T*x(4) + T^2/2*w(2);
               x(4) +           T*w(2)];

% CA 匀加速运动模型(6维状态:位置+速度+加速度)
Q2 = 4 * diag([1,1]);
fCA = @(x, w) [x(1) + T*x(2) + T^2/2*x(3) + T^3/6*w(1);
               x(2) + T*x(3)              + T^2/2*w(1);
               x(3)                       + T*w(1);
               x(4) + T*x(5) + T^2/2*x(6) + T^3/6*w(2);
               x(5) + T*x(6)              + T^2/2*w(2);
               x(6)                       + T*w(2)];

%% 生成真实轨迹
x = x0;
for k = 1:150  % 匀速直线段
    w = chol(Q1,'lower') * randn(2,1);
    x_cv = fCV(x([1,2,4,5]), w);  % 使用CV模型
    x([1,2,4,5]) = x_cv;
    x([3,6]) = 0;  % 加速度为0
    xA = [xA, x];
end
for k = 1:120  % 匀加速段(设置恒定加速度)
    if k == 1
        x(3) = 0.1;   % x方向加速度 0.5 m/s²
        x(6) = 0.2;   % y方向加速度 0.3 m/s²
    end
    w = chol(Q2,'lower') * randn(2,1);
    x = fCA(x, w);
    xA = [xA, x];
end
for k = 1:N-270  % 匀速直线段
    w = chol(Q1,'lower') * randn(2,1);
    x_cv = fCV(x([1,2,4,5]), w);
    x([1,2,4,5]) = x_cv;
    x([3,6]) = 0;  % 加速度回到0
    xA = [xA, x];
end

%% 观测参数
H_cv = [1,0,0,0; 0,0,1,0];         % CV模型观测矩阵(仅观测位置)
H_ca = [1,0,0,0,0,0; 0,0,0,1,0,0]; % CA模型观测矩阵(仅观测位置)
R = 10 * diag([1,1]);
t = 1:N;

%% 蒙特卡罗

代码下载链接:
https://download.csdn.net/download/callmeup/92769614

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

相关推荐
Evand J2 小时前
【MATLAB例程】基于低精度IMU、GNSS的UAV初始航向(三维角度)校准的仿真,包含卡尔曼滤波、惯导解算与校正
开发语言·matlab·gnss·imu·卡尔曼滤波
简简单单做算法2 小时前
基于CNN卷积神经网络的数据预测matlab仿真,对比BP,RBF,LSTM
matlab·cnn·卷积神经网络·lstm·数据预测
清空mega3 小时前
动手学深度学习——多尺度锚框
人工智能·深度学习·目标跟踪
yu85939588 小时前
时延估计的互相关算法(MATLAB实现)
开发语言·算法·matlab
前端摸鱼匠8 小时前
YOLOv11 在零售领域实战:利用公开的商品检测数据集 (如 SKU110K 的子集),训练一个 YOLOv11 模型,用于识别货架上的各种商品
人工智能·yolo·目标检测·ai·目标跟踪·视觉检测·零售
强盛机器学习~8 小时前
考虑异常天气和太阳辐射下基于强化学习的无人机三维路径规划
算法·matlab·无人机·强化学习·路径规划·无人机路径规划·q-learning
Matlab光学8 小时前
Matlab 复现:分数阶&整数阶OAM 变换
算法·matlab·拓扑学
机器学习之心8 小时前
ICEEMDAN-CMBE特征提取+Bayes-TCN-LSTM故障诊断+SHAP可解释分析!MATLAB完整代码
matlab·lstm
强盛机器学习~9 小时前
2026年SCI一区新算法-贝塞尔曲线优化算法(BCO)-公式原理详解与性能测评 Matlab代码免费获取
算法·matlab·进化计算·智能优化算法·元启发式算法·群体智能算法
源代码杀手9 小时前
利用MATLAB®和Simulink®资源的可再生能源
开发语言·matlab