【EKF】卡尔曼滤波的一维应用实例

news2024/11/16 3:47:37

前言

推导了卡尔曼滤波的原理之后,使用一个简单的一维应用实例来训练一下,加深印象。使用一个温度测量的实例来说明,系统的状态方程为:

X(k) = A*X(k-1) + B*u(k-1) + w(k-1)

Z(k) = H*X(k) + v(k)

其中 w 为过程噪声,方差为Q, v 为测量噪声,方差为R

对一维系统来说,协方差矩阵P = 状态X与估计值X_hat的方差 注意:P≠Q

一维协方差矩阵的理解

结合协方差矩阵的定义:

对一维来说,可以理解为状态 x 与估计值 x_hat 之间的方差,需要注意的是:

一维协方差矩阵 P 的值 不等于 过程噪声的方差 Q;

另外,协方差矩阵 P 是不断更新的,过程噪声的方差 Q 是固定的,与建模的过程有关

matlab程序编写

首先进行参数的设定,假设采集一个室内的温度,每 1min 采集一次,一共采集 1000 次数据,初始真实温度是 30度,期间室内温度可以变化,也可以不变化,自己调整,过程噪声 w 的方差为 Q,假设为 0.1^2,注意方差的定义:

温度计的测量噪声 v 的方差为 R,假设为1.0^2。

对于此一维的系统,矩阵 A = 1,H = 1,B = 0。

再加上卡尔曼滤波需要用到的,先验协方差矩阵 P_,协方差矩阵 P,先验估计状态 x_hat,估计状态 xhat,测量值 z,将上述的参数汇总进行初始化工作:

N = 1000;   %采样个数  每1min采样一次,采样100min
temp_real = 30;   %实际温度 30度
%系统状态方程为:
%   X(k) = A*X(k-1) + B*u(k-1) + w(k-1)
%   Z(k) = H*X(k) + v(k)
%   其中 w 为过程噪声,方差为Q,  v 为测量噪声,方差为R
%   对一维系统来说,协方差矩阵P = 状态X与估计值X_hat的方差   注意:P≠Q
A = 1;  %由于是一维系统,因此A矩阵为1
B = 0;
H = 1;  %由于是一维系统,因此H矩阵为1
Q = 0.1^2;  %假定过程噪声的方差为0.1*0.1
R = 1.0^2;  %假定测量噪声的方差为0.5*0.5
x_real = temp_real*ones(1,N);   %将实际值赋值到N维数组中
x_hat = zeros(1,N);  %先验估计值
xhat = zeros(1,N);  %估计值
z = zeros(1,N);  %温度计测量值
P = zeros(1,N);  %协方差矩阵
P_ = zeros(1,N); %先验协方差矩阵
z(1) = 29.8;  %初始测量温度
x_hat(1) = z(1);  %初始估计值
P(1) = Q;   %初始协方差,指定为Q
w = sqrt(Q)*randn(1,N);   %过程噪声   方差的开方就是噪声的大小
v = sqrt(R)*randn(1,N);   %测量噪声   方差的开方就是噪声的大小

卡尔曼滤波的五大公式:

假设真实温度不变

之后,假设真实温度是不变的,按照卡尔曼滤波的公式进行程序编写:

