什么是卡尔曼滤波器——基础理解
卡尔曼滤波器分类及基本公式

式上,卡尔曼滤波器是5条公式。
对于解决很大部分的问题,他是最优,效率最高甚至 是最有用的。他的广泛应用已经超过了30年,包括机器人 导航、控制,传感器数据融合甚至在军事方面的雷达系统 以及导弹追踪等等。而近年来更被应用于计算机图像处理,
例如头脸识别、图像分割、图像边缘检测等等。
卡尔曼滤波的特点
卡尔曼滤波的特点
你从温度计那里得到了 k时刻的温度值,假设是25 度,同时该
值的偏差是 4 度。
卡尔曼滤波的基本方程
例子
现在,我们用于估算K时刻房间的实际温度有两个温度值:估计值
23度和测量值25度。究竟实际温度是多少呢?是相信自己还是相信 温度计?究竟相信谁多一点?我们需要用他们的均方误差来判断。
52 因为, 2 2 H 0.78(*公式三),所以我们可以估算出K时 H 5 4 刻的最优温度值为:23 0.78* (25 23) 24.56 度(*公式四)。
度。
卡尔曼滤波的基本方程
例子
假如我们要估算 k 时刻的实际温度值。首先你要根据 k-1 时刻
的温度值,来预测 k 时刻的温度(K时刻的经验温度)。因为 你相信温度是恒定的,所以你会得到 k 时刻的温度预测值是跟 k-1 时刻一样的,假设是 23 度(*公式一),同时该值(预测 值)的高斯噪声的偏差是 5 度(5 是这样得到的:如果 k-1 时 刻估算出的最优温度值的偏差是 3,你对自己预测的不确定度 是 4 度,他们平方相加再开方,就是 5(*公式二)) 。然后,
Qk
为过程噪声的协方差,其为非负定阵; 为测量噪声的协方差,其为正定阵。
Rk
1 基于离散系统模型的卡尔曼滤波的基本公式 1.3 离散型卡尔曼滤波方程的一般形式
卡尔曼滤波器介绍 --- 最容易理解

10.6 卡尔曼滤波器简介本节讨论如何从带噪声的测量数据把有用信号提取出来的问题。
通常,信号的频谱处于有限的频率范围内,而噪声的频谱则散布在很广的频率范围内。
如前所述,为了消除噪声,可以把 FIR滤波器或IIR滤波器设计成合适的频带滤波器,进行频域滤波。
但在许多应用场合,需要进行时域滤波,从带噪声的信号中提取有用信号。
虽然这样的过程其实也算是对信号的滤波,但所依据的理论,即针对随机信号的估计理论,是自成体系的。
人们对随机信号干扰下的有用信号不能“确知”,只能“估计”。
为了“估计”,要事先确定某种准则以评定估计的好坏程度。
最小均方误差是一种常用的比较简单的经典准则。
典型的线性估计器是离散时间维纳滤波器与卡尔曼滤波器。
对于平稳时间序列的最小均方误差估计的第一个明确解是维纳在1942年2月首先给出的。
当时美国的一个战争研究团体发表了一个秘密文件,其中就包括维纳关于滤波问题的研究工作。
这项研究是用于防空火力控制系统的。
维纳滤波器是基于最小均方误差准则的估计器。
为了寻求维纳滤波器的冲激响应,需要求解著名的维纳-霍夫方程。
这种滤波理论所追求的是使均方误差最小的系统最佳冲激响应的明确表达式。
这与卡尔曼滤波(Kalman filtering)是很不相同的。
卡尔曼滤波所追求的则是使均方误差最小的递推算法。
在维纳进行滤波理论研究并导出维纳-霍夫方程的十年以前,在1931年,维纳和霍夫在数学上就已经得到了这个方程的解。
对于维纳-霍夫方程的研究,20世纪五十年代涌现了大量文章,特别是将维纳滤波推广到非平稳过程的文章甚多,但实用结果却很少。
这时正处于卡尔曼滤波问世的前夜。
维纳滤波的困难问题,首先在上世纪五十年代中期确定卫星轨道的问题上遇到了。
1958年斯韦尔林(Swerling)首先提出了处理这个问题的递推算法,并且立刻被承认和应用。
1960年卡尔曼进行了比斯韦尔林更有意义的工作。
他严格地把状态变量的概念引入到最小均方误差估计中来,建立了卡尔曼滤波理论。
卡尔曼滤波器介绍

