【逐行注释】MATLAB的程序,对比EKF(扩展卡尔曼滤波)和PF(粒子滤波)的滤波效果,附下载链接

news/2024/9/29 21:18:31/

在这里插入图片描述

文章目录

  • 总述
  • 部分源代码
  • 运行结果
  • 扩展性

总述

本代码使用 M A T L A B MATLAB MATLAB实现了扩展卡尔曼滤波( E K F EKF EKF)和粒子滤波( P F PF PF)在状态估计中的对比分析。
主要功能包括:

参数设置:初始化仿真参数,如粒子数量、时间序列、状态转移与观测噪声的协方差矩阵。
真实状态与观测值生成:通过定义状态转移方程,生成系统的真实状态和带噪声的观测值。
粒子滤波初始化:随机生成粒子并计算初始权重,为粒子滤波的后续步骤做准备。
扩展卡尔曼滤波:通过预测、更新步骤,利用测量数据不断修正状态估计。
粒子滤波实现:在每个时间步中,将粒子进行预测、加权、归一化和重采样,得到状态估计。
绘图:绘制真实状态与估计状态的对比图、估计误差图及误差的CDF(累积分布函数)图,方便分析不同滤波方法的性能。
误差统计特性输出:在命令行输出未滤波、EKF和PF的最大误差值,提供对比依据。

部分源代码

如下:

matlab">% EKF+PF效果对比
% author:Evand
% 作者联系VX:matlabfilter(除前期达成一致外,咨询需付费)
% date: 2024-1-10
% Ver2
% 2024-09-23/Ver3:添加逐行注释
clear; %清空工作区
clc; %清空命令行
close all; %关闭所有窗口(主窗口除外)
rng(0); %固定随机种子,让每次运行得到的结果相同 
%% 参数设置
N = 100; %粒子总数(此值仅影响粒子滤波部分)
t = 1:1:1000; %仿真时间设置
Q = 1*diag([1,1,1]); %设置状态转移协方差矩阵
R = 1*diag([1,1,1]); %设置观测噪声协方差矩阵
w_pf=sqrt(Q)*randn(size(Q,1),length(t)); %生成状态转移噪声
v_pf=sqrt(R)*randn(size(R,1),length(t)); %生成观测噪声
P0 = 1*eye(3); %生成状态协方差矩阵

如上,几乎每一行代码都有中文注释,方便理解。
完整代码下载链接:https://download.csdn.net/download/callmeup/89788619

运行结果

  • 三轴状态量对比:
    在这里插入图片描述

  • 三轴误差对比:
    在这里插入图片描述

  • 三轴误差的CDF图像对比:
    在这里插入图片描述

  • 输出误差
    在这里插入图片描述

扩展性

在扩展卡尔曼滤波(Extended Kalman Filter, E K F EKF EKF)和粒子滤波(Particle Filter, P F PF PF)这两种常用的非线性滤波方法之间,有以下几点对比和扩展考虑:

  1. 线性假设 vs 非线性处理:
    EKF基于线性化处理,适合系统模型接近线性的场景,但在高度非线性的情况下可能会失效,因为局部线性近似可能导致较大误差。
    PF则天然适用于非线性系统,因为它通过模拟大量的随机采样点(粒子)来追踪不确定性,而非依赖于系统方程的线性性质。

  2. 计算效率:
    EKF由于只需要求解一次矩阵运算,相比PF而言,其计算量较小,尤其是在高维系统中。
    粒子滤波的计算复杂度随着粒子数目的增加而增加,当系统状态维度很高或观测噪声大时,可能需要大量粒子才能保持较好的估计精度。

  3. 鲁棒性和适应性:
    PF对初始条件敏感度较低,且能较好地处理缺失数据和异常值,适合不确定性较高的环境。
    EKF在某些极端条件下(如矩阵奇异),可能会导致滤波器不稳定。

  4. 扩展性:
    EKF通常更容易与已有的数学工具结合,比如系统动力学建模等。
    PF的扩展性相对较弱,但随着算法优化(如Resampling、Bootstrap Sampling等)和并行计算的发展,现代PF技术也有了改进。

为了进一步扩展这两种滤波器,可以考虑:

  1. 融合信息: 结合其他滤波方法(如无迹卡尔曼滤波Unscented Kalman Filter, UKF),增强非线性处理能力。
  2. 自适应采样: 对于粒子滤波,研究更高效的采样策略和重采样方法,降低计算成本。
  3. 在线学习: 在EKF中引入机器学习元素,提高对未知动态模型的适应能力。
  4. 硬件加速: 为大数据量的PF设计专用硬件或者GPU加速算法。
  5. 深度学习辅助: 将滤波结果作为神经网络训练的数据输入,提升整体系统的性能。

http://www.ppmy.cn/news/1532091.html

相关文章

企业微信:客户联系自带群发工具和聊天工具

前言 上篇博客介绍了一些客户联系的开启和配置,接下来我们来使用客户联系自带群发工具和聊天工具。 突然发现官方的文档已经很详细了,我这里给出一些简单的描述: 企业微信如何使用群发助手?-帮助中心-企业微信 群发工具 群发消息给…

Linux2.6* 内核默认支持的文件系统

Linux2.6* 内核默认支持的文件系统 Btrfs是一种具有先进特性的写时复制文件系统。支持多种高级功能,如快照、透明压缩、数据校验和自我修复等,适用于大规模存储系统和数据可靠性要求较高的场景。JFSJournaled File System日志文件系统,具有高…

uniapp view设置当前view之外的点击事件

推荐学习文档 golang应用级os框架,欢迎stargolang应用级os框架使用案例,欢迎star案例:基于golang开发的一款超有个性的旅游计划app经历golang实战大纲golang优秀开发常用开源库汇总想学习更多golang知识,这里有免费的golang学习笔…

怎么用gitee做一个图片仓库,在md文档中用这个图片网络地址,然后显示图片

痛因:我为什么要这样做,呃,我一开始图片都是存本地地址的,放在和这个md文档同级的assets文件夹下面,这样子确实当时很方便,复制粘贴什么也不用管,但是想把这个文档分享给别的人的时候&#xff0…

9月27日,每日信息差

第一、中国科学家团队在干细胞治疗领域取得重要突破,通过化学重编程技术成功制备出胰岛细胞,并用于移植治疗一名 1 型糖尿病患者,实现了临床功能性治愈。相关研究成果已发表在国际权威期刊《细胞》上。 第二、交通运输部公路局局长周荣峰在国…

路由器的天线有什么用?数量多≠信号强?

你是否也曾凝视着路由器上那几根或长或短的天线,心中暗自嘀咕:“这些天线到底有啥用?是不是天线越多,信号就越强呢?”今天,让我们一同揭开这一谜团! 一、路由器天线的核心作用 1. 信号发射与接…

今天推荐一个文档管理系统 Dorisoy.Pan

Dorisoy.Pan 是一个基于 .NET 8 和 WebAPI 构建的文档管理系统,它集成了 Autofac、MediatR、JWT、EF Core、MySQL 8.0 和 SQL Server 等技术,以实现一个简单、高性能、稳定且安全的解决方案。 这个系统支持多种客户端,包括网站、Android、iO…

redis mysql nginx的docker-compose

redis mysql nginx的docker-compose version: 3services:nginx:image: docker.m.daocloud.io/nginx:latestcontainer_name: nginxrestart: unless-stoppedenvironment:TZ: Asia/ShanghaiLANG: en_US.UTF-8volumes: # 目录映射(宿主机:容器内)- "./nginx/conf/nginx.conf:…