kalman fiter

news/2025/3/17 7:19:06/文章来源:https://www.cnblogs.com/invo/p/18233526

卡尔曼滤波是一种利用线性系统状态方程,通过系统输入输出观测数据,对系统状态进行最优估计的算法。由于观测数据中包括系统中的噪声和干扰的影响,所以最优估计也可看作是滤波过程。

组成以及步骤

1.预测状态方程

目的:由系统状态变量k-1时刻的最优值和系统输入计算出k时刻的系统预测值。

2.预测协方差方程

目的:根据k-1时刻的系统协方差预测k时刻系统协方差

3.卡尔曼增益方程

目的:根据(k时刻)协方差矩阵的预测值计算卡尔曼增益

4.跟新最优值方程(卡尔曼滤波的输出)

目的:根据状态变量的预测值和系统测量值计算出k时刻状态变量的最优值

5.更新协方差方程

目的:为了求k时刻的协方差矩阵。(为得到k+1时刻的卡尔曼输出值做准备)

代码实现

clc;clearZ=1:100; % 观测值,测量值noise=randn(1,100); % randn(m,n)返回一个m*n的随机项矩阵; randn(m,n)矩阵默认均值为0、方差为1的高斯噪声Z=Z+noise; % 测量值含噪声(measurement noise),且为高斯白噪声X=[0; 0]; % 初始状态P=[1 0;0 1]; % 状态协方差矩阵F=[1 1;0 1]; % 状态转移矩阵,理想的数学模型% 加上外部不确定性后, 当前的每个预测状态都可能会移动到另一点,并且具有协方差QQ=[0.0001 0;0 0.0001]; % 状态转移协方差矩阵,预测误差H=[1 0]; % 观测矩阵,对应C输出矩阵R=1; % 传感器的观测噪声方差figure;hold on;% 五步法for i = 1:100    %1状态预测    X_ = F * X ; % 预测矩阵,得到机器人下一个状态X_ ;这里忽略了已知的外部影响Bu    %2预测协方差矩阵    %Cov(Ax)=A*Cov(x)*A'  ,更新下一个状态协方差矩阵P_    P_ = F * P * F.' + Q ; % A的转置,rot90(A) 或 A' 或者A.';这里不忽略外部的不确定性Q    %3增益矩阵    K = P_ * H.' / ( H * P_ * H.' + R);  % K卡尔曼增益系数    %4状态最优估计,修正估计值    X = X_ + K * ( Z(i) - H * X_ ); %卡尔曼滤波,更新下一个最佳估计状态X    %5估计误差的协方差矩阵    P = (eye(2)- K * H) * P_ ; %eye(2)为2阶单位阵,更新下一个最佳估计状态X对应的协方差矩阵P    plot(X(1), X(2), 'r*-'); %横轴位置X(1),纵轴速度X(2)    plot(i, 1, 'gs');end% 卡尔曼滤波实质就是将预测状态量的高斯分布和观测量的高斯分布做融合,生成一个新的高斯分布,% 其中新的高斯分布的均值和方差是两个独立的高斯分布的相关参量的加权,这个加权就是卡尔曼增益K,% 但是预测状态量和观测量可能维度不同,需要将他们同时转换到一个向量空间中,所以观测量前面有线性变换矩阵

images/kalman fiter-20240605180136518.webp

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机英文教材太难啃?Higress 和通义千问帮你!

本文将介绍基于 AI 大语言模型进行英文技术内容翻译,并基于又免费又好用的翻译软件进行内容呈现,帮助大家轻松学习计算机英文原版教材。作者:张添翼(澄潭) 计算机相关英文教材的中译本质量堪忧,对于计算机专业的学生来说,应该深有体会。因为大部分教材的译者本人可能未必…

合工大毕业论文LaTeX模板使用指南

本文是在笔者为班级同学编写的指南的基础上修改而来的。 前言 LaTeX 是目前主流的计算机排版系统之一。目前社区维护了一份合工大毕业论文的 LaTeX 模板(以下简称“模板”):https://github.com/HFUTTUG/HFUT_Thesis 考虑到大部分同学对 Word 都谈不上精通,使用 LaTeX 排版毕…