卡尔曼滤波器介绍摘要在1960年,R.E.Kalman发表了关于递归解决线性离散数据滤波器的著名论文,从那时间起,由于在数字计算的大部分提高,Kalman滤波器已成为广泛研究和应用的学科,尤其是自动或辅助导航系统。
Kalman滤波器是一套数学等式,它提供了一种有效的以最小均方误差来估计系统状态的计算(递归的)方法。
它在以下几方面是非常强大的:它支持过去、现在、甚至将来估计,甚至在系统准确模型也未知的情况下。
本文的目的是提供一种对离散的Kalman滤波器的实用介绍。
这些介绍包括对基本离散kalman滤波器、起源和与之相关的简单(有形)的带有真实数字和结果的描述和讨论。
1、离散的kalman滤波器在1960年,R.E.Kalman发表了关于递归解决线性离散数据滤波器的著名论文,从那时间起,由于在数字计算的大部分提高,Kalman滤波器已成为广泛研究和应用的学科,尤其是自动或辅助导航系统。
关于kalman滤波器一般方法的友好介绍可以在〔maybeck79〕的Chapter.1中找到,但是更完整部分的讨论能在〔Sorenson70〕中发现,它还包括许多有趣的历史解释。
在〔Gelb74;Grewal93;Maybeck79;Lewis86;Brown92;jacobs93〕中有更多参考。
估值过程Kalman滤波器解决估计离散时间控制过程的状态X∈R n的一般性问题,定义线性随机差分方程其中,测量值Z∈R m,定义为随机变量W K和V K各自表示系统噪声和测量噪声,我们假定它们为相互独立的、白噪声且为正常概率分布在实际中,系统噪声协方差矩阵Q和测量噪声协方差矩阵R可能随过程和测量时间而改变,无论怎样,我们在这里假定它们是常量。
在差分方程(1.1)中,n×n阶矩阵A与前一时刻(K-1)和当前时刻K相关,这里缺少传递函数或系统噪声。
注意的是,在实际中,A可能随各自时刻改变,但这里我们假定其为常量,n×l阶矩阵R与非强制性输入U∈R l和状态x有关,在测量公式(1.2)中,m×n阶矩阵H 与状态及测量值Z K有关,在实际中,H可能随各自过程或测量时刻而改变,这里假定它们是常数。
卡尔曼滤波器原理

卡尔曼滤波器原理
卡尔曼滤波器是一种用于估计和预测系统状态的优秀滤波算法。
它基于状态空间模型,通过递归地融合测量值和预测值,提供了一个对系统状态更准确的估计。
卡尔曼滤波器的基本原理可以概括为以下几个步骤:
1. 初始化:首先,需要初始化系统的状态估计和协方差矩阵。
状态估计是对系统当前状态的最佳猜测,协方差矩阵则表示对该估计的不确定性。
2. 预测状态:根据系统的状态转移方程,将当前状态估计预测到下一个时刻的状态。
同时,也需要更新协方差矩阵以考虑预测带来的不确定性。
3. 更新状态:根据传感器测量值,通过观测方程将预测的状态估计和测量值进行比较,并计算出新的状态估计。
这个估计会综合预测的状态和测量的信息,以最佳地反映系统的真实状态。
4. 更新协方差矩阵:除了更新状态估计外,还需要更新协方差矩阵,以反映状态估计的不确定性。
这个更新是基于卡尔曼增益,它可以根据系统的状态估计和测量噪声的特性来权衡两者的重要性。
通过不断地进行预测和更新,卡尔曼滤波器可以在时间上优化系统状态的估计。
它最大限度地利用了观测值和模型的信息,让我们能够更准确地了解系统的实际状态。
需要注意的是,卡尔曼滤波器假设系统的状态变化和测量噪声都符合高斯分布,且系统的状态转移和观测方程是线性的。
在实际应用中,如果系统有非线性部分,可以采用扩展卡尔曼滤波器或无迹卡尔曼滤波器等扩展形式。
卡尔曼滤波

