【状态估计】粒子滤波器、Σ点滤波器和扩展/线性卡尔曼滤波器研究(Matlab代码实现)

这篇具有很好参考价值的文章主要介绍了【状态估计】粒子滤波器、Σ点滤波器和扩展/线性卡尔曼滤波器研究(Matlab代码实现)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

2.1 扩展卡尔曼滤波

2.2 线性卡尔曼滤波  

2.3 粒子滤波 

2.4 Σ点滤波器 

🎉3 参考文献

🌈4 Matlab代码及详细讲解


💥1 概述

  • 粒子过滤器通常需要大量粒子,这可能需要大量的运行时间。即使是最简单的粒子过滤器也使用 1000 个粒子的情况并不少见,每次测量需要 1000 次模拟。随着状态维度的增长,必要数量的粒子变得巨大。(我们的问题会从1000个粒子中受益匪浅,但要理解具有如此大量粒子的图会更难。
  • 将不确定性表示为一组粒子和权重(离散概率分布)意味着状态的最佳估计通常非常粗糙,因此粒子过滤器对于需要高精度的问题效果不佳。
  • 当需要更好的性能时,粒子滤波器通常必须进行大量定制,以适应每个单独的状态估计问题,这可能需要很长时间,尤其是因为测试需要运行过滤器,而过滤器本身可能需要很长时间。出于同样的原因,很难找到有用的通用粒子过滤器,尽管自举过滤器可以解决简单的问题。

在Σ点滤波器(也称为无迹滤波器)中,我们不用一大堆散射粒子来表示不确定性,而是假设不确定性具有高斯(正态)分布,并且以当前最佳估计值为中心:

【状态估计】粒子滤波器、Σ点滤波器和扩展/线性卡尔曼滤波器研究(Matlab代码实现)

因此,我们可以用协方差矩阵来表示不确定性,就像我们为上面的粒子计算的那样。我们将协方差可视化为围绕状态估计的椭圆,其中椭圆绘制在 3σ 边界处(因此,真实状态大约 99.7% 的时间在这个椭圆内)。绘制 1000 个粒子只是为了进行比较。

当各种不确定度源(先前的不确定度、过程噪声和测量噪声)是单峰且不相关的时,Σ点滤波器是一个强大的选择。一些优点:

  • 在他们的假设中,它们通常比粒子过滤器更准确,因为它们不依赖于随机粒子。
  • 它们比粒子过滤器快得多。粒子过滤器可能需要 1000 个点,而 Σ-point 过滤器可能只需要 9 个左右。
  • 他们的假设适用于许多不同的实际问题,并且设置Σ点滤波器只需要定义传播函数,测量函数,过程噪声协方差和测量噪声协方差,所有这些都是粒子滤波器所必需的。
  • Σ点滤波器有标准形式,因此在书籍或期刊中找到良好的参考相对容易。

不过,我们可以列出一些缺点。

  • 奇怪的问题可能导致Σ点滤波器“分崩离析”。例如,在我们的球问题中,如果时间步长更大,那么在一次或两次反弹中,sigma 点将变得非常“混乱”,并可能导致样本协方差矩阵毫无意义。可能很难避免这种情况,而粒子过滤器不会有这个问题。
  • 虽然它们比粒子滤波器快得多,但它们也比扩展卡尔曼滤波器慢得多,我们稍后会谈到。

📚2 运行结果

2.1 扩展卡尔曼滤波

【状态估计】粒子滤波器、Σ点滤波器和扩展/线性卡尔曼滤波器研究(Matlab代码实现)

 【状态估计】粒子滤波器、Σ点滤波器和扩展/线性卡尔曼滤波器研究(Matlab代码实现)

2.2 线性卡尔曼滤波  

【状态估计】粒子滤波器、Σ点滤波器和扩展/线性卡尔曼滤波器研究(Matlab代码实现)

【状态估计】粒子滤波器、Σ点滤波器和扩展/线性卡尔曼滤波器研究(Matlab代码实现)

 【状态估计】粒子滤波器、Σ点滤波器和扩展/线性卡尔曼滤波器研究(Matlab代码实现)

2.3 粒子滤波 

【状态估计】粒子滤波器、Σ点滤波器和扩展/线性卡尔曼滤波器研究(Matlab代码实现)

 【状态估计】粒子滤波器、Σ点滤波器和扩展/线性卡尔曼滤波器研究(Matlab代码实现)

【状态估计】粒子滤波器、Σ点滤波器和扩展/线性卡尔曼滤波器研究(Matlab代码实现)

2.4 Σ点滤波器 

【状态估计】粒子滤波器、Σ点滤波器和扩展/线性卡尔曼滤波器研究(Matlab代码实现)

 【状态估计】粒子滤波器、Σ点滤波器和扩展/线性卡尔曼滤波器研究(Matlab代码实现)

 【状态估计】粒子滤波器、Σ点滤波器和扩展/线性卡尔曼滤波器研究(Matlab代码实现)

部分代码:

%% Create the true system and show the initial filter state.

% Set the random number generator seed so the results are the same every
% time we run the script. (Comment out this line to see different results
% every time.)
rng(1);

% Initial true state, measurement noise covariance, and measurement
x0 = [0; 3; 1; 0];
R  = 0.5^2 * eye(2);
z0 = x0(1:2) + covdraw(R);

% Initial state estimate and covariance
xh0 = [z0; 1; 0];
P0  = blkdiag(R, 2^2 * eye(2));

% Calculate the whole true trajectory.
[~, x, t] = propagate_ball(0, 10, x0);

% Prepare the figure.
set(clf(figure(1)), 'Color', [1 1 1]);
axis equal;
axis([-1 11 0 5]);
xlabel('x [m]');
ylabel('y [m]');
hold on;

% Draw the 3-sigma boundary for the uncertainty.
ell = ellipse(P0, xh0);
hP  = plot(ell(1,:), ell(2,:), 'Color', 0.75 * [1 1 1]);

% Add particles for comparison only.
X  = bsxfun(@plus, covdraw(P0, 1000), xh0);
hX = plot(X(1,:), X(2,:), '.', 'Color', 0.75 * [1 1 1]);

🎉3 参考文献

部分理论来源于网络,如有侵权请联系删除。

[1]柏庆文. 基于无味卡尔曼滤波的电动汽车动力电池SOC估计[D].吉林大学,2013.

[2]常国宾,许江宁,李安,常路宾.迭代无味卡尔曼滤波的目标跟踪算法[J].西安交通大学学报,2011,45(12):70-74. 文章来源地址https://www.toymoban.com/news/detail-493627.html

🌈4 Matlab代码及详细讲解

到了这里,关于【状态估计】粒子滤波器、Σ点滤波器和扩展/线性卡尔曼滤波器研究(Matlab代码实现)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于自适应扩展卡尔曼滤波器(AEKF)的锂离子电池SOC估计(附MATLAB代码)

    AEKF_SOC_Estimation函数使用二阶RC等效电路模型(ECM)和自适应扩展卡尔曼滤波器(AEKF)估计电池的端电压(Vt)和充电状态(SOC)。该函数将以下内容作为输入:  · 电流(A) · 电压(V) · 温度(℃) 该函数的输出为: ·  估计SOC · 估计电压Vt · 电压Vt误差 加载电池模型参数以及不

    2023年04月23日
    浏览(44)
  • 了解卡尔曼滤波器4--非线性状态估算器(EKF,UKF,PF)

            一般来说,我们希望我们的生活是线性的,就像这条线,这可能表示成功、收入或者幸福。但实际上,生活并不是线性的,它充满了起伏,有时甚至更复杂。         如果您是工程师,您经常会需要处理非线性系统,为了帮助您,我们将讨论非线性状态估算器

    2023年04月20日
    浏览(54)
  • 卡尔曼滤波器-概述及用递归思想解读卡尔曼滤波器 | 卡尔曼滤波器应用举例(附Matlab程序)| 数学基础-数据融合、协方差矩阵、状态空间方程

      卡尔曼滤波器是最优化的(Optimal)、递归的(Recursive)、数字处理的(Data Processing)算法(Algorithm)。卡尔曼滤波器更像是观测器,而不是一般意义上的滤波器,应用广泛,尤其是在导航中,它的广泛应用是因为生活中存在大量的不确定性。   当描述一个系统的不确

    2024年02月06日
    浏览(61)
  • 使用环境中的视觉地标和扩展卡尔曼滤波器定位移动机器人研究(Matlab代码实现)

     💥💥💞💞 欢迎来到本博客 ❤️❤️💥💥 🏆博主优势: 🌞🌞🌞 博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️ 座右铭: 行百里者,半于九十。 📋📋📋 本文目录如下: 🎁🎁🎁 目录 💥1 概述 📚2 运行结果 🎉3 参考文献 🌈4 Matlab代码及文章 本文

    2024年02月10日
    浏览(56)
  • 卡尔曼滤波器简介——α−β−γ滤波器

            现在我们已经准备好了第一个简单的例子。在此示例中,我们估计静态系统的状态。静态系统是在合理的时间段内不会更改其状态的系统。例如,静态系统可以是一座塔,而状态将是它的高度。         在此示例中,我们估计金条的重量。我们有无偏尺度,即

    2024年02月01日
    浏览(122)
  • 卡尔曼滤波器简介——概述

    关于卡尔曼滤波器         大多数现代系统都有许多传感器,可以根据一系列测量来估计隐藏(未知)状态。例如,GPS接收器提供位置和速度估计,其中位置和速度是隐藏状态,卫星信号到达的差分时间是测量值。         跟踪和控制系统的最大挑战之一是在存在不确

    2024年02月01日
    浏览(72)
  • 【图像处理 】卡尔曼滤波器原理

    目录 一、说明 二、它是什么? 2.1 我们可以用卡尔曼滤波器做什么? 2.2 卡尔曼滤波器如何看待您的问题

    2024年02月06日
    浏览(54)
  • 卡尔曼滤波器(目标跟踪一)(上)

    本文主要是针对目标跟踪算法进行一个学习编码,从比较简单的卡尔曼滤波器开始,到后面的deepsort 和最后与yolo算法进行整合,到最后手动实现目标跟踪框架的流程进行。本着,无法造轮子就没有彻底理解的原则进行学习。那么废话不多说开始了。(收藏点赞?VIP:Free,白嫖

    2024年02月08日
    浏览(51)
  • 卡尔曼滤波器的定义,实例和代码实现

    卡尔曼滤波器(Kalman filter)是一种高效的递归滤波器, 能够从一系列包含噪音的测量值中估计动态系统的状态. 因为不需要存储历史状态, 没有复杂计算, 非常适合在资源有限的嵌入式系统中使用. 常用于飞行器的导引, 导航及控制, 机械和金融中的时间序列分析, 轨迹最佳化等. 卡

    2024年03月09日
    浏览(49)
  • 卡尔曼滤波器原理讲解及其matlab实现

    目录 一:卡尔曼滤波器的信号模型[1-2] 二:其他方程及变量介绍 三:卡尔曼滤波器递推公式 四:matlab仿真[3] 参考文献: 引言:在进行一些信号处理的过程中,我们通常会采集到一些数据,但是实际测量到的数据是受到噪声干扰了之后的,故与真实的数据有一些偏差。因此

    2023年04月08日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包