文档库 最新最全的文档下载
当前位置:文档库 › 卡尔曼滤波器介绍 --- 最容易理解

卡尔曼滤波器介绍 --- 最容易理解

卡尔曼滤波器介绍 --- 最容易理解
卡尔曼滤波器介绍 --- 最容易理解

10.6 卡尔曼滤波器简介

本节讨论如何从带噪声的测量数据把有用信号提取出来的问题。通常,信号的频谱处于有限的频率范围内,而噪声的频谱则散布在很广的频率范围内。如前所述,为了消除噪声,可以把 FIR滤波器或IIR滤波器设计成合适的频带滤波器,进行频域滤波。但在许多应用场合,需要进行时域滤波,从带噪声的信号中提取有用信号。虽然这样的过程其实也算是对信号的滤波,但所依据的理论,即针对随机信号的估计理论,是自成体系的。人们对随机信号干扰下的有用信号不能“确知”,只能“估计”。为了“估计”,要事先确定某种准则以评定估计的好坏程度。最小均方误差是一种常用的比较简单的经典准则。典型的线性估计器是离散时间维纳滤波器与卡尔曼滤波器。

对于平稳时间序列的最小均方误差估计的第一个明确解是维纳在1942年2月首先给出的。当时美国的一个战争研究团体发表了一个秘密文件,其中就包括维纳关于滤波问题的研究工作。这项研究是用于防空火力控制系统的。维纳滤波器是基于最小均方误差准则的估计器。为了寻求维纳滤波器的冲激响应,需要求解著名的维纳-霍夫方程。这种滤波理论所追求的是使均方误差最小的系统最佳冲激响应的明确表达式。这与卡尔曼滤波(Kalman filtering)是很不相同的。卡尔曼滤波所追求的则是使均方误差最小的递推算法。

在维纳进行滤波理论研究并导出维纳-霍夫方程的十年以前,在1931年,维纳和霍夫在数学上就已经得到了这个方程的解。

对于维纳-霍夫方程的研究,20世纪五十年代涌现了大量文章,特别是将维纳滤波推广到非平稳过程的文章甚多,但实用结果却很少。这时正处于卡尔曼滤波问世的前夜。

维纳滤波的困难问题,首先在上世纪五十年代中期确定卫星轨道的问题上遇到了。1958年斯韦尔林(Swerling)首先提出了处理这个问题的递推算法,并且立刻被承认和应用。1960年卡尔曼进行了比斯韦尔林更有意义的工作。他严格地把状态变量的概念引入到最小均方误差估计中来,建立了卡尔曼滤波理论。空间时代的到来推动了这种滤波理论的发展。

维纳滤波与卡尔曼滤波所研究的都是基于最小均方误差准则的估计问题。

维纳滤波理论的不足之处是明显的。在运用的过程中,它必须把用到的全部数据存储起来,而且每一时刻都要通过对这些数据的运算才能得到所需要的各种量的估值。按照这种滤波方法设置的专用计算机的存储量与计算量必然很大,很难进行实时处理。虽经许多科技工作者的努力,在解决非平稳过程的滤波问题时,给出能用的方法为数甚少。到五十年代中期,随着空间技术的发展,这种方法越来越不能满足实际应用的需要,面临了新的挑战。尽管如此,维纳滤波理论在滤波理论中的开拓工作是不容置疑的,维纳在方法论上的创见,仍然影响着后人。

五十年代中期,空间技术飞速发展,要求对卫星轨道进行精确的测量。为此,人们将滤波问题以微分方程表示,提出了一系列适应空间技术应用的精练算法。1960年

和1961年,卡尔曼(R.E.Kalman)和布西(R.S.Bucy)提出了递推滤波算法,成功地将状态变量法引入到滤波理论中来,用消息与干扰的状态空间模型代替了通常用来描述它们的协方差函数,将状态空间描述与离散时间更新连系起来,适于计算机直接进行运算,而不是去寻求滤波器冲激响应的明确公式。这种方法得出的是表征状态估计值及其均方误差的微分方程,给出的是递推算法。这就是著名的卡尔曼理论,或称卡尔曼-布西滤波。

从维纳-霍夫方程来看,维纳滤波算法是十分低效的。这种算法要求设置大量存储器保存过去的测量数据,新的一个数据来到后,要进行刷新,重新计算自相关和互相关序列。再者,求解这个方程需要耗费大量机时对高阶矩阵求逆。因此,维纳滤波算法难以用于实时处理中,尤其是无法用于军事、航空航天等领域。

在维纳滤波中,必须首先求解维纳-霍夫方程,得到有限长度的冲激响应序列,在这个意义上,维纳滤波器属于FIR滤波器的范畴。

卡尔曼滤波不要求保存过去的测量数据,当新的数据到来时,根据新的数据和前一时刻的诸量的估值,借助于系统本身的状态转移方程,按照一套递推公式,即可算出新的诸量的估值。这一点说明卡尔曼滤波器属于IIR滤波器范畴。这就是说,与维纳滤波器不同,卡尔曼滤波器能够利用先前的运算结果,再从当前数据提供的最新信息,即可得到当前的估值。卡尔曼递推算法大大减少了滤波装置的存储量和计算量,并且突破了平稳随机过程的限制,使卡尔曼滤波器适用于对时变信号的实时处理。因此,卡尔曼滤波器在应用上有更加广泛的可能性和更加美好的前景。

请读者回顾第2章的两个例子,即例2.5.1 和例2.6.5。这两个例子有助于理解维纳滤波和卡尔曼滤波的主要区别。例2.5.1用FIR滤波器实现5点滤波。这有点像维纳滤波。例2.5.2则用IIR滤波器实现同样的功能,而且滤波效果还稍好。在这个例子中,利用前一个时刻的滤波输出,再添上当前的输入(新息),即可递归地求出当前的滤波输出。这有点像卡尔曼滤波。

为了导出维纳滤波器和卡尔曼滤波器,以下各小节先介绍两种估计器:非递归估计器和递归估计器。然后依次介绍标量维纳滤波、向量维纳滤波、标量卡尔曼滤波和向量卡尔曼滤波。重点是对标量卡尔曼滤波算法的推导。整个过程不涉及繁琐的数学推导。

10.7 非递归估计器

