卡尔曼滤波(Kalman filter)及预测

article/2025/10/5 19:40:01

参考文章:https://blog.csdn.net/baidu_38172402/article/details/82289998;  https://www.jianshu.com/p/2768642e3abf

kalman滤波的作用:1.数据 滤波;2.数据预测   3.数据融合。其基本原理:是通过协方差 来进行加权。

1.什么是Kalman

      A Linear Dynamical System is a partially observed stochastic process with linear dynamics and linear observations, both subject to Gaussian noise. It can be defined as follows, where X(t) is the hidden state at time t, and Y(t) is the observation.

   x(t+1) = F*x(t) + w(t),  w ~ N(0, Q),  x(0) ~ N(X(0), V(0))y(t)   = H*x(t) + v(t),  v ~ N(0, R)

      The Kalman filter is an algorithm for performing filtering on this model, i.e., computing P(X(t) | Y(1), ..., Y(t)).
The Rauch-Tung-Striebel (RTS) algorithm performs fixed-interval offline smoothing, i.e., computing P(X(t) | Y(1), ..., Y(T)), for t <= T.

噪声(不确定性)来源: 1.本身的高斯噪声  2. 观测存在的噪声。

         其优势在于:它的优点是在预测时并不需要记录很多系统过去的状态,只需要知道上一状态的预测结果的误差协方差矩阵就可以了,所以kf可以算得很快,可以用于实时的动态系统。迭代

状态方程(即怎么从x(k-1)更新到x(k)):

状态方程之后,就是协方差了。初始协方差矩阵=【1 0;0 1】,后面 根据协方差矩阵性质与状态空间矩阵,更新了协方差矩阵。

        但是这个状态方程只是一个很基础的,我们还需要考虑其他因素对系统的影响,比如说电机对机器人的控制,外界干扰等等。

        我们首先考虑电机对机器人的控制,如果加上电机的加速度,则空间状态方程为:

      Bk就是控制矩阵,uk就是加速度向量。

       此外还要考虑噪声的影响,如果加上噪声,则每一个(k-1)时的点不会对应到K时的一个点,而是对应到一片区域,所以对应关系如下:

因为每一个点都对应到一片区域,所有的对应叠加在一起,得到的新的K的分布范围应该比以前要大,如下图所示:

    面积明显比上图要大,同时我们假设噪声是高斯白噪声,所以期望为0,所以加上噪声后K的期望不变。假设噪声所造成的那个小绿圈的速度与位置的协方差矩阵为Qk,则新的主观预测和协方差矩阵为:

      通过这个方程我们可以在X(k-1)时主观的预测出Xk时的状态。下一步就是得到客观测量的结果。

【分析:Fk根据内在联系,速度与位置的关系,可以得出状态空间方程,Bk也是,Pk开始设立初始值,后续更新。Qk为噪音矩阵如何求取呢?可以设一个固定值Q = 0.1*eye(2)=0.1*【1 0;0 1】     】】

      到这里,预测就完成了。

example【参考:2】:

 

 

