【状态估计】卡尔曼滤波器、扩展卡尔曼滤波器、双卡尔曼滤波器和平方根卡尔曼滤波器研究(Matlab代码实现)

news2024/10/5 15:23:03

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

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

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

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

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


💥1 概述

本文包括:

1) 标准卡尔曼滤波器 2) 扩展卡尔曼滤波器 3) 双卡尔曼滤波器 4) 平方根卡尔曼滤波器
 

在所有 4 种情况下,KF 函数都接受多维系统的噪声样本作为输入,并根据噪声样本中固有的时变过程/噪声协方差生成真实系统状态的 KF 估计值。

指数加权(或未加权)移动平均线用于估计噪声测量的时变系统协方差。

标准卡尔曼滤波器是最基本的卡尔费休实现。它假设一个模型,即噪声测量包含真实的系统状态和白噪声。

扩展卡尔曼滤波器是标准卡尔曼滤波器的推广,允许用户指定非线性系统模型,然后在 EKF 执行期间迭代线性化。

双卡尔曼滤波器同时解决了两个标准卡尔曼滤波器问题:

1) 将自回归模型拟合到数据并应用卡尔曼滤波来更新 AR 模型

2) 在执行标准 KF 更新之前,在每次迭代中应用 AR 模型

平方根卡尔曼滤波是执行标准/双卡尔曼滤波的更稳健且数值稳定的方法,尤其是当感兴趣的协方差矩阵条件不佳或几乎不是正定矩阵时。平方根卡尔曼滤波思想是以平方根形式 P = U D U' 传播过程误差协方差 P,其中 U 和 D 迭代更新,P 未显式计算。这样做将保证P是正定的,从而增加KF的数值稳定性。

📚2 运行结果

 

 

 部分代码:

% Number of iterations  
N = 1000;

% True State
x = zeros(2,N);

% Apriori state estimates
x_apriori = zeros(2,N);

% Aposteriori state estimates
x_aposteriori = zeros(2,N);

% Apriori error covariance estimates
P_apriori = zeros(2,2,N);

% Aposteriori error covariance estimates
P_aposteriori = zeros(2,2,N);

% Measurements
z = zeros(2,N);

% Kalman Gain
K = zeros(2,2,N);
%--------------------------------------------------------------------------

%--------------------------------------------------------------------------
% Knobs to turn
%--------------------------------------------------------------------------
% True initial state
x(:,1) = [ 0         ;
           3*pi/500 ];

% Initial aposteriori state estimate
x_aposteriori(:,1) = [ 1         ;
                       1*pi/500 ];

% Process noise covariance
Q = [   0.001    0 ;
          0      0 ];

% Measurement noise covariance
R = [ 0.1    0   ;
      0    0.01 ];

end
%--------------------------------------------------------------------------

%--------------------------------------------------------------------------
% Plot Results
%--------------------------------------------------------------------------
figure

subplot(2,1,1)
% Actual state position
b = plot(2:N,x(1,2:N),'b');
hold on
% State position estimates
r = plot(2:N,x_aposteriori(1,2:N),'r');
% State measurements
g = plot(2:N,z(1,2:N),'g+');
title('Extended Kalman Filtering of a Sine Wave - Position');
legend([b r g],'True Position','Position Estimates','Position Measurements');
xlabel('Time')
ylabel('Position')
grid on

subplot(2,1,2)
% Actual state frequency
b = plot(2:N,x(2,2:N),'b');
hold on
% State frequency estimates
r = plot(2:N,x_aposteriori(2,2:N),'r');
% Frequency measurements
g = plot(2:N,z(2,2:N),'g+');
title('Extended Kalman Filtering of a Sine Wave - Frequency');
legend([b r g],'True Frequency','Frequency Estimates','Frequency Measurements');
xlabel('Time')
ylabel('Frequency')
grid on

🎉3 参考文献

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

[1]景仙林,魏永虎.自回归的卡尔曼滤波算法在UWB定位中的应用[J].地理空间信息,2023,21(05):117-119.

[2]李成城,马立森,田原,贾运红,贾曲,田伟琴,张凯.基于CLAHE与卡尔曼滤波的掘进机机载视频稳像算法[J].工矿自动化,2023,49(05):66-73.DOI:10.13272/j.issn.1671-251x.2022100002.

[3]岳兴春,彭勇,宋威,黄嘉诚,周钰琛.融合EMA和卡尔曼滤波的MEMS去噪研究与应用[J].仪表技术与传感器,2023(04):83-86+92.

🌈4 Matlab代码实现

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/636452.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

win10修改本地host文件,增加自定义本地访问域名127.0.0.1(超详细)

1. 按winR,输入C:\Windows\System32\drivers\etc打开host文件所在位置: 2.右键hosts文件–>点击属性->点击安全,把所有组用户名权限打开: 右键属性切换到安全 配置好之后点击应用-确定 最后验证一下 验证 5. winR&#x…

作为前端开发,你了解MutationObserver吗?

目录 前言 演变过程 基础概念 MutationObserver observe(target, options) attributes:是否监听标签属性变化 childList:是否监听子节点变化 characterData:是否监听文本节点内容的变化 attributeOldValue:是否记录属性变…

前端058_权限系统(身份认证+退出+刷新令牌)_刷新令牌获取新的认证信息

当访问令牌 access_toke 过期,后台会响应状态码 401 ,通过刷新令牌 refresh_toke 获取新令牌。获取后重新发送引发获取新令牌的请求。 1、请求拦截401错误实现刷新令牌请求 所有的请求后台数据,都是通过在 src/utils/request.js 封装的 axios 对象进行发送请求,所以当调…

