目录

一:卡尔曼滤波器的信号模型[1-2]

二:其他方程及变量介绍

三:卡尔曼滤波器递推公式

四:matlab仿真[3]

参考文献:


引言:在进行一些信号处理的过程中,我们通常会采集到一些数据,但是实际测量到的数据是受到噪声干扰了之后的,故与真实的数据有一些偏差。因此我们把 [ 通过测量数据进行一系列处理得到近似于真实数据 ] 的过程( 或利用测量数据估计得到近似于真实数据的过程 )称为 [ 估计 ] 。

其中 [ 波形估计 ] 也是一种估计,它是估计的一个波形( 即一系列数据 ),是很重要的一种工具,在目标跟踪,轨迹跟踪等方面具有很重要的应用。一般波形估计是通过一组数据得到另一组数据,就像是一组数据通过了一个滤波器,得到另一组数据。故经常会听到 [维纳滤波器]、[卡尔曼滤波器] 等词汇。

本文讲解卡尔曼滤波器,连续的卡尔曼滤波器在计算机应用中没有多大意义,故一般说到的卡尔曼滤波器都是离散卡尔曼滤波器。

一:卡尔曼滤波器的信号模型[1-2]

卡尔曼滤波器的信号模型是由状态方程和观测方程组成的,具体的纯公式推导不太好理解,故在此直接用例子来说明:

设目标匀加速度从原点开始作直线运动,考虑到加速度可能会受到时变扰动,写出该例子的信号模型。

状态方程:本例子中,目标距离、目标速度、加速度为三个状态,其中加速度受到的时变扰动为。有:

符号解释:

代表k时刻的距离,代表k-1时刻的距离。其他的类似,卡尔曼滤波器就是不断利用前一时刻的值去估计下一时刻,不断地递推;

表示在k-1时刻目标运动加速度收到的扰动噪声 ( 在这里我们可以认为在路面上匀加速的车受到了风的吹动,这个风就是噪声 ) 。

将上式写成矩阵形式如下:

表示时刻目标运动的三个状态量构成三位状态矢量。

符号解释:

表示一步状态转移矩阵。代表k时刻的状态可由前一时刻的状态,并考虑噪声矢量推的;

表示控制矩阵。反映了k-1时刻扰动噪声矢量对系统状态矢量影响程度的矩阵。

写成矩阵形式有:

以上状态方程说明了,可以由前一时刻推的后一时刻的状态,故该式又被称作 [ 一步状态递推公式 ] 。换句话说:我们也可以根据该时刻(k)的状态值去预测下一时刻(k+1)状态值,因为是[预测值]所以不准确,故需要 [ 修正项 ] 去修正,而预测值怎么得来就和下面的 [ 观测值 ] 有关系了。

(还需要注意的一点是,在上述的状态方程中都是确定值,或者说实际值,但是实际当中我们是不知道实际值的,我们需要的就是实际值,所以实际应用中用的状态值都是估计值)

下面来看观测方程,虽然观测值我们是直接得到具体的值,但是因为已经用状态矢量来表示各状态变量,所以在观测方程当中只能用状态矢量。这样在直接测距情况下的目标运动观测方程为:

​​​​​​​        ​​​​​​​        ​​​​​​​​​​​​​​        ​​​​​​​

其中:

,代表观测矩阵,是已知的,随着不同场景发生改变。

就是k时刻的运动目标距离测量数据;

是观测噪声。

上述也说了观测值要作为修正项,具体怎么修正,还需要一些条件。

二:其他方程及变量介绍

1、状态滤波:

该公式类似于状态方程(不考虑噪声),但是却多了等式右边的第二项。上文也提到了,上式右边第一项是预测值,不准确,因此需要修正项去修正。

其中:

,本时刻经过修正之后的值(或者称作状态滤波值,最终估计值)。我们最终得到的就是这个。

是卡尔曼增益,后面给出计算公式。

2、状态滤波的均方误差阵,反映了状态滤波的精度。用来计算卡尔曼增益。