卡尔曼滤波卡尔曼滤波(Kalman filtering ) 一种利用线性系统状态方程,通过系统输入输出观测数据,对系统状态进行最优估计的算法。
由于观测数据中包括系统中的噪声和干扰的影响,所以最优估计也可看作是滤波过程。
斯坦利施密特(Stanley Schmidt)首次实现了卡尔曼滤波器。
卡尔曼在NASA埃姆斯研究中心访问时,发现他的方法对于解决阿波罗计划的轨道预测很有用,后来阿波罗飞船的导航电脑使用了这种滤波器。
关于这种滤波器的论文由Swerli ng (1958), Kalman (I960) 与Kalma n and Bucy (1961) 发表。
数据滤波是去除噪声还原真实数据的一种数据处理技术,Kalman滤波在测量方差已知的情况下能够从一系列存在测量噪声的数据中,估计动态系统的状态•由于,它便于计算机编程实现,并能够对现场采集的数据进行实时的更新和处理,Kalman滤波是目前应用最为广泛的滤波方法,在通信,导航,制导与控制等多领域得到了较好的应用•中文名卡尔曼滤波器,Kalman滤波,卡曼滤波外文名KALMAN FILTER表达式X(k)=A X(k-1)+B U(k)+W(k)提岀者斯坦利施密特提岀时间1958应用学科天文,宇航,气象适用领域范围雷达跟踪去噪声适用领域范围控制、制导、导航、通讯等现代工程斯坦利施密特(Stanley Schmidt)首次实现了卡尔曼滤波器。
卡尔曼在NASA埃姆斯研究中心访问时,发现他的方法对于解决阿波罗计划的轨道预测很有用,后来阿波罗飞船的导—航电脑使用了这种滤波器。
关于这种滤波器的论文由Swerling (1958), Kalman (1960)与Kalma n and Bucy (1961) 发表。
2定义传统的滤波方法,只能是在有用信号与噪声具有不同频带的条件下才能实现. 20世纪40年代,N .维纳和A. H .柯尔莫哥罗夫把信号和噪声的统计性质引进了滤波理论,在假设信号和噪声都是平稳过程的条件下,利用最优化方法对信号真值进行估计,达到滤波目的,从而在概念上与传统的滤波方法联系起来,被称为维纳滤波。
卡尔曼滤波的原理说明(通俗易懂)

卡尔曼滤波的原理说明(通俗易懂)以下是为大家整理的卡尔曼滤波的原理说明(通俗易懂)的相关范文,本文关键词为尔曼,滤波,原理,说明,通俗易懂,尔曼,滤波,原理,说明,学,您可以从右上方搜索框检索更多相关文章,如果您觉得有用,请继续关注我们并推荐给您的好友,您可以在综合文库中查看更多范文。
卡尔曼滤波的原理说明在学习卡尔曼滤波器之前,首先看看为什么叫“卡尔曼”。
跟其他著名的理论(例如傅立叶变换,泰勒级数等等)一样,卡尔曼也是一个人的名字,而跟他们不同的是,他是个现代人!卡尔曼全名RudolfemilKalman,匈牙利数学家,1930年出生于匈牙利首都布达佩斯。
1953,1954年于麻省理工学院分别获得电机工程学士及硕士学位。
1957年于哥伦比亚大学获得博士学位。
我们现在要学习的卡尔曼滤波器,正是源于他的博士论文和1960年发表的论文《AnewApproachtoLinearFilteringandpredictionproblems》(线性滤波与预测问题的新方法)。
如果对这编论文有兴趣,可以到这里的地址下载:/~welch/kalman/media/pdf/Kalman1960.pdf 简单来说,卡尔曼滤波器是一个“optimalrecursivedataprocessingalgorithm(最优化自回归数据处理算法)”。
对于解决很大部分的问题,他是最优,效率最高甚至是最有用的。
他的广泛应用已经超过30年,包括机器人导航,控制,传感器数据融合甚至在军事方面的雷达系统以及导弹追踪等等。
近年来更被应用于计算机图像处理,例如头脸识别,图像分割,图像边缘检测等等。
2.卡尔曼滤波器的介绍(IntroductiontotheKalmanFilter)为了可以更加容易的理解卡尔曼滤波器,这里会应用形象的描述方法来讲解,而不是像大多数参考书那样罗列一大堆的数学公式和数学符号。
但是,他的5条公式是其核心内容。
结合现代的计算机,其实卡尔曼的程序相当的简单,只要你理解了他的那5条公式。
卡尔曼滤波器简介

