现代信号处理 06 - 卡尔曼滤波

Posted Ciaran-byte

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了现代信号处理 06 - 卡尔曼滤波相关的知识,希望对你有一定的参考价值。

卡尔曼滤波

1. 问题引入

  我们研究的问题一般都是从观测数据入手。我们观测的对象是一组随机变量,我们需要用这组随机变量与估计另外一个随机变量

O b s e r v a t i o n : ( Z 1 , . . . , Z n ) − > Y Observation:(Z_1,...,Z_n) -> Y Observation:(Z1,...,Zn)>Y

  我们以前学习到的估计方法,都是一些直接的方法。我们试图构造一个估计,直接通过我们的观测数据,去逼近我们的随机变量。我们通常会构造一个滤波器,输入就是我们的观测数据,输出就是我们得到的近似值。而维纳滤波器就是最优的线性估计

g ( Z 1 , . . , Z n ) = > Y → H → Y ^  Direct Method g(Z_1,..,Z_n)=> Y \\rightarrow \\boxed{H} \\rightarrow \\hat Y \\text{ Direct Method} g(Z1,..,Zn)=>YHY^ Direct Method

  但是使用这种估计的思路是有一些问题的。因为这是一种黑箱的思想。一般来说,我们估计的对象对观测数据是有影响的,但是我们的观测数据是怎么来的,我们并不关心,我们把观测数据和估计变量之间的关系当做黑箱,我们只关心输入和输出。

  我们是采用这样的思路在进行信号处理

Y → H 1 → Z ↖ H 2 ↙ \\begin{matrix} Y & \\rightarrow & \\boxed{H_1} & \\rightarrow & Z \\\\ \\\\ & \\nwarrow & \\boxed{H_2}& \\swarrow & \\end{matrix} YH1H2Z

  本来有一个随机变量Y,会通过某种规律产生观测数据Z。这是一个系统,但是我们并不需要关心这个系统是怎么样的。我们的处理方法是这样的,我们根据观测数据,重新构造了一个系统H2,然后把输入和输出联系在了一起。

  这种方法的缺陷在于,通常我们研究某个问题的时候是有先验知识的,比如物理规律,化学反应等等。我们的估计方法直接把输入和输出关联在了一起,但是并不需要使用先验知识,只是通过统计学规律实现的。

  但是现在,我们希望从观测数据出发,了解引起观测数据变化的系统到底是怎么样子的,我们希望能够使用我们的先验知识做点什么。

2. Kalman Filter

2.1 模型建立–状态空间

  我们现在希望从黑箱入手,找到具体的系统结构,不仅仅满足于把输入和输出关系当做着眼点,把变量Y对观测数据Z的影响当做黑箱。我们想要了解这个具体的影响是什么,我们要对黑箱进行建模。

  我们要建立的模型就是状态空间模型。我们在学习信号与系统的时候,其实就有状态空间的概念了。状态空间和传递函数都是对系统描述的方法。

  状态空间和传递函数是有本质区别的。传递函数关注的是输入和输出的关系,对系统内部结构视而不见,只是把系统看成了黑箱。状态空间关注的是系统内部的结构。状态空间的建立能够用上我们的先验知识,不然统计信号处理就与科学和工程脱节了。

  建立状态空间模型涉及到两个方程。第一个方程叫做状态方程,第二个方程叫做观测方程。