3、状态一步预测:1式中的右边第一项可以写成:。其中,是根据本时刻的滤波值去预测下一时刻的值得到的 [ 状态一步预测值 ],这里也进一步细说了预测值和最终估计值的符号的不同。

4、状态一步预测的均方误差阵。反映了一步预测值的精度。用来计算卡尔曼增益。

三:卡尔曼滤波器递推公式

上述也讲述了很多关于卡尔曼滤波器的公式,为了更直观,给出下图的公式表:

上图中的大部分公式已经提过,其中的符号也都解释了。下面讲述各分量在递推过程中的关系,下面看图:

该图其实可以分成两部分观看,第一部充(Ⅰ)(Ⅱ)(Ⅲ)是不断递推求卡尔曼增益的过程。第二部分(Ⅳ)(Ⅴ)是修正和预测下一步的过程。

还需要注意一点的是:是需要自己设定的。可以参考下图:

四:matlab仿真[3]

上述所讲述的是状态为矢量的卡尔曼滤波器。在这里仿真了一个状态为标量时的离散卡尔曼滤波器,标量状态的卡尔曼滤波器就比矢量的简单得多了,不用考虑什么矩阵矢量了就是将上述的都变成标量。

温度测量:

仿真图:

其中黑点是温度在24摄氏度上下漂移的结果,是测量值,经过卡尔曼滤波器之后得到蓝色的线即状态滤波结果。可以看到很不戳!

代码:

%定义超参数
Q=4e-4;
R=0.25;%定义观测数据维数
mn=[4000,1];%仿真测量值
X=24+sqrt(R)*randn(mn);%定义迭代初始参数
S_K1=zeros(mn);%一步预测状态值
S_K=zeros(mn); %滤波器输出值(一步滤波值经过修正之后)
K=zeros(mn);   %卡尔曼增益
M_K1=zeros(mn);%一步预测状态值协方差矩阵
M_K=zeros(mn); %滤波器输出值协方差矩阵M_K(1)=1;
S_K(1)=23.3;%kman核心算法
for n=2:over%时间更新S_K1(n)=S_K(n-1);   %一步预测M_K1(n)=M_K(n-1)+Q; %一步预测均方差矩阵%状态更新K(n)=M_K1(n)/(M_K1(n)+R);S_K(n)=S_K1(n)+K(n)*(X(n)-S_K1(n));M_K(n)=(1-K(n))*M_K1(n);
end%绘图
LineWidth=2;plot (X, 'k+');%画出温度计的测量值
hold on;plot (S_K, 'b-')%画出最优估计值
hold off

参考文献:

[1] 赵树杰.赵建勋.信号检测于估计理论.清华大学出版社。

[2]

https://www.bilibili.com/video/BV1Rh41117MT?spm_id_from=333.337.search-card.all.clickhttps://www.bilibili.com/video/BV1Rh41117MT?spm_id_from=333.337.search-card.all.click[3]https://www.bilibili.com/video/BV1WZ4y1F7VN?spm_id_from=333.337.search-card.all.clickhttps://www.bilibili.com/video/BV1WZ4y1F7VN?spm_id_from=333.337.search-card.all.click