for k = 2:N
    %修改实际值,让真实温度每次递增 但增量需要在方差以内
    %x_real(k) = x_real(k-1) + w(k);
    %获取测量值
    z(k) = H * x_real(k) + v(k);  %加入测量噪声
    %计算先验估计值
    x_hat(k) = A * xhat(k-1);  
    %计算先验协方差
    P_(k) = A * P(k-1) * A' + Q;
    %计算卡尔曼增益
    K = (P_(k) * H) / (H * P_(k) * H' + R);
    %计算后验估计值
    xhat(k) = x_hat(k) + K * (z(k) - H * x_hat(k));
    %更新估计误差协方差
    P(k) = (1 - K * H) * P_(k);
end

之后将图形画出来:

绿色为测量值,红色为估计值,蓝色为实际值。

假设真实温度变化

在上述代码中,将真实温度赋值的代码注释去掉即可:

%修改实际值,让真实温度每次递增 但增量需要在方差以内
x_real(k) = x_real(k-1) + w(k);

这里的 w 的过程噪声方差的开方值范围的随机数,过程噪声就是建立系统模型过程中造成的误差,因此,如果实际值要增加,也需要满足过程噪声方差的约束条件,否则就会造成卡尔曼滤波跟踪效果不好。

也就是说,我们选取了过程噪声的方差 Q = 0.1^2 ,假设实际温度变化超过了 0.1,那么我们上面建立的模型就跟实际对不上了,我们上述建立的模型是:

X(k) = A*X(k-1) + w(k-1) w方差为Q

实际中的 w 的方差并不是Q,因此卡尔曼滤波器就会效果不好

看一下温度在变化时,卡尔曼滤波器的跟踪图:

跟踪效果还是可以的。

过程噪声方差Q的影响

在实际中,测量噪声 v 的方差是比较容易得到的,因为是传感器的方差,可以预先测量 n 组数据来计算出来,计算出的方差 R 与真实方差也是接近的,但过程噪声方差 Q 是比较难确定的,它是由建模引起的,需要实际判断与调试。

假设我们将上面代码中的真实温度变化的范围放大到确定的 Q 之外,再看卡尔曼滤波的跟踪效果,就会比较清楚:

x_real(k) = x_real(k-1) + 30*w(k);

这里,将随机数扩大了30倍,可以看到跟踪效果就没有那么好了:

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

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

相关文章

方言翻译APP小程序开发具备哪些功能?

我国语言文华博大精深,很多地方都有着民族特色方言,在当地很盛行但是外地人听不懂也不会说,这就給沟通造成了一定的困扰。方言翻译APP软件是专门针对地方性方言开发的一款系统软件,提供全国各地方言翻译功能,一键在线就…

Android中如何使用GPS

目录 GPS简介 GPS的常用API locationProvider 使用GPS获取位置信息 室内WIFI定位 近距离警报 GPS简介 Gobal Positioning System,全球定位系统,是美国在20世纪70年代研制的一种以人造地球卫星为基础的高精度无线电导航的定位系统,它在全…

【手机摄影】--全集

算了,摄像机太贵了,玩不起,还是看看手机摄影吧。 学习链接 :https://www.bilibili.com/video/BV14e411T7md 1. 认识手机摄影 1.1 局限性 手机的摄像头能够满足大部分场景,但以下场景会受到掣肘,最好还是用…

面试这么简单,阿里原来这么容易就能进去…...

最近和阿里的一个老朋友闲聊,感触颇深,据他说公司近期招聘的测试工程师,大多数候选人都有一个“通病”:在工作2-3年的时候遇到瓶颈,而且是一道很难跨越的坎。 为什么会遇到这种情况?因为大部分测试工程师在…

项目管理基础(第五版)读书笔记

项目管理基础(第五版)读书笔记 章节概要前言第一章:项目管理概述 日期:2023年3月23日 章节概要 前言 项目管理协会 Project Management Institute。简称PMI。项目管理知识体系指南 Project Management Body Of Knowledge。简称P…

4.QT应用程序主窗口

本章代码见文末链接 主窗口框架 新建Qt Wisgets项目mymainwindow,类名默认MainWindow,基类默认QMainWindow 更改文字如图,如果中文无法直接输入,可以试试复制粘贴 “动作编辑器”中(默认在右下角)&…

关于IRIG-B码对时的理解和分析

一、IRIG-B是什么? IRIG-B(简称B码)是一种应用于靶场的串行时间交换码。由美国靶场司令部委员会下属“靶场仪器组”提出的一种时间信息编码标准(IRIG是英文InterRange Instrumentation Group的缩写。它是美国靶场司令委员会的下属…

一百零八、Kettle采集Kafka数据到HDFS(踩坑,亲测有效)

Kafka到HDFS,除了用Kafka API和flume之外,还可以用kettle,最大优点是不用写代码! 版本:Kettle版本:8.2、Hadoop版本:3.1.3 前提: 详情请看鄙人的一百零一、Kettle8.2.0连接Hive…

pip安装配置清华镜像源scrapy框架,并进行框架的案例演示

文章目录 运行cmd终端后直接输入安装成功scrapy框架安装成功 为什么使用此命令安装scrapy框架成功后创建scrapy项目建议在pycharm终端创建项目打开项目 用scrapy框架实现案例——从新浪网爬取热点并把数据输入到excel表中编辑setting.py文件创建脚本、写入脚本在终端运行脚本文…

长三角生物医药产业加速跑,飞桨螺旋桨为创新药企、医药技术伙伴装上AI大模型引擎...

生物医药是国家“十四五”规划中明确的战略性新兴产业之一。长三角地区是中国生物医药产业的排头兵,也是《“十四五”生物经济发展规划》的“生物经济先导区”之一。据《上海市生物医药产业投资指南》显示,2022 年上海市生物医药产业在 I 类国产创新药数…

新手如何学习挖漏洞?【网络安全】

新手如何学习挖漏洞?看这篇就够了 前言 有不少阅读过我文章的伙伴都知道,我从事网络安全行业已经好几年,积累了丰富的经验和技能。在这段时间里,我参与了多个实际项目的规划和实施,成功防范了各种网络攻击和漏洞利用&…

Cron表达式X分钟执行一次的设计缺陷。SQL JOIN的设计缺陷。在线Cron表达式网站的缺陷。Spring 定时任务的年问题。

Cron Cron表达式 定时任务计划任务 Chronological英 /ˌkrɒnəˈlɒdʒɪk(ə)l/adj. 按发生时间顺序排列的;(年龄)按时间计算的1. 月 周设计精妙吗? 学习 0/5 * * * * ? * 秒 分 时 日 月 周 年1. 年一般省略。为&#xf…

Live800:服务经济时代,企业如何满足客户需求?

在互联网与市场经济的催化下,我们正在从产品经济时代过渡到服务经济时代。在产品经济时代,企业关注的核心是质量和成本;而在服务经济时代,如何面向客户,满足客户需求则成为企业建立核心竞争力的关键。 具体来说&#x…

【精选】关于洪涝灾害智慧水利和人工智能大模型的解决方案2023版

本资料来源公开网络,仅供个人学习,请勿商用,如有侵权请联系删除 智慧水利平台 实现“全局一盘棋”的智慧水利综合管理,通过“一图、一库、一平台”结合水利大数据、数字孪生与人工智能,为水利工作提供有力的管理抓手&…

SingleR --细胞注释

文章目录 briefExample使用内置的 references使用其他注释好的数据集作为 reference singleR还提供了注释诊断的方法 brief Example The celldex package provides access to several reference datasets (mostly derived from bulk RNA-seq or microarray data)。 The Human…

《狂飙》原著来了,邀你重新见证

2023年的开篇十分精彩且丰富,经历过生活的不幸,新的一年万物复兴,每个人心底那颗躁动的心又重新释放,希望新的开始不负所望,年末复盘时所得皆所愿! 开篇 开年影视第一炮,炸出了所有人被压抑的内…

AIGC技术发展和应用方向

AIGC(Artificial Intelligence Generated Content)是指通过人工智能技术生成的各种文本、图像、音频和视频等多媒体内容。AIGC技术是机器学习和自然语言处理等技术的结合,通过对海量数据的学习和分析,可以让计算机模拟人类的创造力…

Spring Boot 单体应用一键升级成 Spring Cloud Alibaba

作者:十眠 背景 随着 Apache Dubbo、Nacos 以及 Spring Cloud 等服务框架的流行,越来越多的企业开始采用微服务架构来构建其应用程序。微服务架构使企业能够将其应用程序拆分成多个小型服务,这些服务可以独立部署和扩展。这种架构模式也使企…

怎么给pdf文件添加水印

怎么给pdf文件添加水印?PDF文件的应用比较广泛,大家喜欢将各种办公资料和文档转换成PDF格式,为什么呢?因为pdf文件具有比较强的稳定性而且不利于编辑修改,所以更利于保存和转发。有时候我们会在工作中花费大量时间制作…

第1天学习Docker——Docker简介

一、Docker是什么? Docker 是一个开源的应用容器引擎,基于 Golang 语言开发,可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 服务器。容器是一个沙箱机制,相互之间不会…