【MATLAB代码介绍】无迹粒子滤波(Unscented Particle Filter),运动目标滤波定位

粒子滤波(Particle filter)matlab实现 粒子滤波是以贝叶斯推理和重要性采样为基本框架的。因此,想要掌握粒子滤波,对于上述两个基本内容必须有一个初步的了解。贝叶斯公式非常perfect,但是在实际问题中,由于变量维数很高,被积函数很难积分,常常会给粒子滤波带来很大的麻烦。为了克服这个问题,它引入了重要性采样。即先设计一个重要性密度,根据重要性密度与实际分布之间的关系,给采样得到的粒子分配权重。再利用时变贝叶斯公式,给出粒子权重的更新公式及 阅读详情

在这里插入图片描述

程序介绍

程序介绍

本程序实现了一个基于**无迹粒子滤波(Unscented Particle Filter, UPF)**的一维目标状态估计示例,用于对直线运动目标的位置进行滤波与精度分析。系统以一维匀速运动为背景,传感器提供带噪位置观测,滤波器利用无迹变换与粒子采样相结合的方式,对目标状态进行递推估计,并与原始观测结果进行对比。

在目标运动建模中,设目标在离散时刻 (k) 的状态为
x k x_k xk​
其状态转移方程可表示为
x k = f ( x k − 1 ) + w k − 1 x_k = f(x_{k-1}) + w_{k-1} xk​=f(xk−1​)+wk−1​
其中, f ( ⋅ ) f(\cdot) f(⋅)为状态转移函数, w k − 1 w_{k-1} wk−1​为过程噪声,满足
w k − 1 ∼ N ( 0 , Q ) w_{k-1} \sim \mathcal{N}(0,Q) wk−1​∼N(0,Q)
程序中目标真实位置按照匀速模型更新,即
x k = x k − 1 + v Δ t x_k = x_{k-1} + v \Delta t xk​=xk−1​+vΔt
其中, v v v为目标速度, Δ t \Delta t Δt为采样周期。

UPF 的核心思想是在粒子滤波框架下引入无迹变换。对于每个粒子,不再简单依靠先验分布进行随机传播,而是先利用当前粒子的均值与协方差构造 Sigma 点,再通过无迹变换获得更优的建议分布,从而提高粒子传播质量。设当前粒子状态维数为 n n n,则第 i i i个 Sigma 点可写为
χ 0 = x \chi_0 = x χ0​=x
χ i = x + n + λ ( P ) ∗ i , i = 1 , … , n \chi_i = x + \sqrt{n+\lambda}\left(\sqrt{P}\right)*i,\quad i=1,\dots,n χi​=x+n+λ ​(P ​)∗i,i=1,…,n
χ ∗ i + n = x − n + λ ( P ) i , i = 1 , … , n \chi*{i+n} = x - \sqrt{n+\lambda}\left(\sqrt{P}\right)_i,\quad i=1,\dots,n χ∗i+n=x−n+λ ​(P ​)i​,i=1,…,n
其中, λ \lambda λ为尺度参数, P P P为当前粒子的协方差矩阵。