卡尔曼滤波器原理讲解及其matlab实现相关推荐

  1. 【Matlab】扩展卡尔曼滤波器原理及仿真(初学者入门专用)

    文章目录 0.引言及友情链接 1.场景预设 2.扩展卡尔曼滤波器 3.仿真及效果 0.引言及友情链接 \qquad卡尔曼滤波器(Kalman Filter, KF)是传感器融合(Sensor Fusi ...

  2. 卡尔曼滤波器求速度matlab,卡尔曼滤波器算法浅析及matlab实战

    原标题:卡尔曼滤波器算法浅析及matlab实战 作者:Liu_LongPo 出处:Liu_LongPo的博客 卡尔曼滤波器是一种利用线性系统状态方程,通过系统输入输出观测数据,对系统状态进行最优估计的 ...

  3. 【UWB】Savitzky Golay filter SG滤波器原理讲解

    文章目录 简介 推导 举例 最小二乘法原理 Ref: 关于 Matlab 程序的操作请参考:[UWB]Savitzky Golay filter SG滤波器快速入门并上手使用 简介 Savitzky- ...

  4. 经典卡尔曼滤波器直接调用代码(Matlab)

    clc,clear; %以下开始进行交互式输入等操作 paraZkstr = inputdlg('请输入观测变量矩阵(每一列是一次观测向量):','状态参数',1,{'[0 0.1 0.5 0.8;0 ...

  5. 由浅入深的扩展卡尔曼滤波器教程

    本篇译文翻译自 The Extended Kalman Filter : An Interactive Turorial for Non-Experts. 原文 本文惯例及说明 : 译文中的Demo请 ...

  6. 【MATLAB】卡尔曼滤波器的原理及仿真(初学者专用)

    文章目录 0.引言 1.场景预设 2.卡尔曼滤波器 3.仿真及效果 0.引言 \qquad 本文参考了Matlab对卡尔曼滤波器的官方教程及帮助文档(Kalman Filter).官方教程的B站链接如 ...

  7. kalman filter卡尔曼滤波器- 数学推导和原理理解-----网上讲的比较好的kalman filter和整理、将预测值和观测值融和...

    = 参考/转自: 1 ---https://blog.csdn.net/u010720661/article/details/63253509 2----http://www.bzarg.com/p/ ...

  8. 【信号处理】基于扩展卡尔曼滤波器和无迹卡尔曼滤波器的窄带信号时变频率估计(Matlab代码实现)

    目录 1 概述 2 数学模型 3 运行结果 4 结论 5 参考文献 6 Matlab代码实现 1 概述 本文讲解和比较了基于卡尔曼滤波器的频率跟踪方法的能力,例如扩展卡尔曼滤波器 (EKF) 和无味卡 ...

  9. 六.卡尔曼滤波器开发实践之六: 无损卡尔曼滤波器(UKF)进阶-白话讲解篇

    本系列文章主要介绍如何在工程实践中使用卡尔曼滤波器,分七个小节介绍: 一.卡尔曼滤波器开发实践之一: 五大公式 二.卡尔曼滤波器开发实践之二:  一个简单的位置估计卡尔曼滤波器 三.卡尔曼滤波器(EK ...

最新文章

  1. docker nginx 简单的代理设置
  2. 自学python方法-零基础初学Python人工智能的四种学习方法
  3. 【2017-11-26】Linq表连接查询
  4. Verilog RTL 代码设计示例
  5. word2016配置Mathtype
  6. DFTug - Architecture Your Test Design
  7. linux相对路径列出目录文件,linux – UNIX:列出目录中具有相对路径的文件
  8. linux中的压缩命令详细解析(一)
  9. P2408 不同子串个数 SAM
  10. Sharepoin学习笔记—架构系列--03 Sharepoint的处理(Process)与执行模型(Trust Model) 2
  11. Spring实用系列-深入了解SpringMVC OncePerRequestFilter过滤器原理
  12. 运算符的优先级和结合性
  13. 【奇淫巧技】打狗棒法---过安全狗注入手法
  14. 系统目录 linux命令,linux基础命令之系统目录(示例代码)
  15. string是python内置函数吗_Python 字符串与内置函数(方法)
  16. python一个函数调用另一个函数_python下如何在目录下让Python文件去调用另一个文件内的函数或类...
  17. 模板建网站-开源工具
  18. Mac新手使用技巧——Mac音量调节
  19. 单片机关于protues中数码管的显示
  20. NodeJS解析前端请求图片链接,将服务器目录下的图片返回给前端用于页面展示

热门文章

  1. 视频直播软件开发关于亚马逊s3接入方式,视频直播源码创建存储桶方法
  2. TSO与GSO简单区分
  3. java 批量删除_Java中怎样实现批量删除操作?
  4. 正则 提取 url 中 的 用户名 和 密码
  5. virtualbox四种网络连接方式及其设置方法
  6. 深入理解减脂减肥——饮食篇
  7. 机器学习和深度学习 习题训练 Day-1
  8. java支持库 易语言_易语言支持库简单安装加载添加
  9. 未能成功加载扩展程序
  10. 简单题-不用库函数,求解一个数字的平方根