巧用pause,一次性画出多个系统的阶跃响应

num=1;den1=[0.5 1 2 4 6 8];hold; for i=1:6 step(tf(num,[den1(i), 1])); pause(2);endlegend(num2str(den1(1)),num2str(den1(2)),num2str(den1(3)),num2str(den1(4)),num2str(den1(5)),num2str(den1(6)))结果: 人就像是被蒙着眼推磨的驴子,生活就像一…

流畅的python--第七章

把函数视为对象 在python中,函数是一等对象。编程语言研究人员把“一等对象”定义为满足以下条件的程序实体:在运行时创建; 能赋值给变量或数据结构中的元素; 能作为参数传给函数; 能作为函数的返回结果。 示例7-1 创建并测试一个函数,读取函数的__doc__属性,再检查函数…

OA-SLAM 笔记

4.1 基于 ORB-SLAM2 (tracking, local mapping, loop closure) , 增加了 针对于 objects 的模块。这些模块使用 the ellipse/ellipsoid modeling framework, 和 points 使用相同的策略, 即在 frames 上跟踪 objects, 以 3D 的方式估计,插入到地图,然后不断优化。object tr…

iLogtail 2.0 重大升级,端上支持 SPL

SLS 推出了 SPL(SLS Processing Language)语法,以此统一查询、端上处理、数据加工等的语法,保证了数据处理的灵活性。iLogtail 作为日志、时序数据采集器,在 2.0 版本中,全面支持了 SPL 。作者:太业 流式处理语言发展早期流式处理概念:20 世纪 70 年代,编程语言如 APL…

提供高达 58 Gbps 的收发器速率、AGFA023R31C2E1VB/AGFA023R31C2I1V/AGFA023R31C2I2VB现场可编程门阵列 (FPGA)

Agilex F 系列设备提供高达 58 Gbps 的收发器速率、支持多种精度的定点和浮点运算的高级数字信号处理 (DSP) 模块,以及高性能加密块。Agilex 7 FPGA产品系列包括业界最高性能的FPGA和SoC。英特尔 Agilex 7 FPGA和SoC由高性能的F系列、I系列和M系列FPGA组成,为要求最高的应用提…

JA4指纹了解

原文来自:https://mp.weixin.qq.com/s/Vo57J6l7WEt7L2bF_EAfbA https://xz.aliyun.com/t/14054?time__1311=mqmx9DBG0QD%3DNGNDQiiQGk0G8UAfWRi8rD&alichlgref=https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3DiCpL-H6nh6F3hHSqKNxdmugqoq3VxxR00WtgPIO6P2n4QKqCs9QZmOV5veT…

wsl安装教程

关于WLS的介绍1.什么是WSL?2 双系统的方法比较3 WSL1与WSL2比较 方法一: 传统手动安装1.1 windows系统版本查看及更新1.2 启用适用于Linux的Windwos子系统1.3 启用虚拟机功能1.4 重启电脑1.5 下载Linux内核更新包1.6 安装 Linux 分发版 方法二:命令符自动安装 (一行命令搞定…

Redis-4-持久化

Redis持久化 1.1 为什么 Redis是基于内存的,不保存的话,应用停止了后数据就不在了。 持久化的诉求,主要是解决以下问题: 防止数据丢失 Redis 是一个内存数据库,数据主要存储在内存中。如果没有持久化机制,一旦服务器宕机或重启,内存中的所有数据都会丢失。通过持久化,R…

Nacos配置

Nacos注册中心 目前开源的注册中心框架有很多,国内比较常见的有:Eureka:Netflix公司出品,目前被集成在SpringCloud当中,一般用于Java应用 Nacos:Alibaba公司出品,目前被集成在SpringCloudAlibaba中,一般用于Java应用 Consul:HashiCorp公司出品,目前集成在SpringCloud…

RK3308B WIFI

修改 WIFI 型号 ./device/rockchip/rk3308/rockchip_rk3308b_64bit_defconfig修改设备树 根节点 ---> wireless-wlanwireless-wlan {compatible = "wlan-platdata";rockchip,grf = <&grf>;pinctrl-names = "default";pinctrl-0 = <&wi…