蓝牙标签协议

1.Request write block size command CMD DATA 0x01 无 Response for write block size command CMD DATA (short) 0x01 Block size 注意:short是低位在前,高位在后 2.Request write screen command CMD DATA 0x02 Image length(int) Imag…

GIS软件中网络分析的5种应用

什么是网络分析?几乎每个人都需要一个网络分析的类型在他们的生活中。 例如,去海滩的最短路线是什么?应该在哪里建一所医院来最好地服务一个社区?如何优化运输车队? 以下是5种最常见的网络分析类型:点对点…

原来Allegro工程师还分这几个等级,薪资差距好大

随着电子设计领域的不断发展,Allegro工程师的需求也越来越高,在发展过程中,不同等级的Allegro工程师之间存在着薪资和工作范围上的差异,那么你知道不同等级的Allegro工程师有什么不同吗? NO.1初级Allegro工程师 ①分布…

HYA-D-M5、HYA-C-01、HYA-D-02气控电磁阀

HY-C-M5、HY-D-01、HY-D-02、HYA-D-M5、HYA-C-01、HYA-D-02、H280-4-D-S-L、H280-5-D-D-L、H380-5-G-S-L、H380-5-D-S-L电磁阀分电控及气控。维护须知: 1,安装时,请注意气体流动方向及接管是否正确,电压是否符合要求2.请注意防尘…

内部知识库搭建的意义何在?可以给哪些内部人员使用?

随着企业的不断发展和壮大,内部知识管理成为了越来越重要的一项工作。而内部知识库搭建则是内部知识管理的重要手段之一。本文将介绍内部知识库搭建的意义以及可供哪些内部人员使用,以及如何搭建一个高效的内部知识库。 内部知识库搭建的意义&#xff1…

拓展冒泡排序

冒泡排序 冒泡排序的动态演示 比较相邻的元素。 1,如果第一个比第二个大(升序),就交换他们两个。 2,对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后, 最后的元素会是…

解决Antd Tree组件,二次点击时不取消选中,保持高亮

一、问题概述 ant design 提供的 Tree树组件 支持点击高亮树节点,再次点击取消高亮。 默认效果如下: 然而大多数业务场景下,我们希望多次点击同一个节点不会取消他的选中效果。 二、解决方案 监听onSelect时间,并使用select…

PG系列1:windows下安装PG15

文章目录 一. 下载PG二. 开始安装PG2.1 开始安装2.2 验证 一. 下载PG 官网地址: https://www.postgresql.org/选择Download 选择windows Download the installer 点击下载 二. 开始安装PG 2.1 开始安装 这个安装很简单,直接下一步即可,此处…

5.Java内存模型之JMM

Java内存模型之JMM 5.1 先从大场面试开始 你知道什么是Java内存模型JMM吗? JMM和volatile他们两个之间的关系? JMM没有那些特征或者它的三大特征是什么? 为什么要有JMM,它为什么出现?作用和功能是什么? hap…

智能井盖:智慧城市下的井盖管理新模式

随着全球城市化进程的加快,智慧城市的概念越来越受到关注。井盖作为城市的基础设施之一,井盖的安全管理成为城市管理者关注的重要问题。传统的井盖管理方式面临诸多挑战,如人力成本高、巡检效率低、隐患难以发现等。随着智慧城市的发展&#…

leangoo领歌敏捷工具中,如何快速查看项目内所有任务卡片

项目管理员能不能快捷的查看整个项目内的所有任务? 能不能快捷查看项目内某一个成员的所有任务? 能不能快捷的在项目内通过一些条件选择查看任务? 可以导出项目内某一个人的所有任务吗?方便做一些统计 等等... 这些现在Leang…

路径规划 | 图解Informed RRT*算法(附ROS C++/Python/Matlab仿真)

目录 0 专栏介绍1 Informed RRT*原理2 Informed RRT*流程3 ROS C实现4 Python实现5 Matlab实现 0 专栏介绍 🔥附C/Python/Matlab全套代码🔥课程设计、毕业设计、创新竞赛必备!详细介绍全局规划(图搜索、采样法、智能算法等);局部…

超全、超详细的Redis学习笔记总结

❤ 作者主页:欢迎来到我的技术博客😎 ❀ 个人介绍:大家好,本人热衷于Java后端开发,欢迎来交流学习哦!( ̄▽ ̄)~* 🍊 如果文章对您有帮助,记得关注、点赞、收藏、…

「2024」预备研究生mem-消序核心原则

一、消序 二、核心原则 相同备选池 三、练习题

数据库索引简介及优化

索引 1.索引简介 1.1 概念 MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。索引的本质:索引是数据结构。 注:在数据之外,数据库系统还维护着满足特定查找算法的数据结构&…

OOM 原因及解决方案

1. 什么是OOM 1.1 OOM 含义: OOM, 全称 “Out Of Memory”, 意思是 “内存用完了”。 它来源于 java.lang.OutOfMemoryError。 1.2 为什么会出现OOM: 官方介绍为当 JVM 因为没有足够的内存来为对象分配空间并且垃圾回收器也已经没有空间可回收时, 就会抛出 java.lang.OutOfMemo…

Windows命令行压缩gz文件

tar -help win10好像是某个版本号之后,才能使用tar命令,所以想要直接在win10上面使用tar命令,就更新系统吧。 按 winr 键后输入 cmd 打开命令行终端,输入 tar -help 命令,如下所示。 tar -cf xxx.tar.gz ./xxx //是…