z=[0.39	0.50	0.48	0.29	0.25	0.32	0.34	0.48	0.41	0.45]
%% 初始参数设定
ss = 1; % state size  状态矩阵只有角度,矩阵为[1]
os = 1; % observation size  观察矩阵也是如此
%Q=[0.001]  %观测噪音矩阵
P=[1]; 
A=[1]  %状态矩阵
xbar=A*z(1);
R=0.01*[1];
H=[1]  %Z=H*xk+vk,H为测量值与真实值的映射矩阵
xbar(1)=0;
Pbar(1)=1;
x(1)=z(1);    for t=2:length(z)%预测Pbar(t)=A*P(t-1)*A';   %对于协方差来说,我们认为观测协方差(方差)是稳定的,R=0.1,但是预测的协方差在改变xbar(t)=A* x(t-1);%引入测量值滤波%K(t)=Pbar(t)*H'*inv(H*Pbar(t)*H'+R);K(t)=(Pbar(t)*H')/(H*Pbar(t)*H'+R);x(t)=xbar(t)+K(t)*(z(t)-H*xbar(t));P(t)=(1-K(t)*H)*Pbar(t);
end
plot(xbar,'r')
hold on 
plot(x,'b--')
plot(z,'y*')
hold off
legend('预测值xbar','滤波值x','观测值z')


 

2.预测

      在很多场景,比如角度传感器。人们往往希望驱动机构到某个位置,即存在提前预测,并以预测的数据作为控制依据。

滤波后的这个最优预测并不是用于实际的使用,实际中还是使用主观预测部分为估计,但是当到下一个时间点得到客观测量后,我们可以修正我们的估计,得到最优估计,这个估计是作为参数传递给下一次估计,这样一次次修正,我们的估计会更加精确。

简而言之,假如你要提前预测值控制,你可以先用着,这不是最好的值。后面可以滤波更新,迭代下去。

    许多场景下,我们试图预测更长步数,但是预测主要是基于模型,比如温度,我们预测t2=t1,即短时间内,温度变化不大,既然是基于模型,那么预测的准确度就不大。

   与三次指数平滑预测相比,三次指数平滑其基于其数据特征(趋势,周期性),其最简单的预测是y=kx+b线性预测。可以预测多步。

    据此,我们认为kalman滤波不适宜多步预测,尤其在预测模型不足够准确的情况下(期待讨论)。

3. 数据融合

 

       下面我们考虑多个变量的情况,这时数据的波动情况就不能用方差表示了,应该用协方差矩阵来表示,所以直接替换得到的新的分布和新的K:

     这样,我们就得到多变量时的Kalman Gain。这个分布期望就是我们最终的预测。协方差矩阵就是我们要传给下一次预测的信息。

资源下载:

【1】.kalman matlab工具箱:https://blog.csdn.net/congduan/article/details/8163407;这个工具箱 supports filtering, smoothing and parameter estimation (using EM) for Linear Dynamical Systems.

【2】.一维数据kalman滤波的例子,http://bilgin.esme.org/BitsAndBytes/KalmanFilterforDummies

 


http://chatgpt.dhexx.cn/article/SwcekQCQ.shtml

相关文章

【Kalman】卡尔曼滤波Matlab简单实现

本节卡尔曼滤波Matlab实现是针对线性系统估计的&#xff0c;仅为简单仿真。 1.离散时间线性动态系统的状态方程 线性系统采用状态方程、观测方程及其初始条件来描述。线性离散时间系统的一般状态方程可描述为 其中&#xff0c;X(k) 是 k 时刻目标的状态向量&#xff0c;V(k)…

学习OpenCV——Kalman滤波

背景&#xff1a; 卡尔曼滤波是一种高效率的递归滤波器(自回归滤波器), 它能够从一系列的不完全及包含噪声的测量中&#xff0c;估计动态系统的状态。卡尔曼滤波的一个典型实例是从一组有限的&#xff0c;包含噪声的&#xff0c;对物体位置的观察序列&#xff08;可能有偏差&a…

卡尔曼滤波Kalman Filtering:介绍

本文是Quantitative Methods and Analysis: Pairs Trading此书的读书笔记。 控制理论(control theory&#xff09;是工程学的分支之一&#xff0c;主要应对工程系统控制的问题。比如控制汽车发动机的功率输出&#xff0c;稳定电动机的转速&#xff0c;控制“反应速率”&#x…

kalman 滤波 演示与opencv代码

在机器视觉中追踪时常会用到预测算法&#xff0c;kalman是你一定知道的。它可以用来预测各种状态&#xff0c;比如说位置&#xff0c;速度等。关于它的理论有很多很好的文献可以参考。opencv给出了kalman filter的一个实现&#xff0c;而且有范例&#xff0c;但估计不少人对它的…

Ensemble Kalman filter集合卡尔曼滤波

在气象预测领域&#xff0c;很多时候&#xff0c;模型具有 O ( 10 e 8 ) O(10e8) O(10e8)以上的量级&#xff0c;如果使用传统的卡尔曼滤波&#xff0c;协方差矩阵的更新将是一个~ 10 e 22 10e22 10e22量级的计算操作&#xff0c;因此传统的卡尔曼滤波并不适用。集合卡尔曼滤波…

Kalman滤波MATLAB实现实例——在温度测量中的应用

参考&#xff1a;《卡尔曼滤波原理及应用MATLAB仿真》 原理介绍 假设我们要研究的对象是一个房间的温度。根据经验判断,这个房间的温度大概在25℃左右,可能受空气流通、阳光等因素影响,房间内温度会小幅度地波动。我们以分钟为单位,定时测量房间温度,这里的1分钟,可以理解为采…

图解卡尔曼滤波(Kalman Filter)

背景 关于滤波 首先援引来自知乎大神的解释。 “一位专业课的教授给我们上课的时候&#xff0c;曾谈到&#xff1a;filtering is weighting&#xff08;滤波即加权&#xff09;。滤波的作用就是给不同的信号分量不同的权重。最简单的loss pass filter&#xff0c; 就是直接把低…

卡尔曼滤波(Kalman Filter)原理理解和测试

Kalman Filter学原理学习 1. Kalman Filter 历史 Kalman滤波器的历史,最早要追溯到17世纪,Roger Cotes开始研究最小均方问题。但由于缺少实际案例的支撑(那个时候哪来那么多雷达啊啥的这些信号啊),Cotes的研究让人看着显得很模糊,因此在估计理论的发展中影响很小。17世纪…

Kaplan-Meier

Kaplan-Meier 算法 Kaplan-Meier&#xff0c;是一种生存分析的常用方法&#xff0c;用于研究某一个因素对于生存时间的影响。在医学广泛使用&#xff0c;比如新药物是否有效的增加癌症病人的存活时间。 计算方法&#xff1a;假设我们已经计算出了时间t1的生存概率是0.95&#…

Kalman滤波器从原理到实现

转载请注明出处&#xff1a;http://xiahouzuoxin.github.io/notes Kalman滤波器的历史渊源 We are like dwarfs on the shoulders of giants, by whose grace we see farther than they. Our study of the works of the ancients enables us to give fresh life to their finer…

Kalman Filter 通俗讲解

引言 Kalman Filter&#xff0c;很多人刚听到这个名词时&#xff0c;总是会下意识认为这就是个滤波器。我这里想要重点声明的是&#xff0c;Kalman Filter不是滤波&#xff0c;它是一种信息融合的过程。 那么Kalman Filter到底是什么&#xff1f;它在那些方面有着应用&#xf…

卡尔曼(kalman)详解

Kalmanfliter [TOC](Kalmanfliter) kalman详解贝叶斯准则(Bayes rule)全概率定理贝叶斯卡尔曼matlab仿真 kalman详解 贝叶斯准则(Bayes rule) 全概率定理 两个随机变量 X 和 Y 的联合分布(joint distribution)如下: p (x , y) p (X x , Y y)&#xff08;Xx&#xff0c;Yy同…

kalman简单例子——初始化参数对kalman性能的影响

此篇为第⑤篇,多目标跟踪系列文章: 基础demor入门①②;公式推导③④;深入分析初始化参数的影响⑤; ① Matlab Kalman滤波例子——小球跟踪解析 :matlab官方例子,单目标跟踪。匀速模型和匀加速模型 ②Matlab Kalman Filter based Multiple object Tracking 官方例子 多目…

卡尔曼(kalman)滤波器原理

引言&#xff1a;卡尔曼滤波器适用于线性高斯系统&#xff0c;若为非线性系统&#xff0c;可以使用扩展卡尔曼滤波器。 一、状态估算器 如下图&#xff0c;如果我们需要知道火箭发射时尾部内部的实际温度&#xff0c;这个温度与火箭的燃料输入有关。但是由于里面温度过高&…

Kalman详尽原理介绍合集

目录 前言 1.线性kalman(LKF) 1.1LKF原理简介 1.2 适用场合 2.扩展kalman(EKF) 2.1EKF原理简介 2.2 适用场合 2.3 使用注意事项 3.无迹kalman&#xff08;UKF&#xff09; 3.1UKF原理简介 3.2 UT变换 3.3 适用场合 4.粒子滤波PF 4.1 PF原理简介 4.2 适用场合 前…

对Kalman(卡尔曼)滤波器的理解

分类&#xff1a; 计算机视觉 转载过来的&#xff0c;觉得不错&#xff0c;原文 http://blog.csdn.net/lanbing510/article/details/8828109 1.简介(Brief Introduction) 在学习卡尔曼滤波器之前&#xff0c;首先看看为什么叫“卡尔曼”。跟其他著名的理论&#xff08;例如傅…

Kalman滤波通俗理解+实际应用

一、Kalman用于解决什么的问题&#xff1f; 卡尔曼滤波是一种利用线性系统状态方程&#xff0c;通过系统输入输出观测数据&#xff0c;对系统状态进行最优估计的算法。由于观测数据中包括系统中的噪声和干扰的影响&#xff0c;所以最优估计也可看作是滤波过程。 人话&#xff1…

IDEA开发及运行第一个Android项目

IDEA自动下载SDK、Gradle&#xff0c;保证能访问网络。 原来eclipse能使用的sdk&#xff0c;配到idea报错&#xff0c;就换成自动下载最新的了。 之前没成功可能是我防火墙禁用了上网。 新建项目 提示安装SDK 等待下载完成 继续建项目 选择手机或平板及目标设备API版本 选择…

怎么导入别人的android项目

到期末了好多同学都问我怎么把别人的安卓项目导进自己电脑里面&#xff0c;今天我来统一解答一下&#xff0c;希望有所帮助。 1.删除项目中原有的自动构建的文件 去到要导入项目的目录下把 .idea .gradle与build 三个文件夹&#xff0c;*.iml&#xff0c;local.properties删除…

android 开源项目:

android 开源项目&#xff1a; https://github.com/white-cat/ThinkAndroid 转自&#xff1a;http://glblong.blog.51cto.com/3058613/1354953 Android开源&#xff1a;数据库ORM框架GreenDao学习心得及使用总结 2014-01-26 23:40:01 标签&#xff1a; sqllite Android 开源…