3 卡尔曼滤波器的简介3.1 卡尔曼滤波器的概述卡尔曼滤波器[4]由一系列递归数学公式描述,它们提供了一种高效可计算的方法来估计过程的状态,并使估计均方误差最小。
卡尔曼滤波器应用广泛且功能强大,它可以估计信号的过去和当前状态,甚至能估计将来的状态,即使并不知道模型的确切性质。
假设我们要研究的对象是一个房间的温度。
根据你的经验判断,这个房间的温度是恒定的,也就是下一分钟的温度等于现在这一分钟的温度(假设我们用一分钟来做时间单位)。
假设你对你的经验不是100%的相信,可能会有上下偏差几度。
我们把这些偏差看成是高斯白噪声(White Gaussian Noise ),也就是这些偏差跟前后时间是没有关系的而且符合高斯分配(Gaussian Distribution )。
另外,我们在房间里放一个温度计,但是这个温度计也不准确的,测量值会比实际值偏差。
我们也把这些偏差看成是高斯白噪声。
现在对于某一分钟我们有两个有关于该房间的温度值:你根据经验的预测值(系统的预测值)和温度计的值(测量值)。
下面我们要用这两个值结合他们各自的噪声来估算出房间的实际温度值。
假如我们要估算k 时刻的是实际温度值。
首先你要根据1k -时刻的温度值,来预测k 时刻的温度。
因为你相信温度是恒定的,所以你会得到k 时刻的温度预测值是跟1k -时刻一样的,假设是23度,同时该值的高斯噪声的偏差是5度(5是这样得到的:如果1k -时刻估算出的最优温度值的偏差是3,你对自己预测的不确定度是4度,他们平方相加再开方,就是5)。
然后,你从温度计那里得到了k 时刻的温度值,假设是25度,同时该值的偏差是4度。
由于我们用于估算k 时刻的实际温度有两个温度值,分别是23度和25度。
究竟实际温度是多少呢?相信自己还是相信温度计呢?究竟相信谁多一点,我们可以用他们的协方差来判断。
因为252(5242)Kg ∧∧∧∧=+,所以0.78Kg =,我们可以估算出k 时刻的实际温度值是:230.78(2523)24.56+*-=度。
卡尔曼滤波器分类及基本公式概要课件