y与设x表示慢变化(相对于叠加于其上的噪声)的时变信号,信号的测量值)(i

x成线性关系,并加上均值为零而方差为2

σ的白色噪声成分)(i v。这个噪声成分源

v

自测量或其他原因引起的随机误差。这样就有

=

i y+

)(

)(i v

x

(10.7.1)

这里把信号看作是均值为x i y E =)]([,方差为2v σ的随机变量。人们能够测到的信

号是

)(i y 。由于噪声的存在,人们只能够估计x 值,而永远无法直接测到有用信号x 。

)(i y 的平均值)]([?i y E x

=是一个最好的估值。如果用如下的N 阶FIR 滤波器对信

)(i y 进行滤波,

∑==N

n i y i h N

x

1

)

()(1

?

(10.7.2A ) 式中,

)(,),2(),1(N y y y 是N 个数据。则滤波值x

?可以被作为x 的估计值。由于)(i v 的均值为零,故随着平均次数N

的增大,

x

?中的随机噪声成分趋于零。若1)()2()1(===N h h h ,则

x i v Nx N i y N

x

N i N i ≈+==∑∑-=-=])([1

)(1

?1

1

0 (10.7.3)

所以,FIR 滤波器可以作为一个估计器(estimator )。随着平均次数N 的增大,估计值无限地接近真值。这样的估计称为无偏估计(unbiased estimation)。

估计器的均方误差为

21

10}])([1{x i v x N E p N i N i e -+=∑∑-=-=

N i v N

E v N i /])(1[

2210

σ==∑-=

(10.7.4)

由此可见,经滤波后,估计量的方差是原信号方差除以N 。增大N 值可以提高估计器质量。但N 值不能过大,因为估计器本质上是一个低通滤波器,N 值增大时,有用信号的细节(高频分量)也将被滤除了。

上述估计器只是简单地进行求和-平均运算,所依据的准则是使平均误差最小,

而不是均方误差最小。10.3节已导出基于LME 准则的最佳系统方程,即W-H 方程(10.3.6)。基于这个方程,曾导出10.5节的维纳滤波器。以这个滤波器作为估计器,就得到均方误差最小的非递归估计器。在目前的场合,输入信号已按式(10.7.1)定义为

)()(i v x i y +=,即变量y 代表输入信号,而x 则代表期望信号。所以,在对非递

归估计器进行分析前,应将式(10.3.6)修改为下式:

∑-===-10

1

10 ),()()(N k xy yy ,N-,,l l r k l r k h

(10.7.5A )

相应的矩阵方程为:

??????

???

?????-=????????????-??????????????---- )1( )1( )0( )1( )1( )0( )0( )2( )1( )2( )0( )1( )1( )1( )0( N r r r N h h h r N r N r N r r r N r r r xy xy xy yy yy yy yy yy yy yy yy yy (10.7.6)

这里,假定信号是平稳过程,故自相关矩阵是对称的。

应该记住,被估计量是式(10.7.1A )中的x ,而估计量x

?则由式(10.7.2)算出。估计误差为

∑=-=-=N

i i y i h x x

x e 1

)()(? (10.7.7) 方差为

][2e E p e =

(10.7.8)

在按LME 准则导出W-H 方程时,曾令

0)(])()([2)(1

=--=??∑=j y i y i h x E j h p N

i e

M

j ,,2,1 = (10.7.9)

由此得

N j j ey E ,,2,1 0)]([ ==

(10.7.10) 式中,x

x e

?-=是估计误差。在估计理论中,把 0)]([=j ey E 称为正交原理。它的意思是:误差x

x e ?-=与被测采样值)(j y 的乘积在期望(即平均值)意义上等于零。

根据这个式子,由

)(]})()([{][1

2

ex E i y i h x e E e E p N

i e =-==∑=

得到对应于上述最优解的最小均方误差。因此有 ])([)()(1

2

∑=-=N

i e i xy E i h x E p

或 ∑=-=N

i xy e i r i h x E p 1

2

)()()(

(10.7.11)

其中,)(i r xy 是互相关函数 )]([)(i xy E i r xy =

(10.7.12A)

这样,用方程组(10.7.5A)、估计方程(10.7.2A) 以及由式(10.7.11)给出的最小均方误差就得到了估计问题的完整解。

这三个式子的矩阵形式为

xy yy r h r = (10.7.5B) 式中,yy r 是)(M M

?自相关矩阵,h 和xy r 是)1(?M 列向量。

方程(10.7.5B)的形式解为

xy

yy r r h 1-=

(10.7.13) 估计方程可写为

y h x

T =?

(10.7.2B)

这里yy r 和y 是)1(?M

列向量,T h 是行向量。把式(10.7.13)代入式(10.7.2B),由于

矩阵yy r 是对称的,故x 的估计为

y r r x 1yy T xy -=? (10.7.14)

用同样的方法可以得到最小均方误差为

=e p )(2x E xy 1

yy T xy

r r r -- (10.7.15) 上面分析了基于维纳滤波器的标量估计器。应该指出,在推导中还没有使用关系式(10.7.1),即)()(k v x k y +=。因此所得结论更具有一般性。这个结论说明,如果

数据采样值

),,2,11)((M i y =以某种形式包含了随机未知变量x (即信号)

,那末,用维纳滤波器可在采样值上实现最佳线性滤波,给出x 的估计。

现在假设

)()(k v x k y +=,就这种特殊情况对非递归估计器进行分析。这里

)(k v 是加在信号x 上的白色噪声。假设其均值为零,噪声样点之间不相关,即方差为

?????=≠=

0)]()([2k j k j k v j v E v σ

(10.7.16)

噪声与信号之间也不相关,故0)]([=j xv E 。此外,为了简化讨论,设0)(=x E ,

因此有2

2

)(x

x

E σ=。 现在我们观察式(10.7.5A )的自相关函数和互相关函数。一般来说,自相关函数为

)]}()][({[)]()([),(j v x i v x E j y i y E j i r yy ++==

),(22j i v x δσσ+=

(10.7.17) 其中,),

(j i δ是克罗内克(Kronecker )符号,其定义为

?

??=≠= 1

0),(j i j i j i δ

对于平稳随机过程,由于自相关函数只取决于位移绝对值,即),(),

(i j r j i r xy xy =,

故自相关函数变为单变量函数)(k r xy 。

另一方面,互相关函数为 2

2)()]([)(x xy x E j xy E j r σ===

(10.7.18)

将式(10.7.17)和式(10.7.18)代入式(10.7.5A ),并假定信号是平稳随机过程,得 ???

?

?

??=++++=++++=++++222222222222222)()()2()1()()2()()1()()2()1()(x v x x x x x v x x x

x x v x N h h h N h h h N h h h σσσσσσσσσσσσσσσ

或 ??

?

?

?

?

?

???

???=+=+=+∑∑∑===212221

22212

2)()()()2()()1(x N i x v x N

i x v x N

i x

v i h N h i h h i h h σσσσσσσσσ (10.7.19)

将方程组两边分别相加,得

2

1

22)()

(x N

i x v

N i h N σσσ∑==+

于是有

2221

)(v

x

x

N

i N N i h σσσ+=∑=

把这个结果代入式(10.7.19)的各式中得

222

)()2()1(v

x

x N N N h h h σσσ+=

===

(10.7.20A) 设2

2/x

v σσγ

=,则 γ

+=

===N N h h h 1

)()2()1(

(10.7.20B)

把这个结果代入式(10.7.2A ), 可得 ∑=+=N

i i y N x

1

)(1

(10.7.21)

利用式(10.7.11)和式(10.7.20)就能得到对应的最小均方误差,即

γ

σ+=

N p v

e 2

(10.7.22)

10.8 递归估计器

上节论述的非递归估计器和维纳滤波器一样,是很难实现的,主要原因是: ●

对于时变系统,冲激响应与冲激出现时间有关。每计算一个估值,都必须重新计算冲激响应。为此,

不得不耗费大量机时求自相关矩阵之逆,重新解W-H 方程。

● 需要用大量存储器存放自相关矩阵和互相关向量。对于时变系统,这些统计量还需要不断刷新。

● 必须事先确定处理过程的数据采样值的数目M 。

若由于某种原因改变了M (例如需要得到更多的数据),那末全部计算都

必须重新进行。

再者,非递归估计属于批处理(batch processing )方式。其特点是为了处理好一个数据,需要输入当前时

刻的数据和此前若干个数据。显然,这是低效的。情况变化时,需要停下来重新计算。还有一个问题,即:系统如何获知情况已发生变化?

与此相反,可以设想,改用递归估计会更为合理。递归估计属于序贯处理(sequential processing)方式。其特点是根据当前时刻的输入数据,结合已求出的前一个时刻的估计值,即可算出当前的估计值。这种算法的优点是高效、节省存储器。但这还不是事情的全部。如果递归估计器配上反馈环节,对误差进行自我修正,就构成能付诸实用的卡尔曼滤波器。

. 本节的目的是根据对最优非递归估计器的分析结果,导出等效的最优递归估计器。 下面仍然按照以前的做法,根据给出的逐次采样值)()(k v x k y +=来作出线性

估计,即

∑==k

i i y i h k x

1

)()()(?

并使均方误差

2)?(x

x E p e -=尽可能地小。上一节已得到这个问题的非递归解,现在把它从新列出,即对于k 个采样值有 ∑===k

i i y i h k x x

1

)()()(?? (10.8.1) 式中,γ

+=

k i h 1

)

(。其对应的均方误差为

γ

σ+=-==k k x

x E k p p v e 2

2

)](?[)(

(10.8.2)

式中,22

x

v σσγ=。注意,符号)(?k x

表示参数x 的第k 次估计,也就是在一批k 个采样值处理后的估计。式(10.8.2)中的

)(k p 也作同样的解释。

下面进行推导,从下标为k 的量求下标为1+k 的量,以便实现递归计算。

对于1+k 个采样值,它的估计和对应的均方误差是

∑+==+1

1

)()()1(?k i i y i h k x

(10.8.3) 式中,

γ

++=

)1(1)(k i h 。

γ

σ++=

+)1()1(2k k p v

(10.8.4)

因为k 表示所使用的采样值的数目,它是一个变化的量,因此用符号),(k i h 来表示更为确切。

根据式(10.8.1)和(10.8.2),得

2

/)(),(v

k p k i h σ= 同样从式(10.8.3)和(10.8.4)得

2

/)1()1,(v

k p k i h σ+=+ 上两式之比为 )

/(111

1),()1,()()1(γγγ++=+++=+=+k k k k i h k i h k p k p

于是得到

2/)(11

)()1(v

k p k p k p σ+=+

(10.8.5)

这是一个差分方程,可以对均方误差进行递归计算:当给定

)(k p 后,就能得到

)1(+k p ,然后又能得到)2(+k p ,如此等等。

对于

)()(k v x k y +=这种特殊情况,根据式(10.8.3)有

)1(11

)(11

)1(?1

++++

++=+∑=k y k i y k k x

k

i γ

γ

运用式(10.8.1),有

)1(11

)(?1)1(?+++++++=+k y k k x k k k x

γ

γγ

再利用式(10.8.5)的关系可得

)1()

1()(?)()1()1(?2++++=+k y k p k x k p k p k x

v

σ

(10.8.6)

这是一个递归估计式,它和式(10.8.5)一起组成了递归算法。图10.8.1示出递归计算过程。整个过程不断地生成x 的最佳线性均方估计,同时给出对应的均方误差)1(+k p 。注意,当k 非常大时,)

(k p 趋于零。

递归过程开始时,要赋初值。我们必须按非递归算法,依据单个

观测值算出第一个估计值)1(?x

。 【例10.8.1】设2=γ

,2v σ 给定。试推导x 的递归估计序列。

解: 先通过式(10.8.1)给出的非递归估计求得x 的 第一个估计值,它对于第一个数据采样值,即

)1(y ,给出第一个估

计值为)1(3

1

)1(?y x =

。根据式(10.8.2)就能得到对应的均方误差为 图10.8.1 递归计算过程

23

1

)1(v p σ=。

现在就来进行递归估计。由式(10.8.5)得

4/)

3/1(1)3/1(/)1(1)

1()2( 22

2

v v v

p p p σσσ=+=+=

然后由式(10.8.6)得到

)2(4

1

)1(?43)2(?y x x

+= 由于)1(3

1

)1(?y x

=

,因此上式也可以写成 )2(41

)1(41)2(?y y x

+= 它与非递归处理一致。

同理,可以得到

25

1

)3(v p σ=以及第三个数据采样后的估计值

)3()

3()2(?)2()3()3(?2y p x p p x

v

σ+=

)3(5

1

)2(?54)3(?y x x

+= 如

)

()

1()1(k p k p k a +=

+,

2)

1()1(v

k p k b σ+=

+

(10.8.7)

于是,式(10.8.6)变为 )1()1()(?)1()1(?++++=+k y k b k x k a k x

(10.8.8)

根据式(10.8.7)和(10.8.5),易证参数a 和b 有如下关系: )1(1)1(+-=+k b k a

(10.8.9)

因此式(10.8.8)也可改写为 )](?)1()[1()(?)1(?k x k y k b k x k x

-+++=+ (10.8.10)

式(10.8.10)有重要意义,它表明这个系统是一个反馈系统,具有自我修正功能。

式中右边第二项代表修正项,)1(+k b 是一个时变修正因子,)(?)1(k x

k y -+是新的数据测量值与上次估计值之差。新的一个估计值)1(?+k x

是上次求出的估计值与修正项之和。

式(10.8.8)和(10.8.10)的实现框图如图10.8.2和图10.8.3所示。

图10.8.2 由非递归估计器导出的 图10.8.3 图10.8.2的另一种形式

递归估计器

10.9 最优递归估计器 --- 标量卡尔曼滤波器

10.9.1 系统模型

1960年,卡尔曼首先证明后来被称为卡尔曼滤波器的四个基本方程。本节将针对标量信号导出这些递归方程。

卡尔曼滤波器要求被处理的信号是一个广义马尔科夫过程。这种信号的特点是:从当前状态可以唯一地确定下一个时刻的状态,即状态可以通过转移矩阵转移到下一个状态。一般的信号都能满足这个要求。为分析方便,先假设随机信号)(k x 是一个由零均值白噪声序列)(k w 激发一个递归系统而产生的一阶自回归过程。图10.9.1示出系统模型,左边是信号模型,右边是测量模型。其中,)(k v 是测量过程引入的系统噪声。假定)(k v 是均值为零的白噪声。在测量模型中,将输入信号乘以因子c ,这样能使所得的结果推广到向量信号的场合。

图10.9.1 系统模型

由图10.9.1知信号关于时间的变化满足下列动态方程: )1()1()(-+-=k w k x k x α

(10.9.1)

设初始采样值0)0(=x ,即0

0)]([=k w E

???=≠=j k j k j w k w E w

0)]()([2

σ (10.9.2)

式(10.9.1)定义的自回归过程)(k x 有以下统计特性:

0)]([=k x E

2

222

1(0))]([ασσ-=

==

w x

x p k x E

(10.9.3)

)

0()()]()([||x j x p j p j k x k x E α==+

(10.9.4)

式(10.9.3)的证明如下: 相隔

j 单位时间的)(k x 的两个采样值的自相关函数为

)]()([)(j k x k x E j p x +=

对于

0=j ,有

22)]1()1([)]([(0)-+-==k w k x E k x E p x α

)]1([)]1([222-+-=k w E k x E α)]1()1([2--+k w k x E α

根据式(10.9.2),可推知上式右边第三项为零。故

)0()0()0(2w x x p p p +=α

于是,引入

2)0(x

x p σ=,2

)0(w w p σ=,就能得到式(10.9.3)。在滤波器处于稳态并已运行很长时间的情况下,这个结果是正确的。因此输出特性是平稳的,即

)]1([)]([22-=k x E k x E 。

式(10.9.4)的证明如下

对于

1=j ,有

)]}()()[({)]1()([)1(k w k x k x E k x k x E p x +=+=α

)0()]()([)]([2x p k w k x E k x E αα=+=

对于

2=j ,有

)]}1()1()[({)]2()([)2(+++=+=k w k x k x E k x k x E p x α

)]1()([)]1()([+++=k w k x E k x k x E α

)0()1(2x x p p αα==

用同样的方法可以得到j 取其它值时的结果。j 取负值时,这个结论也成立。于是,

式(

10.9.4

从以上证明可以看出,对所有的j ,)(j p x 都不为零,而且随||j 的增加而递减。

当α为负值时,

)(j p x 的值在正、负之间摆动变化。

在处理过程中,参数α作为一个反馈量,起时间常数的作用。α值增大时,信号)(k x 的自相关性增大。

现在,再看图10.9.1 右边的线性观察模型。它可以被描述为

)()()(k v k cx k y +=

(10.9.5)

式中包含时变信号)(k x 以及表示观察参数(或测量参数)的因子c .以后将会看到,因子c 在把标量结果变换到向量信号的场合时非常有用.式中)(k v 和前面规定的一样,是一个加在信号上的独立的白噪声,它的均值为零,方差为2

v σ。

10.9.2 算法推导

由图10.8.2,得递归估计器的形式为

)()()1(?)()(?k y k b k x k a k x

+-=

(10.9.6)

式中,右边第一项表示加权的先行估计,第二项则是加权的现行数据采样值。注意,上一节中的

)(?k x

是根据成批数据中的k 个数据而作出的参数

x 的估计,而此处的

)(?k x

则是根据先行估计)1(?-k x 和k 时刻唯一的一个数据)(k y 而对)(k x 作出的估计。

下面用式(10.9.6)来求最佳估计。“最佳”的意义仍然是使均方误差最小。此时我们有)(k a 和)(k b 两个参数。它们通过使均方误差最小来求得。为此,令

)]

([)(2k e E k p =

(10.9.7) 最小,其中)()(?)(k x k x

k e -=

为估计误差。

把)(?k x 表达式(10.9.6)代入式(10.9.7),得

2)]()()()1(?)([)(k x k y k b k x

k a E k p -+-=

(10.9.8)

分别对)(k a 和)(k b 求导,得

0)}1(?)]()()()1(?)({[2)

()

(=--+-=??k x k x k y k b k x

k a E k a k p

(10.9.9)

0)}()]()()()1(?)({[2)

()

(=-+-=??k y k x k y k b k x

k a E k b k p

(10.9.10) 或写为另一种形式

0)]1(?)([=-k x

k e E

(10.9.11)

)]()([=k y k e E

(10.9.12)

根据式(10.9.11)可得)(k a 和)(k b 的关系为

)]

(1[)(k cb k a -=α 【解说10.9.1】

(10.9.13)

把这个关系式代入式(10.9.6),得

)]1(?)()[()1(?)(?--+-=k x c k y k b k x k x

αα (10.9.14)

第一项)1(?-k x α表示没有其它任何附加信息加入时)(?k x

的最佳估计。因此,它是根据先行的观察值所作的预测。第二项是修正项。其中,)1(?-k x

c α是根据前一个时刻

的估计值)1(?-k x 求出的对当前输入数据的估计值,)(k y 是当前的实测数据。二者

之差称为余差。余差乘以增益因子构成一个修正项。它与第一项)1(?-k x α之和就是

当前时刻k 的估计值)(?k x

。图10.9.2综合了以上分析结果。这里,可以证明增益因子为:

)

1(])1([)(2

222

22

2-+++-=

k p c c

k p c k b w

v

w ασσσα 【解说10.9.2】

(10.9.15) 均方误差为

)(1)(2

k b c

k p v σ=

(10.9.16) 可见

)(k p 和)(k b 有直接的联系。注意,当1==c α和02

=w σ时,从式(10.9.15)

和式(10.9.16)就可以得到式(10.8.5)的结果。

图10.9.2 最优递归估计器(滤波器) 如上所述,系统开始工作时需要用第一个观察值来产生非递归估计

)1(?x

(见例10.8.1)。也可以用一个估计值)0(?x

代替第一个观察值来作出估计。为此,求下式 2)]0(?)([)0(x

k x E p -= (10.9.17)

取最小值时)0(?x

的值,于是有 0)]0(?)([2)0(?)

0(=--=??x

k x E x

p (10.9.18) 即

)]([)0(?k x E x

= 由此可见,)0(?x

的最佳估计就是)(k x 的平均值。 【例10.9.1】 利用上面的结果,并设0)]([=k x E ,就能按如下步骤启动系统。 因为

0)0(?=x

,所以用第一个数据采样值)1(y 就可以从式(10.9.14)中得到 )1()1()1(?y b x

=。这里,为了求得)1(b ,可用如下正交关系: 0)}1()]1(?)1({[=-y x

x E 式中,)1()1()1(v x y +=,其中取1=c 。以)1()1()1(?y b x

=代入,并取平均,即得

222)1(v

x

x b σσσ+=

再设22

w

v

σσ=,2/12=α,从式2

22v x σσ=,于是67.03/2)1(==b 。把此值代入式(10.9.16),得

2

3

2)1(v p σ=

,这样就得到了用式(10.9.15)计算)2(b 所需的全部数据。于是,根据上述求得的数值可得

57.07

4

)

1()1()2(2222

2==

+++=

p p b w v w ασσσα 再根据式(10.9.16)求得均方误差为7/4)2(2

v p σ=。把)2(p 代入式(10.9.15)又可得562.016/9)3(==b 。于是

2

562.0)3(v

p σ=,如此等等。随着k 的增加,)(k p 逐渐达到稳态值p k p k p =-=)1()( 。稳态值p 可以通过把式(10.9.16)

代入式(10.9.15)求得。即

0234

22=-+v v p p σσ

解上述方程得

2

56.0v

p σ=。可见上面计算得到的)3(p 与极限值(即稳态值)

2

0.56v

σ非常接近。 ▲ 式(10.9.14)到式(10.9.16)构成了一个完整的算法。为了使这些结果能推广到向量信号情况,最好把这些式子从新排列成如下形式:

递归滤波估计器:

)]1(?)()[()1(?)(?--+-=k x c k y k b k x k x

αα (10.9.19)

滤波器增益

1

2121])()[()(-+=v k p c k cp k b σ

(10.9.20) 其中

2

21)1()(w

k p k p σα+-= (10.9.21)

均方误差

)()()()(11k p k cb k p k p -=

(10.9.22)

估计方程(10.9.19)与原先的方程(10.9.14)完全一样,而式(10.9.15)和式(10.9.16)这两个式子在引进新的量)(1k p 以后可以用式(10.9.20)到(10.9.22)三个式子来表

示。

对于由式(10.9.1)给出的信号模型,即

)1()1()(-+-=k w k x k x α

以及由式(10.9.5)给出的观察模型,即

)()()(k v k cx k y +=

上述一组方程构成了标量(一维)卡尔曼滤波器。这种类型的递推估计大约在1960年开始发展起来。在这方面,R.E.卡尔曼的贡献最为突出。

10.10 向量卡尔曼滤波器

10.10.1 信号向量和数据向量

上节讨论了标量卡尔曼滤波器。在这种最简单的卡尔曼滤波器中,不断地被估计的信号只有一个,而在这个过程中用以进行校正的测量数据也只有一个。但在实际应

卡尔曼滤波器及其简matlab仿真

卡尔曼滤波器及其简matlab仿真

卡尔曼滤波器及其简matlab仿真 一、卡尔曼滤波的起源 谈到信号的分析与处理,就离不开滤波两个字。通常,信号的频谱处于有限的频率范围内,而噪声的频谱则散布在很广的频率范围内,为了消除噪声,可以进行频域滤波。但在许多应用场合,需要直接进行时域滤波,从带噪声的信号中提取有用信号。虽然这样的过程其实也算是对信号的滤波,但其所依据的理论,即针对随机信号的估计理论,是自成体系的。人们对于随机信号干扰下的有用信号不能“确知”,只能“估计”。为了“估计”,要事先确定某种准则以评定估计的好坏程度。 1960年卡尔曼发表了用递归方法解决离散数据线性滤波问题的论文A New Approach to Linear Filtering and Prediction Problems (线性滤波与预测问题的新方法),在这篇文章里一种克服了维纳滤波缺点的新方法被提出来,这就是我们今天称之为卡尔曼滤波的方法。卡尔曼滤波应用广泛且功能强大,它可以估计信号的过去和当前状态甚至能估计将来的状态即使并不知道模型的确切性质。 其基本思想是以最小均方误差为最佳估计准则,采用信号与噪声的状态空间模型利用前一时刻的估计值和当前时刻的观测值来更新对状态变量的估计,求出当前时刻的估计值。算法根据建立的系统方程和观测方程对需要处理的信号做出满足最小均方误差的估计。 对于解决很大部分的问题,它是最优,效率最高甚至是最有用的。它的广泛应用已经超过30年,包括机器人导航,控制,传感器数据融合甚至在军事方面的雷达系统以及导弹追踪等等。近年来更被应用于计算机图像处理,例如头脸识别,图像分割,图像边缘检测等等。 卡尔曼滤波不要求保存过去的测量数据,当新的数据到来时,根据新的数据和前一时刻的储值的估计,借助于系统本身的状态转移方程,按照一套递推公式,即可算出新的估值。卡尔曼递推算法大大减少了滤波装置的存储量和计算量,并且突破了平稳随机过程的限制,使卡尔曼滤波器适用于对时变信号的实时处理。

基于FPGA的卡尔曼滤波器的设计

基于FPGA的卡尔曼滤波器的设计 时间:2010-04-12 12:52:33 来源:电子科技作者:米月琴,黄军荣西安电子科技大学摘要:针对电路设计中经常碰到数据的噪声干扰现象,提出了一种Kalman滤波的FPGA实现方法。该方法采用了TI公司的高精度模数转换器ADSl25l以及Altera公司的EPlCl2,首先用卡尔曼滤波算法 设计了一个滤波器,然后将该滤波器分解成简单的加、减、乘、除运算。通过基于FPGA平台的硬件与 软件的合理设计,成功地实现了数据噪声的滤除设计,并通过实践仿真计算,验证了所实现滤波的有效性。 关键词:卡尔曼;FPGA;最小方差估计 卡尔曼滤波是一个“Optimal Recursive Data Processing Algorithm(最优化自回归数据处 理算法)”,对于解决很大部分的问题,是最优化的,效率最高甚至是最有用的。传统的卡尔曼滤波是 在DSP上实现的。但是DSP成本相对较高,而且指令是串行执行的,不能满足有些要求较高的场合。而FPGA由于其硬件结构决定了它的并行处理方式,无论在速度还是实时性都更胜一筹。文中以基于FPGA 器件和A/D转换器的数据采集系统为硬件平台,进行了卡尔曼滤波算法设计,详述了基于FPGA的卡尔 曼滤波器的设计实现。 1 卡尔曼滤波算法 工程中,为了了解工程对象(滤波中称为系统)的各个物理量(滤波中称为状态)的确切数值,或为了 达到对工程对象进行控制的目的,必须利用测量手段对系统的各个状态进行测量。但是,量测值可能仅 是系统的部分状态或是部分状态的线性组合,且量测值中有随机误差(常称为量测噪声)。最优估计就是 针对上述问题的一种解决方法。它能将仅与部分状态有关的测量进行处理,得出从统计意义上讲误差最 小的更多状态的估值。误差最小的标准常称为估计准则,根据不同的估计准则和估计计算方法,有各种 不同的最优估计,卡尔曼滤波是一种递推线性最小方差估计的最优估计。 系统的状态方程可设定为 式(3)为系统噪声。设设备的量测噪声为Vk,系统得量测方程为

三阶卡尔曼滤波数字锁频环设计及性能分析

三阶卡尔曼滤波数字锁频环设计及性能分析 作者:李金海, 巴晓辉, 陈杰, LI Jin-hai, BA Xiao-hui, Chen Jie 作者单位:中国科学院微电子研究所,北京,朝阳区,100029 刊名: 电子科技大学学报 英文刊名:JOURNAL OF UNIVERSITY OF ELECTRONIC SCIENCE AND TECHNOLOGY OF CHINA 年,卷(期):2008,37(5) 被引用次数:1次 参考文献(10条) 1.HINEDI S.STATMAN J I High-dynamic GPS tracking final report[JPL Publication 88-35] 1988 2.AGUIRRE S.HINEDI S Two novel automatic frequency tracking loops 1989(05) 3.HINEDI S An extended Kalmaa filter based automatic frequency control loop[TDA Progress Report 42-95] 1988 4.VILNROTTER V A.HINEDI S.KUMAR R Frequency estimation techniques for high dynamic trajectories 1989(04) 5.BAR-SHALOM Y.LI X R.KIRUBARAJAN T Estimation with applications to tracking and navigation:Theory algorithms and soRware 2001 6.张厥盛.郑继禹.万心平锁相技术 2005 7.JURY E I Theory and application of the z-transform method 1964 8.邓自立.郭一新现代时间序列分析及其应用--建模、滤波、去卷、预报和控制 1988 9.GREWAL M S.ANDREWS A P Kalman filtering:theory and practice using matlab 2001 10.ARNOLD W https://www.wendangku.net/doc/3510291020.html,UB A J Generalized eigenproblem algorithms and software for algebraic Riccati equations 1984(12) 相似文献(9条) 1.学位论文孙峰高动态多星座接收机捕获和跟踪技术的研究与实现2009 全球导航卫星系统(GNSS)是用于定位用户接收机地理位置的一种卫星系统。目前,GNSS包括现已投入运行的三个卫星定位系统:全球定位系统(GPS)、全球导航卫星系统( GLONASS)、北斗一代系统(BD)。鉴于多星座导航定位系统的建立,多星座接收机将大大提高卫星导航定位的可靠性、精度和实时性。 高动态接收机的捕获和跟踪技术一直是研究的热点和难点。许多学者针对高动态的特殊应用做出了一些卓有成效的研究,提出了多种设计方案,重点为伪码的快速捕获和多普勒频率的跟踪。伪码的快速捕获的主要方法为:基于FFT和匹配滤波的并行捕获方法以及串并结合的滑动相关捕获方法。这些捕获方法在捕获性能和复杂性上各有优劣。本文采用了串并结合的滑动相关捕获方法,这种算法的捕获性能较好,硬件实现简单。 载波多普勒频率跟踪的主流方案是采用锁频环(FLL)+锁相环(PLL)的环路跟踪结构。使用FLL来跟踪频率的快速变化,当频率引导到PLL可处理的范围时,通过PLL来跟踪相位的变化,精确的锁定载波频率。本文采用二阶锁频环辅助三阶锁相环的环路结构,可很好的跟踪接收机的动态。 本文的主要内容为: 1.完成了多星座卫星信号接收机的硬件设计,为系统的实现搭建了硬件平台。 2.在分析了GPS、GLONASS、BD的伪码特性的基础上,采用串并结合的时域相关捕获的方法,缩短了伪码的捕获时间。 3.研究并设计了DLL码跟踪环路。经过测试验证了设计的DLL环路的正确性。 4.载波跟踪环采用三阶二象限反正切Costas环和二阶四相锁环相结合的方法,有效的消除了高动态的影响。 本论文设计的捕获和跟踪的方法最终在高动态多星座接收机上得到了实现,测试结果表明本文的设计满足系统指标要求。 2.学位论文郑宏磊GPS在干扰环境下的可用性研究2006 全球定位系统(GPS)能在全球范围内提供精确的位置、速度和时间信息,在军事和民用领域发挥着极其重要的作用。随着GPS的广泛应用,它易受到干扰的弱点也随之暴露出来,针对GPS进行的抗干扰技术也日益成为研究的热点。本文阐述了全球定位系统的工作原理,系统组成以及信号格式,在此基础上着重分析了GPS受干扰特性,为以后的工作奠定了基础。 本文将理论分析和实验相结合,结合商用GPS接收机的实际测量结果,对GPS信号受干扰前后的特性进行了分析。针对射频RF等干扰源以及多路径 ,本文介绍了抗干扰的总体设计方案,分析了几种可行的抗干扰措施,重点对环路滤波和自适应调零天线进行了研究设计。 论文在环路滤波器设计方面采用了由锁频环(FLL)辅助的锁相环(PLL)滤波器,在自适应调零天线方面设计空间-时间自适应阵列以代替空间自适应阵列,并采用功率最小预处理算法。最后通过实验仿真得到了较为理想的结果,可在一定程度上保证GPS在干扰环境下的可用性。 3.期刊论文李国栋.崔晓伟.尹旭明.冯振明.LI Guodong.CUI Xiaowei.YIN Xuming.FENG Zhenming GPS接收机中锁 频环频率误锁的检测-清华大学学报(自然科学版)2007,47(1) 为了解决全球定位系统(GPS)接收机中的锁频环在载波同步过程中可能出现的频率误锁问题,在分析了锁频环在噪声环境下的工作原理及产生频率误锁原因的基础上,基于有无发生频率误锁时同一信息符号对应的多个预检测积分值的变化规律,提出了一种用于频率误锁检测和快速纠正的算法.仿真结果表明:该方法能够在锁频环完成工作之后及时判决是否有误锁发生,误锁时可在1~2个导航比特时间内把载波频率调整到正确频率上.该方法实现简单,可

卡尔曼滤波器及其简matlab仿真.

卡尔曼滤波器及其简matlab仿真 一、卡尔曼滤波的起源 谈到信号的分析与处理,就离不开滤波两个字。通常,信号的频谱处于有限的频率范围内,而噪声的频谱则散布在很广的频率范围内,为了消除噪声,可以进行频域滤波。但在许多应用场合,需要直接进行时域滤波,从带噪声的信号中提取有用信号。虽然这样的过程其实也算是对信号的滤波,但其所依据的理论,即针对随机信号的估计理论,是自成体系的。人们对于随机信号干扰下的有用信号不能“确知”,只能“估计”。为了“估计”,要事先确定某种准则以评定估计的好坏程度。 1960年卡尔曼发表了用递归方法解决离散数据线性滤波问题的论文A New Approach to Linear Filtering and Prediction Problems(线性滤波与预测问题的新方法),在这篇文章里一种克服了维纳滤波缺点的新方法被提出来,这就是我们今天称之为卡尔曼滤波的方法。卡尔曼滤波应用广泛且功能强大,它可以估计信号的过去和当前状态甚至能估计将来的状态即使并不知道模型的确切性质。 其基本思想是以最小均方误差为最佳估计准则,采用信号与噪声的状态空间模型利用前一时刻的估计值和当前时刻的观测值来更新对状态变量的估计,求出当前时刻的估计值。算法根据建立的系统方程和观测方程对需要处理的信号做出满足最小均方误差的估计。 对于解决很大部分的问题,它是最优,效率最高甚至是最有用的。它的广泛应用已经超过30年,包括机器人导航,控制,传感器数据融合甚至在军事方面的雷达系统以及导弹追踪等等。近年来更被应用于计算机图像处理,例如头脸识别,图像分割,图像边缘检测等等。 卡尔曼滤波不要求保存过去的测量数据,当新的数据到来时,根据新的数据和前一时刻的储值的估计,借助于系统本身的状态转移方程,按照一套递推公式,即可算出新的估值。卡尔曼递推算法大大减少了滤波装置的存储量和计算量,并且突破了平稳随机过程的限制,使卡尔曼滤波器适用于对时变信号的实时处理。 二、卡尔曼滤波的原理

几种卡尔曼滤波算法理论

自适应卡尔曼滤波 卡尔曼滤波发散的原因 如果卡尔曼滤波是稳定的,随着滤波的推进,卡尔曼滤波估计的精度应该越来越高,滤波误差方差阵也应趋于稳定值或有界值。但在实际应用中,随着量测值数目的增加,由于估计误差的均值和估计误差协方差可能越来越大,使滤波逐渐失去准确估计的作用,这种现象称为卡尔曼滤波发散。 引起滤波器发散的主要原因有两点: (1)描述系统动力学特性的数学模型和噪声估计模型不准确,不能直接真实地反映物理过程,使得模型与获得的量测值不匹配而导致滤波发散。这种由于模型建立过于粗糙或失真所引起的发散称为滤波发散。 (2)由于卡尔曼滤波是递推过程,随着滤波步数的增加,舍入误差将逐渐积累。如果计算机字长不够长,这种积累误差很有可能使估计误差方差阵失去非负定性甚至失去对称性,使滤波增益矩阵逐渐失去合适的加权作用而导致发散。这种由于计算舍入误差所引起的发散称为计算发散。 针对上述卡尔曼滤波发散的原因,目前已经出现了几种有效抑制滤波发散的方法,常用的有衰减记忆滤波、限定记忆滤波、扩充状态滤波、有限下界滤波、平方根滤波、和自适应滤波等。这些方法本质上都是以牺牲滤波器的最优性为代价来抑制滤波发散,也就是说,多数都是次优滤波方法。 自适应滤波 在很多实际系统中,系统过程噪声方差矩阵Q和量测误差方差阵R事先是不知道的,有时甚至连状态转移矩阵 或量测矩阵H也不能确切建立。如果所建立的模型与实际模型不符可能回引起滤波发散。自适应滤波就是这样一种具有抑制滤波发散作用的滤波方法。在滤波过程中,自适应滤波一方面利用量测值修正预测值,同时也对未知的或不确切的系统模型参数和噪声统计参数进行估计修正。自适应滤波的方法很多,包括贝叶斯法、极大似然法、相关法与协方差匹配法,其中最基本也是最重要的是相关法,而相关法可分为输出相关法和新息相关法。 在这里只讨论系统模型参数已知,而噪声统计参数Q和R未知情况下的自适应滤波。由于Q和R等参数最终是通过增益矩阵K影响滤波值的,因此进行自适应滤波时,也可以不去估计Q和R等参数而直接根据量测数据调整K就可以了。

维纳最速下降法滤波器卡尔曼滤波器设计及Matlab仿真

信息融合大作业 ——维纳最速下降法滤波器,卡尔曼滤波器设计及Matlab仿真 1.滤波问题浅谈 估计器或滤波器这一术语通常用来称呼一个系统,设计这样的系统是为了从含有噪声的数据中提取人们感兴趣的,接近规定质量的信息。由于这样一个宽目标,估计理论应用于诸如通信、雷达、声纳、导航、地震学、生物医学工程、 金融工程等众多不同的领域。例如,考虑一个数字通信系统,其基本形式由发

射机、信道和接收机连接组成。发射机的作用是把数字源(例如计算机)产生的0、1符号序列组成的消息信号变换成为适合于信道上传送的波形。而由于符号间干扰和噪声的存在,信道输出端收到的信号是含有噪声的或失真的发送信号。接收机的作用是,操作接收信号并把原消息信号的一个可靠估值传递给系统输出端的某个用户。随着通信系统复杂度的提高,对原消息信号的还原成为通信系统中最为重要的环节,而噪声是接收端需要排除的最主要的干扰,人们也设计出了针对各种不同条件应用的滤波器,其中最速下降算法是一种古老的最优化技术,而卡尔曼滤波器随着应用条件的精简成为了普适性的高效滤波器。2.维纳最速下降算法滤波器 2.1 最速下降算法的基本思想 考虑一个代价函数,它是某个未知向量的连续可微分函数。函数 将的元素映射为实数。这里,我们要寻找一个最优解。使它满足如下条件 (2.1) 这也是无约束最优化的数学表示。 特别适合于自适应滤波的一类无约束最优化算法基于局部迭代下降的算法: 从某一初始猜想出发,产生一系列权向量,使得代价函数在算法的每一次迭代都是下降的,即 其中是权向量的过去值,而是其更新值。 我们希望算法最终收敛到最优值。迭代下降的一种简单形式是最速下降法,该方法是沿最速下降方向连续调整权向量。为方便起见,我们将梯度向量表示为

卡尔曼滤波器介绍 --- 最容易理解

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

扩展卡尔曼滤波器(EKF)进行信号处理及信号参数估计

% 扩展卡尔曼滤波器估计单相电压幅值、相位、频率参数(含直流)function test2_EKF close all; clc; tic; %计时 %模型:y=A0+A1*cos(omega*t+phy1) %离散化:y(k)=A0(k)+A1(k)*cos(omega(k)*k*Ts+phy1(k)) %状态变量:x1(k)=A0(k),x2(k)=omega(k),x3(k)=A1(k)*cos(omega(k)*k*Ts+phy1(k) ),x4(k)=A1(k)*sin(omega(k)*k*Ts+phy1(k)) %下一时刻状态变量为(假设状态不突变):A0(k+1)=A0(k),A1(k+1)=A1(k),omega(k+1)=omega(k),phy1(k+1)=phy1 (k); %则对应状态为:x1(k+1)=x1(k),x2(k+1)=x2(k),x3(k+1)=x3(k)*cos(x2(k)*Ts)- x4(k)*sin(x(2)*Ts),x4(k+1)=x3(k)*sin(x2(k)*Ts)+x4(k)*cos(x(2)*Ts); %状态空间描述:X(k+1)=f(X(k))+W(k);y(k)=H*X(k)+v(k) %f(X(k))=[x1(k);x2(k);x3(k)*cos(x2(k)*Ts)- x4(k)*sin(x(2)*Ts);x3(k)*sin(x2(k)*Ts)+x4(k)*cos(x(2)*Ts)] %偏导(只求了三个):f`(X(k))=[1,0,0;0,1,0;0,-x3(k)*Ts*sin(x2(k)*Ts)-x4(k)*Ts*cos(x2(k)*Ts),cos(x2(k)*Ts);0,x3(k)*Ts*cos(x2(k)*Ts)- x4(k)*Ts*sin(x2(k)*Ts),sin(x2(k)*Ts)]

直流电机运行状态的卡尔曼滤波估计器设计.doc

二 〇 一 五 年 六 月 题 目:直流电机运行状态的卡尔曼滤波估计器设计 学生姓名:张傲 学 院:电力学院 系 别:电力系 专 业:风能与动力工程 班 级:风能11-1 指导教师:董朝轶 教授

摘要 卡尔曼滤波是一个迭代自回归算法,对于连续运动状态用中的大部分问题它都能够给出最优的预测。它已经广泛应用了近半个世纪,例如数据的融合,机械的导航乃至军用雷达的导航等等。卡尔曼滤波一般用于动态数据的处理,是从混沌的信号中提取有用信号消除误差的参数估计法。卡尔曼滤波是依据上一个估计数值和当下的检测数据运用递推估计算出当前的估计值。通过状态方程运用递推的方法进行估计,可以建立物体运动的模型。本文采用的工程设计对运行状态下的直流电机进行参数的计算和校验。而且直流电机的调节性能非常好只需要加上电阻调压就可以了,而且启动曲线非常好,启动的转矩大适合高精度的控制。而交流电机调速需要变频,控制相对复杂一些,而对于设计无论是哪种电机都不影响结果,所以本实验采用直流电机。简单来说卡尔曼滤波就是对被观测量进行一个物理的建模,目的是用‘道理’来约束观测结果,减少噪声的影响。因此卡尔曼滤波是根据一个事物的当前状态预测它的下一个状态的过程。 此设计主要是通过对直流电机的数学模型利用MATLAB来设计卡尔曼滤波估计,进行仿真编程建模,进而对系统进行评估,并且分析估计误差。 关键词:卡尔曼滤波器;直流电机;MATLAB

Abstract Kalman filter is an iterative autoregression algorithm for continuous motion of most of the problems with it are able to give the best prediction. And it has been widely used for nearly half a century, such as the integration of data, as well as military machinery of navigation radar navigation, and so on. Kalman filter is generally used to process dynamic data, extract useful signal parameter estimation method to eliminate errors from the chaotic signal. Kalman filter is based on an estimate on the value and the current detection data is calculated using recursive estimation current estimates. By using recursive state equation method to estimate the movement of objects can be modeled. The paper describes the engineering design of the DC motor running state parameter calculation and verification. The DC motor performance and adjust very well simply by adding resistance regulator on it, and start curve is very good, start torque for precision control. The required frequency AC motor speed control is relatively complicated, and for the design of either the motor does not affect the outcome.In order to facilitate learning, so wo use the DC motor. Simply the Kalman filter is to be observables conduct a physical modeling; the purpose is to use 'sense' to restrict the observations to reduce the influence of noise. Therefore, the Kalman filter is based on the current state of things predict its next state of the process. This design is mainly through the DC motor mathematical model using MATLAB to design the Kalman filter estimation, simulation modeling program, and then to evaluate the system and analyze the estimation error. Keywords:Kalman filter; DC;MATLAB

卡尔曼滤波的原理及应用自己总结

卡尔曼滤波的原理以及应用 滤波,实质上就是信号处理与变换的过程。目的是去除或减弱不想要成分,增强所需成分。卡尔曼滤波的这种去除与增强过程是基于状态量的估计值和实际值之间的均方误差最小准则来实现的,基于这种准则,使得状态量的估计值越来越接近实际想要的值。而状态量和信号量之间有转换的关系,所以估计出状态量,等价于估计出信号量。所以不同于维纳滤波等滤波方式,卡尔曼滤波是把状态空间理论引入到对物理系统的数学建模过程中来,用递归方法解决离散数据线性滤波的问题,它不需要知道全部过去的数据,而是用前一个估计值和最近一个观察数据来估计信号的当前值,从而它具有运用计算机计算方便,而且可用于平稳和不平稳的随机过程(信号),非时变和时变的系统的优越性。 卡尔曼滤波属于一种软件滤波方法,概括来说其基本思想是:以最小均方误差为最佳估计准则,采用信号与噪声的状态空间模型,利用前一时刻的估计值和当前时刻的观测值来更新对状态变量的估计,求出当前时刻的估计值,算法根据建立的系统方程和观测方程对需要处理的信号做出满足最小均方误差的估计。其所得到的解是以估计值的形式给出的。 卡尔曼滤波过程简单来说主要包括两个步骤:状态变量的预估以及状态变量的校正。预估过程是不考虑过程噪声和量测噪声,只是基于系统本身性质并依靠前一时刻的估计值以及系统控制输入的一种估计;校正过程是用量测值与预估量测值之间的误差乘以一个与过程

噪声和量测噪声相关的增益因子来对预估值进行校正的,其中增益因子的确定与状态量的均方误差有关,用到了使均方误差最小的准则。而这一过程中体现出来的递归思想即是:对于当前时刻的状态量估计值以及均方误差预估值实时进行更新,以便用于下一时刻的估计,使得系统在停止运行之前能够源源不断地进行下去。 下面对于其数学建模过程进行详细说明。 1.状态量的预估 (1)由前一时刻的估计值和送给系统的可控制输入来预估计当前时刻状态量。 X(k|k-1)=A X(k-1|k-1)+B U(k) 其中,X(k-1|k-1)表示前一时刻的估计值,U(k)表示系统的控制输入,X(k|k-1)表示由前一时刻估计出来的状态量的预估计值,A表示由k-1时刻过渡到k时刻的状态转移矩阵,B表示控制输入量与状态量之间的一种转换因子,这两个都是由系统性质来决定的。 (2)由前一时刻的均方误差阵来预估计当前时刻的均方误差阵。 P(k|k-1)=A P(k-1|k-1)A’+Q 其中,P(k-1|k-1)是前一时刻的均方误差估计值,A’代表矩阵A 的转置,Q代表过程噪声的均方误差矩阵。该表达式具体推导过程如下: P(k|k-1)=E{[Xs(k|k)-X(k|k-1)][Xs(k|k)-X(k|k-1)]’}------ 其中Xs(k|k)=A Xs(k-1|k-1)+B U(k)+W(k-1)表示当前时刻的实际值,Xs(k-1|k-1)表示前一时刻的实际值,可以看出与当前时刻的预估计值

卡尔曼滤波的基本原理及应用

卡尔曼滤波的基本原理及应用卡尔曼滤波在信号处理与系统控制领域应用广泛,目前,正越来越广泛地应用于计算机应用的各个领域。为了更好地理解卡尔曼滤波的原理与进行滤波算法的设计工作,主要从两方面对卡尔曼滤波进行阐述:基本卡尔曼滤波系统模型、滤波模型的建立以及非线性卡尔曼滤波的线性化。最后,对卡尔曼滤波的应用做了简单介绍。 卡尔曼滤波属于一种软件滤波方法,其基本思想是:以最小均方误差为最佳估计准则,采用信号与噪声的状态空间模型,利用前一时刻的估计值和当前时刻的观测值来更新对状态变量的估计,求出当前时刻的估计值,算法根据建立的系统方程和观测方程对需要处理的信号做出满足最小均方误差的估计。 最初的卡尔曼滤波算法被称为基本卡尔曼滤波算法,适用于解决随机线性离散系统的状态或参数估计问题。卡尔曼滤波器包括两个主要过程:预估与校正。预估过程主要是利用时间更新方程建立对当前状态的先验估计,及时向前推算当前状态变量和误差协方差估计的值,以便为下一个时间状态构造先验估计值;校正过程负责反馈,利用测量更新方程在预估过程的先验估计值及当前测量变量的基础上建立起对当前状态的改进的后验估计。这样的一个过程,我们称之为预估-校正过程,对应的这种估计算法称为预估-校正算法。以下给出离散卡尔曼滤波的时间更新方程和状态更新方程。 时间更新方程: 状态更新方程: 在上面式中,各量说明如下: A:作用在X k-1上的n×n 状态变换矩阵 B:作用在控制向量U k-1上的n×1 输入控制矩阵 H:m×n 观测模型矩阵,它把真实状态空间映射成观测空间 P k-:为n×n 先验估计误差协方差矩阵 P k:为n×n 后验估计误差协方差矩阵 Q:n×n 过程噪声协方差矩阵 R:m×m 过程噪声协方差矩阵 I:n×n 阶单位矩阵K k:n×m 阶矩阵,称为卡尔曼增益或混合因数 随着卡尔曼滤波理论的发展,一些实用卡尔曼滤波技术被提出来,如自适应滤波,次优滤波以及滤波发散抑制技术等逐渐得到广泛应用。其它的滤波理论也迅速发展,如线性离散系统的分解滤波(信息平方根滤波,序列平方根滤波,UD 分解滤波),鲁棒滤波(H∞波)。 非线性样条自适应滤波:这是一类新的非线性自适应滤波器,它由一个线性组合器后跟挠性无记忆功能的。涉及的自适应处理的非线性函数是基于可在学习

卡尔曼滤波器综述

卡尔曼滤波器综述 瞿伟军 G10074 1、卡尔曼滤波的起源 1960年,匈牙利数学家卡尔曼发表了一篇关于离散数据线性滤波递推算法的论文,这意味着卡尔曼滤波的诞生。斯坦利.施密特(Stanley Schmidt)首次实现了卡尔曼滤波器,卡尔曼在NASA埃姆斯研究中心访问时,发现他的方法对于解决阿波罗计划的轨道预测很有用,后来阿波罗飞船的导航电脑使用了这种滤波器。关于这种滤波器的论文由Swerling (1958)、Kalman (1960)与 Kalman and Bucy (1961)发表。 2、卡尔曼滤波的发展 卡尔曼滤波是一种有着相当广泛应用的滤波方法,但它既需要假定系统是线性的,又需要认为系统中的各个噪声与状态变量均呈高斯分布,而这两条并不总是确切的假设限制了卡尔曼滤波器在现实生活中的应用。扩展卡尔曼滤波器(EKF)极大地拓宽了卡尔曼滤波的适用范围。EKF的基本思路是,假定卡尔曼滤滤对当前系统状态估计值非常接近于其真实值,于是将非线性函数在当前状态估计值处进行台劳展开并实现线性化。另一种非线性卡尔曼滤波叫线性化卡尔曼滤波。它与EKF的主要区别是前者将非线函数在滤波器对当前系统状态的最优估计值处线性化,而后者因为预先知道非线性系统的实际运行状态大致按照所要求、希望的轨迹变化,所以这些非线性化函数在实际状态处的值可以表达为在希望的轨迹处的台劳展开式,从而完成线性化。 不敏卡尔曼滤波器(UKF)是针对非线性系统的一种改进型卡尔曼滤波器。UKF处理非线性系统的基本思路在于不敏变换,而不敏变换从根本上讲是一种描述高斯随机变量在非线性化变换后的概率分布情况的方法。不敏卡尔曼滤波认为,与其将一个非线性化变换线性化、近似化,还不如将高斯随机变量经非线性变换后的概率分布情况用高斯分布来近似那样简单,因而不敏卡尔曼滤波算法没

卡尔曼滤波器

卡尔曼滤波器 来这里几个月,发现有些问题很多人都很感兴趣。所以在这里希望能尽自己能力跟大家讨论一些力所能及的算法。现在先讨论一下卡尔曼滤波器,如果时间和能力允许,我还希望能够写写其他的算法,例如遗传算法,傅立叶变换,数字滤波,神经网络,图像处理等等。 因为这里不能写复杂的数学公式,所以也只能形象的描述。希望如果哪位是这方面的专家,欢迎讨论更正。 卡尔曼滤波器– Kalman Filter 1.什么是卡尔曼滤波器 (What is the Kalman Filter?) 在学习卡尔曼滤波器之前,首先看看为什么叫“卡尔曼”。跟其他著名的理论(例如傅立叶变换,泰勒级数等等)一样,卡尔曼也是一个人的名字,而跟他们不同的是,他是个现代人! 卡尔曼全名Rudolf Emil Kalman,匈牙利数学家,1930年出生于匈牙利首都布达佩斯。1953,1954年于麻省理工学院分别获得电机工程学士及硕士学位。1957年于哥伦比亚大学获得博士学位。我们现在要学习的卡尔曼滤波器,正是源于他的博士论文和1960年发表的论文《A New Approach to Linear Filtering and Prediction Problems》(线性滤波与预测问题的新方法)。如果对这编论文有兴趣,可以到这里的地址下载:https://www.wendangku.net/doc/3510291020.html,/~welch/media/pdf/Kalman1960.pdf。 简单来说,卡尔曼滤波器是一个“optimal recursive data processing algorithm(最优化自回归数据处理算法)”。对于解决很大部分的问题,他是最优,效率最高甚至是最有用的。他的广泛应用已经超过30年,包括机器人导航,控制,传感器数据融合甚至在军事方面的雷达系统以及导弹追踪等等。近年来更被应用于计算机图像处理,例如头脸识别,图像分割,图像边缘检测等等。 2.卡尔曼滤波器的介绍 (Introduction to the Kalman Filter) 为了可以更加容易的理解卡尔曼滤波器,这里会应用形象的描述方法来讲解,而不是像大多数参考书那样罗列一大堆的数学公式和数学符号。但是,他的5条公式是其核心内容。结合现代的计算机,其实卡尔曼的程序相当的简单,只要你理解了他的那5条公式。 在介绍他的5条公式之前,先让我们来根据下面的例子一步一步的探索。

卡尔曼滤波简介和实例讲解.

卡尔曼,美国数学家和电气工程师。1930年5月 19日生于匈牙利首都布达佩斯。1953年在美国麻省理工学院毕业获理学士学位,1954年获理学硕士学位,1957年在哥伦比亚大学获科学博士学位。1957~1958年在国际商业机器公司(IBM)研究大系统计算机控制的数学问题。1958~1964年在巴尔的摩高级研究院研究控制和数学问题。1964~1971年到斯坦福大学任教授。1971年任佛罗里达大学数学系统理论研究中心主任,并兼任苏黎世的瑞士联邦高等工业学校教授。1960年卡尔曼因提出著名的卡尔曼滤波器而闻名于世。卡尔曼滤波器在随机序列估计、空间技术、工程系统辨识和经济系统建模等方面有许多重要应用。1960年卡尔曼还提出能控性的概念。能控性是控制系统的研究和实现的基本概念,在最优控制理论、稳定性理论和网络理论中起着重要作用。卡尔曼还利用对偶原理导出能观测性概念,并在数学上证明了卡尔曼滤波理论与最优控制理论对偶。为此获电气与电子工程师学会(IEEE)的最高奖──荣誉奖章。卡尔曼著有《数学系统概论》(1968)等书。 什么是卡尔曼滤波 最佳线性滤波理论起源于40年代美国科学家Wiener和前苏联科学家Kолмогоров等人的研究工作,后人统称为维纳滤波理论。从理论上说,维纳滤波的最大缺点是必须用到无限过去的数据,不适用于实时处理。为了克服这一缺点,60年代Kalman把状态空间模型引入滤波理论,并导出了一套递推估计算法,后人称之为卡尔曼

滤波理论。卡尔曼滤波是以最小均方误差为估计的最佳准则,来寻求一套递推估计的算法,其基本思想是:采用信号与噪声的状态空间模型,利用前一时刻地估计值和现时刻的观测值来更新对状态变量的估计,求出现时刻的估计值。它适合于实时处理和计算机运算。 卡尔曼滤波的实质是由量测值重构系统的状态向量。它以“预测—实测—修正”的顺序递推,根据系统的量测值来消除随机干扰,再现系统的状态,或根据系统的量测值从被污染的系统中恢复系统的本来面目。 释文:卡尔曼滤波器是一种由卡尔曼(Kalman)提出的用于时变线性系统的递归滤波器。这个系统可用包含正交状态变量的微分方程模型来描述,这种滤波器是将过去的测量估计误差合并到新的测量误差中来估计将来的误差。 卡尔曼滤波的应用 斯坦利.施密特(Stanley Schmidt)首次实现了卡尔曼滤波器.卡尔曼在NASA埃姆斯研究中心访问时,发现他的方法对于解决阿波罗计划的轨道预测很有用,后来阿波罗飞船的导航电脑使用了这种滤波器. 关于这种滤波器的论文由Swerling (1958), Kalman (1960)与 Kalman and Bucy (1961)发表.

关于卡尔曼滤波器的一个简单介绍

关于卡尔曼滤波器的一个简单介绍 在实际生产过程中,我们经常需要使用某种仪器测量某一物理参数。比如,用一台仪器测量大气中一氧化碳的浓度。由于测量误差永远存在,使得这样两个问题非常突出,首先,是否存在某个计算方法,能够从含有误差的测量结果中获得比较接近真实值的结果;其次,如何证明这样的结果是最优的,也就是说有没有这样一种数学方法,经过其进行处理后得到的测量结果是最接近真实值的。 为了消除测量误差,人们首先想到的方法是取平均值。通过对于同一物理量的多次测量,抵消可能存在的测量误差,从而得到真实值。但是,通过生产实践,人们很快发现这样的测量方法并不是最优的。如果参与平均值计算的数据量太小,就达不到抵消测量误差的目的,如果参与计算的数据量太多,不仅完全消除了可能的物理量变化,而且实现起来非常麻烦。 1960年,匈牙利数学家卡尔曼(Rudolf Emil Kalman,1930年出生于匈牙利首都布达佩斯。1953,1954年于麻省理工学院分别获得电机工程学士及硕士学位,1957年于哥伦比亚大学获得博士学位)在他的博士论文和1960年发表的论文《A New Approach to Linear Filtering and Prediction Problems》(线性滤波与预测问题的新方法)中提出一种计算方法,后来被称为卡尔曼滤波器。这种滤波器比较简单,但是对于绝大多数类似本文开头提出的问题,可以证明,它得出的结果是最优的。卡尔曼滤波器的最大优势是它非常简单,非常容易实现。故而在各领域广泛应用超过三十年。 下面简单介绍卡尔曼滤波器,为了便于阅读,尽量少使用数学公式。下面的用词不是非常严格的。 假如,我们需要用一个温度计测量一个房间的温度。每个1秒钟从温度计上读取一个数值。假设这个房间的真实温度是25度。 由于温度计本身有测量误差,我们得到的测量值是围绕25度上下波动的一组数值。“围绕”这一特性是符合我们的直观感受的。也就是说虽然温度计上的读数在不停的变化,但是我们知道温度计上出现26度或24度的可能性要比出现30度或20度的可能性大。这种特性在数学上被称为高斯分布。当有很多因素影响测量结果,而每种干扰因素都不起主导作用时,测量的结果呈现高斯分布。对于温度计来讲,制造工艺,空气扰动,我们读数时候的误差都可能影响测量结果。所以,温度计的读取结果是符合高斯分布的。高斯分布有两个参数,一个叫做期望,在这里可以等同于平均值,一个叫做方差。方差反映了数据的集中程度。比如一个温度计测量的结果分布在24到26度之间,另一个温度计测量结果在20到30度之间,显然,前一个温度计更好一些。它的数据方差就比较小。这里假设我们温度计的方差是3。于是,温度计的测量结果就是期望是25,方差是3的一组数据。 另外,我们可以根据经验猜测一下房间的温度(就好像把自己当成一个人体温度计),比如,我们猜测房间的温度是23度,当然,我们自己猜测的结果是有方差的,我们假设这个方差是4,于是根据人的感觉,测量结果是期望是23,方差是4的一组数据。 然后,由经验我们知道房间温度变化不大,基本可以认为,这一秒的温度和下一秒的温度是相等的。 现在,在第1秒,我们有了两个值,一个是温度计上显示的数据,25。一个是我们自己 根据感觉得出来的数据,23。那么相信谁呢?这里有一个数学公式 2 2 22 3 34 g k= + ,可以算出 kg=0.6,于是25×0.6+23×(1-0.6)=24.2,这个24.2就是我们在第1秒得到的测量结果。也就是说第1秒的温度是24.2度。 现在,我们进入了第2秒,这时,由于我们已经知道了第1秒的温度是24.2度,所以,

matlab对卡尔曼滤波的仿真实现

MATLAB 对卡尔曼滤波器的仿真实现 刘丹,朱毅,刘冰 武汉理工大学信息工程学院,武汉(430070) E-mail :liudan_ina@https://www.wendangku.net/doc/3510291020.html, 摘 要:本文以卡尔曼滤波器原理为理论基础,用MATLAB 进行卡尔曼滤波器仿真、对比卡尔曼滤波器的预测效果,对影响滤波其效果的各方面原因进行讨论和比较,按照理论模型进行仿真编程,清晰地表述了编程过程。 关键词:数字信号处理;卡尔曼滤波器;MATLAB ;仿真过程 中图分类号: TN912.3 1. 引言 随着信息时代和数字世界的到来,数字信号处理已成为当今一门极其重要的学科和技术领域。数字信号处理已在通信、语音、图像、自动控制、雷达、军事、航空航天、医疗和家用电器等众多领域得到了广泛的应用。在数字信号处理中,数字滤波占有极其重要的地位,目前对数字滤波器的设计有多种方法,其中著名的MATLAB 软件包在多个研究领域都有着广泛的应用,它的频谱分析[1]和滤波器的分析设计功能很强,从而使数字信号处理变得十分简单、直观。本文分析了数字滤波器的设计方法,举出了基于MATLAB 软件的信号处理工具在数字滤波器设计中的应用。 2. 卡尔曼滤波基本原理 卡尔曼滤波过程实际上是获取维纳解的递推运算过程[2]。从维纳解导出的卡尔曼滤波器实际上是卡尔曼滤波过程结束后达到稳态的情况,这时Kalman Filtering 的结果与Wiener Solution 是相同的[3]。具体推导如下: )()1|1(?)|(?n Gy n n x f n n x +??= )|(?)()(n n x n x n e ?= 已知由此求c a cG a f F G n e E n ,)1(( ..min )]([)(2?=??→?==ε 由 f G f G ,0??????????=??εε ⑴ )]1|1(?)()[()1|1(?)|(????+??=n n x ac n y n G n n x a n n x 可以是时变的,非平稳的随机信号 ⑵ Q n a n P +?=)1()(2 ε均为正数。 ⑶ ) () ()(2n P C R n CP n G += ⑷ )()](1[)()(n P n CG n G C P n ??== ε )(n G 是个随时间变化的量,每次输入输出,)(n G 就调整一次,并逐渐逼近Kalman Filter 的增益G ,而)1()(?

相关文档
相关文档 最新文档