State Space Model { Z n + 1 = f ( Z n , V n ) State Equation Y n = g ( Z n , W n ) Observation Equation \\text{State Space Model} \\\\ \\begin{cases} Z_{n+1} = f(Z_n,V_n) & \\text{State Equation} \\\\ Y_n = g(Z_n,W_n) & \\text{Observation Equation} \\end{cases} State Space Model{Zn+1=f(Zn,Vn)Yn=g(Zn,Wn)State EquationObservation Equation
  其中Vn是状态噪声,Wn是观测噪声

{ Z n + 1 = f ( Z n , V n , I n ) State Equation Y n = g ( Z n , W n ) Observation Equation \\begin{cases} Z_{n+1} = f(Z_n,V_n,I_n) & \\text{State Equation} \\\\ Y_n = g(Z_n,W_n) & \\text{Observation Equation} \\end{cases} {Zn+1=f(Zn,Vn,In)Yn=g(Zn,Wn)State EquationObservation Equation
  一般来说,状态方程会有一个输入变量。但是很多时候会把输入变量给忽略。我们认为决定系统输出的关键,也许并不在输入上,而是状态Z。这是系统内部的属性。

  状态Z具有两个特性

  • 真正的决定了系统的性质,状态有自己的运行发展规律,随着时间变化,状态也发生变化,影响系统的发生机制。状态有自身的运行发展规律。状态的演化决定了系统内部的运行机制。
  • 状态往往不能直接被观测到

  状态从外部看不到,但是又很重要,我们怎么得到状态呢?我们有一个观测,观测代表一个过程,可以通过状态得到我们的观测。这个过程就是窥探系统内部结构的窗口,就能够获得关于系统内部的某种认识。

  状态是不可观测的,但是又说状态能够被看到,我们看到的是什么?

  我们实际上是在对系统进行建模,我们对系统进行建模的时候,就能够用上我们的先验知识(自然界基本运行规律,专业知识等)。但是,我们在建模的同时,尽管状态是按照模型在演化,但是我们不能直接观测到这个状态。我们观测到的仅仅是一个侧面

  现在我们对信号处理的任务就改变了,我们希望能够通过得到的观测数据,找到系统的状态变化。一旦系统状态变化找到了,我们就把系统内部变化的规律给找到了。

{ Y 1 , . . . , Y n } → { Z 1 , . . . , Z n } \\{Y_1,...,Y_n\\} \\rightarrow \\{Z_1,...,Z_n \\} {Y1,...,Yn}{Z1,...,Zn}

  一般来说,状态空间模型中是有噪声的,我们在做信号处理的时候,一方面要注重,通过观测数据进行逆运算,得到状态;另一方面也要克服噪声的影响

  现在,我们想对状态空间模型进行简化。开始的时候,我们建立的状态和观测方程是个通常的非线性模型。现在我们建立一个线性的模型,简化问题。

{ Z n + 1 = F n Z n + V n Y n = H n Z n + W n \\begin{cases} Z_{n+1} = F_n Z_n +V_n\\\\ Y_n = H_n Z_n + W_n \\end{cases} {Zn+1=FnZn+VnYn=HnZn+Wn
  需要注意一点,在这个线性模型中,系统参数F和H是时变的,我们允许系统参数随着时间变化。这就是意味着,我们允许我们的系统是非平稳的。

  我们在维纳滤波,莱文森迭代,前向后向预测的时候,都需要平稳性的条件。这里的非平稳性,能够让模型的应用更加广泛。

  现在我们对噪声进行假设。我们假设噪声的均值为0,并且噪声是白噪声。而且状态噪声和观测噪声之间没有相关性。
{ Z n + 1 = F n Z n + V n Y n = H n Z n + W n \\begin{cases} Z_{n+1} = F_n Z_n +V_n\\\\ Y_n = H_n Z_n + W_n \\end{cases} {Zn+1=FnZn+VnYn=HnZn+Wn

E ( V n ) = E ( W n ) = 0 E ( V n ∗ W n T ) = 0 E ( V n V m T ) = Q n δ m n E ( W n W m T ) = R n δ m n E(V_n) = E(W_n) = 0 \\quad E(V_n*W_n^T) = 0 \\\\ E(V_n V_m^T) = Q_n \\delta_{mn} \\quad E(W_n W_m^T) = R_n \\delta_{mn} E(以上是关于现代信号处理 06 - 卡尔曼滤波的主要内容,如果未能解决你的问题,请参考以下文章

卡尔曼滤波简介及例子

设计卡尔曼滤波器

卡尔曼滤波的原理说明

卡尔曼滤波的原理说明

卡尔曼滤波的原理说明

卡尔曼滤波