精确地描述系统的非线性特性。
无迹卡尔曼滤波器的计算较为复杂,但具有更高的估计精度和
03
稳定性,适用于一些高精度要求的非线性系统状态估计。
03
卡尔曼滤波器的基本公 式
状态方程
描述系统状态变化的数学表达式。
状态方程是描述系统状态变化的数学表达式,它基于系统的动态模型和当前状态 ,计算未来状态。在卡尔曼滤波器中,状态方程用于预测系统的下一个状态。
详细描述
卡尔曼增益矩阵的计算基于状态向量和误差 协方差矩阵,通过一系列数学运算得到。它 反映了新获取的测量值对状态估计的贡献程 度,以及旧信息的保留程度。在计算过程中 ,通常采用递推或迭代的方式进行计算,以 降低计算复杂度。
更新状态向量和误差协方差矩阵
总结词
在得到卡尔曼增益矩阵后,需要利用它来更 新状态向量和误差协方差矩阵,以完成一次 滤波过程。0203 Nhomakorabea改进
针对不同应用场景和需求,卡尔曼滤 波器不断有新的改进和优化算法出现 。
滤波器的应用领域
航空航天
卡尔曼滤波器在航空航天领域 中用于导航、姿态估计和卫星
轨道计算等。
无人驾驶
卡尔曼滤波器在无人驾驶汽车 中用于传感器数据处理、路径 规划和障碍物检测等。
机器人
卡尔曼滤波器在机器人领域中 用于定位、地图构建和姿态控 制等。
02
扩展卡尔曼滤波器通过将非线性函数进行线性化处 理,将非线性问题转化为线性问题进行解决。
03
扩展卡尔曼滤波器的计算相对复杂,但适用范围较 广,适用于大多数非线性系统的状态估计。
无迹卡尔曼滤波器
01
无迹卡尔曼滤波器是另一种针对非线性系统的改进型卡尔曼滤 波器。
02
无迹卡尔曼滤波器采用无迹变换方法处理非线性函数,能够更
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.什么是卡尔曼滤波器在学习卡尔曼滤波器之前,首先看看为什么叫“卡尔曼”。
卡尔曼是一个人的名字。
卡尔曼全名Rudolf Emil Kalman,1957年于哥伦比亚大学获得博士学位。
我们现在要学习的卡尔曼滤波器,正是源于他的博士论文和1960年发表的论文《A New Approach to Linear Filtering and Prediction Problems》(线性滤波与预测问题的新方法)。
简单来说,卡尔曼滤波器是一个“optimal recursive data processing algorithm(最优化自回归数据处理算法)”。
对于解决很大部分的问题,他是最优,效率最高甚至是最有用的。
他的广泛应用已经超过30年,包括机器人导航,控制,传感器数据融合甚至在军事方面的雷达系统以及导弹追踪等等。
近年来更被应用于计算机图像处理,例如头脸识别,图像分割,图像边缘检测等等。
2.卡尔曼滤波器的介绍为了可以更加容易的理解卡尔曼滤波器,这里会应用形象的描述方法来讲解,而不是像大多数参考书那样罗列一大堆的数学公式和数学符号。
但是,他的5条公式是其核心内容。
结合现代的计算机,其实卡尔曼的程序相当的简单,只要你理解了他的那5条公式。
在介绍他的5条公式之前,先让我们来根据下面的例子一步一步的探索。
假设我们要研究的对象是一个房间的温度。
根据你的经验判断,这个房间的温度是恒定的,也就是下一分钟的温度等于现在这一分钟的温度(假设我们用一分钟来做时间单位)。
假设你对你的经验不是100%的相信,可能会有上下偏差几度。
我们把这些偏差看成是高斯白噪声(White Gaussian Noise),也就是这些偏差跟前后时间是没有关系的而且符合高斯分配(Gaussian Distribution)。
另外,我们在房间里放一个温度计,但是这个温度计也不准确的,测量值会比实际值偏差。
我们也把这些偏差看成是高斯白噪声。
(所谓高斯白噪声中的高斯是指概率分布是正态函数,而白噪声是指它的二阶矩不相关,一阶矩为常数,是指先后信号在时间上的相关性。
这是考查一个信号的两个不同方面的问题。
高斯白噪声:如果一个噪声,它的幅度分布服从高斯分布,而它的功率谱密度又是均匀分布的,则称它为高斯白噪声。
)好了,现在对于某一分钟我们有两个有关于该房间的温度值:你根据经验的预测值(系统的预测值)和温度计的值(测量值)。
下面我们要用这两个值结合他们各自的噪声来估算出房间的实际温度值。
假如我们要估算k时刻的是实际温度值。
首先你要根据k-1时刻的温度值,来预测k时刻的温度。
因为你相信温度是恒定的,所以你会得到k时刻的温度预测值是跟k-1时刻一样的,假设是23度,同时该值的高斯噪声的偏差是5度(5是这样得到的:如果k-1时刻估算出的最优温度值的偏差是3,你对自己预测的不确定度是4度,他们平方相加再开方,就是5)。
然后,你从温度计那里得到了k时刻的温度值,假设是25度,同时该值的偏差是4度。
由于我们用于估算k时刻的实际温度有两个温度值,分别是23度和25度。
究竟实际温度是多少呢?相信自己还是相信温度计呢?究竟相信谁多一点,我们可以用他们的covariance(协方差)来判断。
因为Kg^2=5^2/(5^2+4^2),所以Kg=0.78,我们可以估算出k 时刻的实际温度值是:23+0.78*(25-23)=24.56度。
可以看出,因为温度计的covariance比较小(比较相信温度计),所以估算出的最优温度值偏向温度计的值。
现在我们已经得到k时刻的最优温度值了,下一步就是要进入k+1时刻,进行新的最优估算。
到现在为止,好像还没看到什么自回归的东西出现。
对了,在进入k+1时刻之前,我们还要算出k时刻那个最优值(24.56度)的偏差。
算法如下:((1-Kg)*5^2)^0.5=2.35。
这里的5就是上面的k时刻你预测的那个23度温度值的偏差,得出的2.35就是进入k+1时刻以后k时刻估算出的最优温度值的偏差(对应于上面的3)。
就是这样,卡尔曼滤波器就不断的把covariance递归,从而估算出最优的温度值。
他运行的很快,而且它只保留了上一时刻的covariance。
上面的Kg,就是卡尔曼增益(Kalman Gain)。
他可以随不同的时刻而改变他自己的值,是不是很神奇!下面就要言归正传,讨论真正工程系统上的卡尔曼。
3.卡尔曼滤波器算法在这一部分,我们就来描述源于Dr Kalman的卡尔曼滤波器。
下面的描述,会涉及一些基本的概念知识,包括概率(Probability),随即变量(Random Variable),高斯或正态分配(Gaussian Distribution)还有State-space Model(状态空间)等等。
但对于卡尔曼滤波器的详细证明,这里不能一一描述。
首先,我们先要引入一个离散控制过程的系统。
该系统可用一个线性随机微分方程(Linear Stochastic Difference equation)来描述:X(k)=A X(k-1)+B U(k)+W(k)再加上系统的测量值:Z(k)=H X(k)+V(k)上两式子中,X(k)是k时刻的系统状态,U(k)是k时刻对系统的控制量。
A和B是系统参数,对于多模型系统,他们为矩阵。
Z(k)是k时刻的测量值,H是测量系统的参数,对于多测量系统,H为矩阵。
W(k)和V(k)分别表示过程和测量的噪声。
他们被假设成高斯白噪声(White Gaussian Noise),他们的covariance分别是Q,R(这里我们假设他们不随系统状态变化而变化)。
对于满足上面的条件(线性随机微分系统,过程和测量都是高斯白噪声),卡尔曼滤波器是最优的信息处理器。
下面我们来用他们结合他们的covariances来估算系统的最优化输出(类似上一节那个温度的例子)。
首先我们要利用系统的过程模型,来预测下一状态的系统。
假设现在的系统状态是k,根据系统的模型,可以基于系统的上一状态而预测出现在状态:X(k|k-1)=A X(k-1|k-1)+B U(k) (1)式(1)中,X(k|k-1)是利用上一状态预测的结果,X(k-1|k-1)是上一状态最优的结果,U(k)为现在状态的控制量,如果没有控制量,它可以为0。
到现在为止,我们的系统结果已经更新了,可是,对应于X(k|k-1)的covariance还没更新。
我们用P表示covariance:P(k|k-1)=A P(k-1|k-1)A’+Q (2)式(2)中,P(k|k-1)是X(k|k-1)对应的covariance,P(k-1|k-1)是X(k-1|k-1)对应的covariance,A’表示A的转置矩阵,Q是系统过程的covariance。
式子1,2就是卡尔曼滤波器5个公式当中的前两个,也就是对系统的预测。
现在我们有了现在状态的预测结果,然后我们再收集现在状态的测量值。
结合预测值和测量值,我们可以得到现在状态(k)的最优化估算值X(k|k):X(k|k)=X(k|k-1)+Kg(k)(Z(k)-H X(k|k-1)) (3)其中Kg为卡尔曼增益(Kalman Gain):Kg(k)=P(k|k-1)H’/(H P(k|k-1)H’+R) (4)到现在为止,我们已经得到了k状态下最优的估算值X(k|k)。
但是为了要另卡尔曼滤波器不断的运行下去直到系统过程结束,我们还要更新k状态下X(k|k)的covariance:P(k|k)=(I-Kg(k)H)P(k|k-1) (5)其中I为1的矩阵,对于单模型单测量,I=1。
当系统进入k+1状态时,P(k|k)就是式子(2)的P(k-1|k-1)。
这样,算法就可以自回归的运算下去。
卡尔曼滤波器的原理基本描述了,式子1,2,3,4和5就是他的5个基本公式。
根据这5个公式,可以很容易的实现计算机的程序。
下面,我会用程序举一个实际运行的例子。
4.简单例子(A Simple Example)这里我们结合第二第三节,举一个非常简单的例子来说明卡尔曼滤波器的工作过程。
所举的例子是进一步描述第二节的例子,而且还会配以程序模拟结果。
根据第二节的描述,把房间看成一个系统,然后对这个系统建模。
当然,我们见的模型不需要非常地精确。
我们所知道的这个房间的温度是跟前一时刻的温度相同的,所以A=1。
没有控制量,所以U(k)=0。
因此得出:X(k|k-1)=X(k-1|k-1) (6)式子(2)可以改成:P(k|k-1)=P(k-1|k-1) +Q (7)因为测量的值是温度计的,跟温度直接对应,所以H=1。
式子3,4,5可以改成以下:X(k|k)= X(k|k-1)+Kg(k) (Z(k)-X(k|k-1)) (8)Kg(k)= P(k|k-1) / (P(k|k-1) + R) (9)P(k|k)=(1-Kg(k))P(k|k-1) (10)现在我们模拟一组测量值作为输入。
假设房间的真实温度为25度,我模拟了200个测量值,这些测量值的平均值为25度,但是加入了标准偏差为几度的高斯白噪声(在图中为蓝线)。
为了令卡尔曼滤波器开始工作,我们需要告诉卡尔曼两个零时刻的初始值,是X(0|0)和P(0|0)。
他们的值不用太在意,随便给一个就可以了,因为随着卡尔曼的工作,X会逐渐的收敛。
但是对于P,一般不要取0,因为这样可能会令卡尔曼完全相信你给定的X(0|0)是系统最优的,从而使算法不能收敛。
我选了X(0|0)=1度,P(0|0)=10。
该系统的真实温度为25度,图中用黑线表示。
图中红线是卡尔曼滤波器输出的最优化结果(该结果在算法中设置了Q=1e-6,R=1e-1)。
××××××××××××××××××加入了标准偏差为几度的高斯白噪声(在图中为蓝线)红线是卡尔曼滤波器输出的最优化结果(该结果在算法中设置了Q=1e-6,R=1e-1)附matlab下面的kalman滤波程序:clearN=200;w(1)=0;w=randn(1,N)x(1)=0;a=1;for k=2:N;x(k)=a*x(k-1)+w(k-1); endV=randn(1,N);q1=std(V);Rvv=q1.^2;q2=std(x);Rxx=q2.^2;q3=std(w);Rww=q3.^2;c=0.2;Y=c*x+V;p(1)=0;s(1)=0;for t=2:N;p1(t)=a.^2*p(t-1)+Rww;b(t)=c*p1(t)/(c.^2*p1(t)+Rvv);s(t)=a*s(t-1)+b(t)*(Y(t)-a*c*s(t-1)); p(t)=p1(t)-c*b(t)*p1(t);endt=1:N;plot(t,s,'r',t,Y,'g',t,x,'b');。