Sigma 点经状态方程传播后,可得到预测均值与预测协方差:
x ^ ∗ k − = ∑ ∗ i = 0 2 n w i ( m ) χ i , k − \hat{x}*k^- = \sum*{i=0}^{2n} w_i^{(m)} \chi_{i,k}^- x^∗k−=∑∗i=02nwi(m)​χi,k−​
P k − = ∑ i = 0 2 n w i ( c ) ( χ i , k − − x ^ ∗ k − ) ( χ ∗ i , k − − x ^ k − ) T + Q P_k^- = \sum_{i=0}^{2n} w_i^{(c)}\left(\chi_{i,k}^- - \hat{x}*k^-\right)\left(\chi*{i,k}^- - \hat{x}_k^-\right)^{\mathrm T} + Q Pk−​=i=0∑2n​wi(c)​(χi,k−​−x^∗k−)(χ∗i,k−−x^k−​)T+Q
其中, w i ( m ) ) 和 ( w i ( c ) w_i^{(m)}) 和 (w_i^{(c)} wi(m)​)和(wi(c)​分别为均值权重和协方差权重。程序中通过该预测结果为每个粒子重新构造采样分布,并完成粒子更新。

在获得新粒子后,依据当前观测值计算各粒子的似然权重。
在高斯测量噪声条件下,粒子权重按似然函数更新为
w k ( i ) ∝ exp ⁡ ( − 1 2 y ~ k ( i ) T R − 1 y ~ k ( i ) ) w_k^{(i)} \propto \exp\left(-\frac{1}{2}\tilde{y}_k^{(i)\mathrm T}R^{-1}\tilde{y}_k^{(i)}\right) wk(i)​∝exp(−21​y~​k(i)T​R−1y~​k(i)​)
随后对权重进行归一化。为避免粒子退化,程序进一步采用重采样方法保留高权重粒子,并剔除低权重粒子。

最终,滤波估计值由所有粒子的加权均值或重采样后的样本均值给出。该程序中采用粒子均值作为状态估计

修改建议

  • 增加粒子数量:加大num_particles
    在这里插入图片描述

运行结果

滤波前后误差曲线对比

在这里插入图片描述

估计误差的曲线

在这里插入图片描述

代码结构:
在这里插入图片描述

源代码

部分代码

% 无迹粒子滤波(Unscented Particle Filter)例程
% 一维直线上的滤波,状态量为位置和速度、观测量为位置
%% 初始化
clc; clear; close all;
rng(0);

% 时间步长和总时间
dt = 0.1;          % 时间步长 (秒)
T_total = 200;    % 模拟总时间 (秒)
N = T_total / dt;  % 总时间步数

% 目标初始位置和速度
true_pos = 500;  % 目标初始位置 (x)
true_vel = 1;      % 目标速度向量 (vx)

% 导弹初始状态
est_pos = true_pos + 5;   % 初始估计位置
est_speed = true_vel + 0.1;      % 初始速度向量 (vx, vy, vz)

% UPF参数
alpha = 1e-3;   % 控制Sigma点分布的参数
beta = 2;       % 包含高阶矩信息
kappa = 2;      % 调节协方差矩阵
lambda = 3-1;  % 复合参数
% 数据存储
true_trajectory = zeros(N, 1);
est_trajectory = zeros(N, 1);
distance_est = zeros(N, 1);
distance_z = zeros(N, 1);
z_measure = zeros(N, 1);

% 协方差矩阵初始化
Q = 0.01;  % 过程噪声协方差
R = 1e1;              % 观测噪声协方差

%% 状态转移与测量模型
state_transition = @(x) [x(1)]; % 匀速模型

measurement_function = @(x) x(1); % 直接观测位置

%% 初始化粒子

完整代码:https://blog.youkuaiyun.com/callmeup/article/details/143080337?spm=1011.2415.3001.5331

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

【MATLAB】无迹粒子滤波(Unscented Particle Filter)例程 本代码通过实现无迹粒子滤波,展示了如何在一维状态空间中估计动态系统的状态。通过模拟真实状态和噪声,用户可以观察到滤波器在位置和速度估计上的效果,并通过可视化手段深入理解无迹粒子滤波的工作原理和性能。 阅读详情

相关推荐

【MATLAB代码】基于RRT与人工势场法(RRT+APF)的多无人机二维动态路径规划与避障。订阅专栏后可查看完整代码

本文基于RRT+APF算法实现多无人机动态路径规划与避障仿真,通过MATLAB完整代码可直接运行。对比传统APF方法,该方案在轨迹平滑性、安全净间隙及到达效率上表现更优。支持参数自定义,订阅专栏后可获取源码与定制服务,适用于科研与工程实践。

985工科博士毕业,专攻定位、导航和滤波等算法研究。从业10年,主要使用MATLAB 147

基于粒子滤波的目标跟踪基本算法(Matlab)

function [hist]=FHist(temp,D) % 此函数为提取区域目标色彩直方图 % temp-目标区域 % D-颜色空间位数 % m_wei(i,j)-像素点权值贡献 % hist-色彩直方图分布 E=256/D; hist=zeros(1,D^3); [a,b,c]=size(temp); y(1)=a/2; y(2)=b/2; m_wei=zeros(a,b);%权值矩

八月中午的阳光 1万+

【MATLAB代码,多无人机路径规划6】基于RRT与动态窗口法(RRT+DWA)的多无人机二维动态路径规划与避障。订阅专栏后可查看完整代码

本文基于MATLAB实现四架无人机在二维动态障碍环境中的协同路径规划,采用RRT+DWA算法,支持参数自定义。通过对比RRT+APF与RRT+DWA的避障效果,可视化轨迹、净间隙、速度加速度及航程等,输出任务完成率与碰撞统计。代码可直接运行,订阅专栏后获取完整源码,支持定制与讲解。

985工科博士毕业,专攻定位、导航和滤波等算法研究。从业10年,主要使用MATLAB 508

粒子滤波器的Matlab实现

前言:粒子滤波器相较于卡尔曼滤波器或者UKF无迹卡尔曼滤波器而言,可以表达强非线性的变换且无需假设后验分布为高斯分布,在描述多峰分布时具有非常大的优势。粒子滤波器被广泛的应用于机器人系统中,如著名的Gmapping算法便是在粒子滤波器的基础上实现的,但是当前网络中对粒子滤波器的描述往往浅尝则止或长篇大论,导致学习起来往往是了解大概流程而不懂实际代码实现,无法应用于自己机器人中或困于理论推导。因此本...

木独的博客 5146

【MATLAB代码,无人机避障7】基于RRT*与人工势场法(RRT*+APF)的多无人机二维动态路径规划与避障。订阅专栏后可查看完整代码

本文基于RRT与人工势场法(APF)实现四架无人机在二维动态障碍环境中的协同路径规划与避障。通过RRT优化全局路径,结合APF进行局部避碰,支持参数自定义,提供完整MATLAB代码,可直接运行并生成轨迹、安全净间隙、速度加速度及航程等可视化结果,对比RRT+APF与RRT*+APF性能,适用于科研与教学。

985工科博士毕业,专攻定位、导航和滤波等算法研究。从业10年,主要使用MATLAB 184

【PMSM例程11】永磁同步电机(PMSM)基于UKF的转速与转子位置估计。附下载链接

本程序基于MATLAB构建永磁同步电机(PMSM)仿真模型,采用无迹卡尔曼滤波(UKF)实现电流、转速与电角度的联合估计。通过缩放无迹变换生成Sigma点,避免非线性线性化误差,并针对电角度周期性边界进行特殊处理。仿真验证了在转速变化工况下,UKF对状态变量的高精度估计能力,结果表明其在转速与角度跟踪、电流滤波及新息诊断方面表现优异,具备良好的鲁棒性与实用性,适用于非线性状态估计与电机控制研究。

985工科博士毕业,专攻定位、导航和滤波等算法研究。从业10年,主要使用MATLAB 245

粒子滤波Matlab代码

粒子滤波Matlab代码,很详实。看完秒懂! 本文地址:http://blog.youkuaiyun.com/shanglianlm/article/details/47445909

mingo_敏 1万+

粒子滤波完整仿真matlab代码

粒子滤波全部代码,分步骤详细介绍,代码分成十几个matlab文件,包括采样,粒子更新,重采样等等。

粒子滤波重采样的理解及MATLAB实现

          重采样主要是为了解决经典蒙特卡洛方法中出现的粒子匮乏现象。其主要思想是对粒子和其相应的权值表示的概率密度函数重新进行采样。通过增加权值较大粒子和减少权值较小粒子来实现。重采样虽然可以改善粒子匮乏现象,但也降低了粒子的多样性。因此,重采样过程中一般选取一些准则来判断有效粒子的个数,通过这个个数来判断是否进行重采样。一般的判断准则为:    其中Neff为有效粒子个数,表示粒子权值...

不爱成长的笨蛋 1万+

用粒子滤波器实现的多目标跟踪代码(matlab)

用matlab实现,对多运动员实时跟踪有很好的效果

粒子滤波matlab实现(三套)

主要是一个关于matlab实现粒子滤波的代码,如目标追踪等。

粒子滤波的原理和MATLAB实现

前言:       博主在自主学习粒子滤波的过程中,看了很多文献或博客,不知道是看文献时粗心大意还是悟性太低,看着那么多公式,总是无法把握住粒子滤波的思路,也无法将理论和实践对应起来。比如:理论推导过程中那么多概率公式,概率怎么和系统的状态变量对应上了?状态粒子是怎么一步步采样出来的,为什么程序里面都是直接用状态方程来计算?粒子的权重是怎么来的?经过一段时间的理解,总算理清了它的脉络。同时也

天才樱木 1万+

标准粒子滤波MATLAB代码

给出以个标准的粒子滤波的MATLAB代码实现方案,希望能帮助初学者更好的理解粒子滤波,请多多指教

粒子滤波(Particle filter)算法简介及MATLAB实现

       粒子滤波是以贝叶斯推理(点击打开链接)和重要性采样为基本框架的。因此,想要掌握粒子滤波,对于上述两个基本内容必须有一个初步的了解。重要性采样呢,其实就是根据对粒子的信任程度添加不同的权重,添加权重的规则就是:对于我们信任度高的粒子,给它们添加的权重就相对大一些;否则,就加的权重小一些。根据权重的分布形式,实际上就是它与目标的相似程度。         粒子滤波的结构实际上就是加一层...

Cche的博客 5万+

粒子滤波matlab代码

粒子滤波matlab代码,能够运行。Pf粒子滤波实现的目标跟踪程序,可实现针对非高斯噪声情况下的跟踪

MTK眼中6G物理层与无线协议的进化之路

提议统一波束和小区级的测量、报告和切换框架/流程,进一步减少移动性切换过程中的中断,采用可扩展框架/流程,允许在不同移动性场景中进行部分用户设备配置更新以实现快速切换,支持用户设备发起的移动性(同步/切换)以降低延迟和因信令交换导致的失败,设计移动性RS以实现空闲状态下的节能和连接状态下的无缝用户体验,实现5G/6G间的无缝互操作移动性,为固定无线接入(FWA)提供潜在增强,构建统一的跨层移动性框架以降低复杂度、减少中断和失败。为适应多样化的流量类型,需要灵活的帧结构和高层时间对齐。

asd199086的博客 1745

MATLAB 不等间隔一阶低通:按真实时间更新,并把长缺口重置说清楚

不等间隔数据若直接套固定平滑系数,会改变实际时间常数。本文从左端零阶保持模型推导一阶低通更新,分别计算衰减与输入系数,显式标记长缺口重置,并给出解析解对照、时序负例、边界测试和完整 MATLAB 代码。

hxy_programmer的博客 299

PDDL入门

PDDL的组成部分 Objects:对象,世界上我们感兴趣的事物。 Predicates:谓词,我们感兴趣的事实(例如对象的属性),可以为真,也可以为假。 An initial state:初始化状态,我们开始所处的世界状态,即开始时为真的事物。 Goal specification:目标状态,我们想要结束的世界的状态,即我们希望最终成为真实的事情。 Actions/Operators:动作/操作,改变世界状态的方式,即发生的事情改变了事实。 PDDL语法 PDDL 文件的扩展名通常是.pddl 要

工控小白2021的博客 4820

MATLAB 优秀开源项目与工具箱推荐:涵盖通信、图像处理、脑机接口等九大领域

本文梳理了无线通信、图像处理、脑机接口等九个领域的代表性MATLAB开源项目,涵盖信道建模(QuaDRiGa)、智能表面仿真(SimRIS)、视觉特征提取(VLFeat)、三维网格生成(Iso2Mesh)及脑电信号分析(EEGLAB、BCILAB)等关键技术。通过解析其数学模型与源码实现,揭示科研工具如何将理论算法转化为可复现的工程计算流程,为科研人员提供高效、可扩展的开发参考。

weixin_47502228的博客 337

密码学新手必看:三大顶级会议论文下载与阅读指南(附完整资源链接)

本文为密码学新手提供了系统性的三大顶级会议(Crypto、Eurocrypt、Asiacrypt)论文学习指南。内容涵盖如何高效获取最新论文资源、结构化精读论文的方法论,以及将理论转化为代码实践的路径,旨在帮助初学者快速构建密码学知识体系并应用于研究。

weixin_29214691的博客 317

NPU性能榨取手把手教程:RK3588上YOLOv5s多线程部署与120FPS极限探索

RK3588 YOLOv5s多线程部署优化指南 本教程深入解析RK3588芯片上YOLOv5s模型的高性能多线程部署方案。RK3588作为瑞芯微旗舰AIoT芯片,内置三核NPU(6TOPS算力)和硬件加速器(RGA/VPU),为AI推理提供强大支持。通过线程池技术,我们将视频处理的读取、推理、后处理等环节解耦并行,显著提升系统吞吐量。教程详细介绍了从PyTorch到RKNN格式的模型转换流程、INT8量化方法,以及基于RKNN C++ SDK的YOLOv5推理核心实现,帮助开发者最大化发挥RK3588的AI

LXY_LOVE36的博客 973

【PMSM例程分享】(10)永磁同步电机(PMSM)基于EKF的转速与转子位置观测与控制

本文基于MATLAB实现永磁同步电机(PMSM)的EKF状态观测与无传感器控制仿真,构建四维扩展卡尔曼滤波器在线估计转速与电角度,并在0.3秒切换至EKF反馈实现闭环控制。对比编码器反馈与EKF观测反馈的转速响应、跟踪误差及接管过程动态性能,验证了EKF在无位置传感器控制中的有效性。程序包含完整模型、控制器、滤波器与可视化功能,参数可调,适用于算法研究与教学实践。订阅专栏可获取源代码及定制支持。

985工科博士毕业,专攻定位、导航和滤波等算法研究。从业10年,主要使用MATLAB 196

ardupilot开发 --- MavLink 篇

ardupilot开发 --- MavLink 篇

记录老板的每次pua,分享领导每天的毒鸡汤... 4248
上一篇: 【MATLAB例程】扩展卡尔曼滤波估计pmsm的位置,输出估计位置速度的曲线对比、误差对比
下一篇: 【MATLAB代码】基于接收信号强度(RSS)的UHF RFID三维室内定位,含信号建模、噪声仿真、位置解算、性能评估。订阅专栏后可查看完整代码
MATLAB卡尔曼
MATLAB卡尔曼 毕昇杯全国一等奖获得者 毕昇杯全国一等奖获得者 领域专家: 数据科学与机器学习技术领域 领域专家: 数据科学与机器学习技术领域
博客等级 码龄14年 7622粉丝 1415原创
评论
成就一亿技术人!
拼手气红包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、付费专栏及课程。

余额充值