一维卡尔曼滤波设计及仿真毕业论文.docx
《一维卡尔曼滤波设计及仿真毕业论文.docx》由会员分享,可在线阅读,更多相关《一维卡尔曼滤波设计及仿真毕业论文.docx(30页珍藏版)》请在冰点文库上搜索。
石家庄经济学院本科生毕业设计
摘 要
卡尔曼滤波器研究的是基于最小均方误差准则的估计问题,描述了当输入由白噪声产生的随机信号时,使期望输出和实际输出之间的均方根误差达到最小的线性系统。
卡尔曼滤波器主要是用来处理非平稳数据和平稳数据的一种滤波算法,它的设计非常简单、大大减少了滤波装置的存储量和计算量,并且突破了平稳随机过程的限制,使卡尔曼滤波器适用于对时变信号的实时处理。
因此,卡尔曼滤波器在应用上有更加广泛的可能性和更加美好的前景。
目前卡尔曼滤波理论作为一种重要的最优且最高效的估计理论,已经被广泛应用于导航、控制、制导、通讯等各个领域,成为当前国际上研究的一大热点。
本篇论文在卡尔曼滤波的理论基础上,通过建立信号模型并利用仿真工具Matlab
6.5进行一维卡尔曼滤波、对比卡尔曼滤波器的预测效果,对影响滤波及其效果的各方面进行讨论和比较,按照理论模型进行仿真编程,完整清晰地描述了编程过程。
关键词:
卡尔曼滤波器;数字信号处理;MATLAB;仿真过程
ABSTRACT
Kalmanfilterisbasedontheminimummeansquareerrorestimationproblem,describestheinputgeneratedbytherandomwhitenoisesignal,thedesiredoutputandactualoutputtominimizetherootmeansquareerrorbetweenthelinearsystem.Kalmanfilterismainlyusedtohandlenon-stationarydataandasmoothdatafilteringalgorithm,itsdesignisverysimple,greatlyreducingtheamountofstoragefilterdevicesandcomputing,andexceededthelimitofstationaryrandomprocess,soCarlMannfiltersforreal-timetime-varyingsignalprocessing.Therefore,theapplicationofKalmanfilterinthepossibilityofamoreextensiveandbetterprospects.Kalmanfilteringtheoryiscurrentlythebestasanimportantandmostefficientestimationtheoryhasbeenwidelyusedinnavigation,control,guidance,communicationsandotherfields,becomeamajorinternationalresearchfocus.
ThesisfilmbasedonthetheoryofKalmanfiltering,thesignalmodelbybuildingandusingsimulationtoolsMatlab6.5foraKalmanfilter,thepredictiveeffectofBikaermanfilter,filteranditseffectontheimpactofvariousaspectsofthediscussionandcomparison,inaccordancewiththetheoreticalmodelsimulationprogramming,clearandcompletedescriptionoftheprogrammingprocess.
Keywords:
Kalmanfilter;Digitalsignalprocessing;MATLAB;Thesimulationprocess
I
石家庄经济学院本科生毕业设计
目 录
摘 要 I
ABSTRACT I
引言 1
1绪论 2
1.1卡尔曼滤波的研究背景及意义 2
1.2卡尔曼滤波理论的提出及发展 2
1.3卡尔曼滤波理论的应用 3
2卡尔曼滤波理论 3
2.1引言 3
2.2卡尔曼滤波的信号模型 5
2.2.1状态方程和量测方程 5
2.2.2信号模型 7
2.3卡尔曼滤波方法 7
2.3.1卡尔曼滤波的一步递推法模型 7
2.3.2卡尔曼滤波的递推公式 8
2.4卡尔曼滤波器的稳定性及误差分析 10
2.4.1滤波稳定性分析 10
2.5卡尔曼滤波器算法 11
3卡尔曼滤波器设计与仿真实验 12
3.1卡尔曼滤波模型建立 12
3.2卡尔曼滤波仿真结果 15
3.3卡尔曼滤波仿真结果误差分析 20
4结论 23
致 谢 24
参考文献 25
附录:
26
II
石家庄经济学院本科生毕业设计
一维卡尔曼滤波设计及仿真
引言
随着信息技术的发展,滤波器得到越来越多的应用,从混有噪声中滤除信号中的噪声,提取有用信号是滤波器的基本目的。
以前,在卡尔曼滤波之前已经建立了采用最小二乘法使用的观测数据和维纳滤波的方法来过滤平稳随机过程的理论。
然而,仅有这些特性或过滤方法是不够的,卡尔曼滤波正是在克服以前滤波法的基础上提出的,对过去的滤波方法是一个重大进步。
过滤器是为了过滤掉在具体操作频段的信号,是遏制和防止干扰的重要措施。
递归卡尔曼滤波器有一系列数学公式描述,提供了一种有效的方法来计算状态估计过程,估计最小均方误差。
卡尔曼滤波器被广泛使用,功能强大,它可以估算信号的过去和现在的状态,即使不知道了该模型的确切性质。
卡尔曼滤波是一种最优估计技术,因此卡尔曼滤波器越来越越得到重视。
本篇论文在探讨卡尔曼滤波理论的基础上,重点对一维卡尔曼滤波的设计和应用进行了学习探讨,并且在Matlab6.5平台上进行了编程仿真来观察卡尔曼滤波器对实时信号进行处理的过程。
论文主要内容如下:
第一部分介绍了课题背景,探讨了卡尔曼滤波理论的研究背景、意义和该理论的提出、发展以及基本思想,并说明其在实际各个领域中的应用;
第二部分介绍了卡尔曼滤波的理论部分,着重描述了随机线性离散系统的卡尔曼滤波理论,并给出了随机线性系统的数学模型,详细推导了随机线性离散系统的卡尔曼滤波方程以及对滤波的稳定性和误差做出了分析;
第三部分介绍了卡尔曼滤波在Matlab6.5实验平台上的仿真,并根据主要信号模型,利用仿真工具对信号进行卡尔曼滤波,最终完成对滤波结果的信号分析与误差分析;
第四部分总结了全文内容并做出展望。
II
石家庄经济学院本科生毕业设计
1绪论
1.1卡尔曼滤波的研究背景及意义
维纳在1942年2月首先提出了对于平稳时间序列的最小均方误差估计的明确解。
当时美国的一个战争研究团体发表了一个秘密文件,其中就包括维纳关于滤波问题的研究工作。
这项研究是用于防空火力控制系统的。
维纳滤波器是基于最小均方误差准则的估计器。
为了寻求维纳滤波器的冲激响应,需要求解著名的维纳-霍夫方程。
这种滤波理论所求的是使均方误差最小的系统最佳冲激响应的明确表达式。
维纳滤波理论的不足之处是明显的。
它在运用的过程中必须把用到的全部数据存储起来,当一个新的数据来到后,要进行刷新,重新计算自相关和互相关序列,而且每一时刻都要通过对这些数据的运算才能得到所需要的各种量的估值。
按照这种滤波方法设置的专用计算机的存储量与计算量必然很大,很难进行实时处理。
虽然许多科技工作者对此多方探索,但在解决非平稳过程的滤波问题时,给出能用的方法为数甚少。
再者求解维纳―霍夫方程需要耗费大量计算机对高阶矩阵求逆。
因此,维纳滤波算法难以用于实时处理中,尤其是无法用于军事、航空航天等领域。
到20世纪50年代中期,随着空间技术的发展,这种方案越来越不能满足实际应用的需要,面临了新的挑战。
正是在这种背景下,卡尔曼滤波正式问世了。
卡尔曼滤波用信号与噪声的状态空间模型取代了相关函数,用时域的微分方程来表示滤波问题,得到了递推估计算法,这适用于计算机实时处理。
它突破了维纳滤波对平稳过程的限制,也没有无限时间的要求。
估计过程则利用系统状态方程、白噪声激励和观测方程的统计特性来形成滤波算法。
本篇论文将对卡尔曼滤波理论进行探讨,并对其滤波算法进行仿真实验。
1.2卡尔曼滤波理论的提出及发展
20世纪40年代Wiener等美国科学家提出了最佳线性滤波理论,既是后人熟知的维纳滤波理论。
1960年和1961年,卡尔曼(R.E.Kalman)和布西
(R.S.Bucy)提出了递推滤波算法,成功地将状态变量法引入到滤波理论中来,用消息与干扰的状态空间模型代替了通常用来描述他们的协方差函数,将状态空间描述与离散时间刷新联系起来,适于计算机直接进行运算,而不是直接去寻求滤波器冲激响应的明确公式。
这种方法得出的是表征状态估计值以其均方误差的微分方程,给出的是递推算法。
这就是著名的卡尔曼理论,或称卡尔
曼―布西滤波。
卡尔曼(Kalman),1930年出生于匈牙利首都布达佩斯,匈牙利著名数学家。
1953、1954年于麻省理工学院分别获得电机工程学士及硕士学位。
1957年于哥伦比亚大学获得博士学位。
我们要学习的卡尔曼滤波器,正是源于他的博士论
28
文和1960年发表的论文《A New Approach to Linear Filtering andPredictionProblems》(线性滤波与预测问题的新方法)。
卡尔曼滤波方法以它的发明者鲁道夫.E.卡尔曼(RudolphE.Kalman)命名,但是根据文献可以知道,Peter Swerling在更早之前就提出了一种类似的算法。
卡尔曼滤波是一种高效率的递归滤波器, 它可以从一系列的不完全及包含噪声的测量中估计动态系统的状态。
当输入由白噪声产生的随机信号序列时,期望输出和实际输出之间的均方根误差达到最小的线性系统。
斯坦利.施密特(Stanley Schmidt)是第一个实现卡尔曼滤波器的人,卡尔曼当时在NASA埃姆斯研究中心访问时就发现了他的研究方法对于解决阿波罗计划的轨道预测很有用,后来阿波罗飞船的导航电脑就使用了这种滤波器。
关于这种滤波器的论文由Swerling(1958),Kalman(1960)与KalmanandBucy(1961)发表。
卡尔曼滤波通过预测加上反馈,再到实测,最终进行自我修正,是一种测量重构系统的状态向量。
它可以根据系统的测量值来消除随机干扰而实现系统的状态或恢复系统的真面目。
1.3卡尔曼滤波理论的应用
20世家50年代中期,随着空间技术的飞速发展,要求对卫星轨道进行精确的测量。
为此,人们将滤波问题以微分方程表示,提出了一系列适应空间技术应用的精炼算法。
卡尔曼滤波理论的提出,在实际中得到了大量的应用,特别是在航空空间中的应用,比如美国阿波罗登月的轨道预测以及雷达跟踪目标等。
到了21世家,卡尔曼理论更被应用于计算机图像处理,比如声音识别,指纹识别,图像分割等等。
伴随着技术的不断发展,目前在跟踪、导航、控制、制导、通讯等现代工程方面得到了大量运用。
卡尔曼滤波理论最成功的是被运用于故障诊断、随机最优控制问题等领域。
卡尔曼滤波的一个典型应用是对物体位置进行估计,运用观察序列预测出物体的坐标位置及速度。
在很多工程应用(如通讯、计算机)中都可以找到它的身影。
同时,卡尔曼滤波也是控制系统工程以及控制理论中的一个重要话题,它能最优且高效率地解决大部分的问题。
以上简单地介绍了卡尔曼滤波理论在实际领域中的应用,随着科学技术的不断发展与进步,其理论将不断完善,运用领域也将更加广泛。
2卡尔曼滤波理论
2.1引言
随机信号(random process)是普遍存在的。
首先,任何信号本身都存在随机干扰;其次,任何确定性信号经过测量后往往就会引入随机性误差而使该信号随机化;因此我们把对系统功能或信号起干扰作用的随机信号称之为噪声。
噪声按功率谱密度被划分为白噪声(whitenoise)和有色噪声(colornoise),我们把均值为0方差为常数的白噪声叫纯随机信号(purerandomsignal)。
所以,随机信号可以看成是纯随机信号与确定性信号并存混合后的结果。
干扰可以是噪声或是确定信号,白噪声加上一个直流成分(确定性信号),就组成了最简单的混合随机信号。
所以我们需要寻找一种最优的线性滤波器,当信号源和随机噪声或干扰源同时输入滤波器时,能在输出端将信号尽可能精确完整地表现出来。
卡尔曼滤波正是在这样的背景下产生的用来解决这一类问题的方法,它是从噪声和干扰源中精确提取出有用的信号;实际上这种线性滤波方法就是一种线性预测问题或者估计问题。
假设有一个线性离散系统,它的单位脉冲响应如图2.1所示,当我们输入一个观测随机信号时,简称观测值,且该信号包含噪声和有用信号,简称信号,即观测值用u(n)表示,噪声用i(n)表示,信号用e(n)表示;
u(n)=e(n)+i(n)
(2-1)
e(n)
u(n)
å
i(n)
图2.1观测信号的组成
h(n)
u(n)
o(n)
图2.2信号处理的一般模型
滤波的目的是为了得到不含噪声的信号e(n)。
e(n)称为期望信号;系统的期望输出:
Y(n)=e(n);
系统实际输出:
y(n)=ê(n);
预测:
已知过去的观测值u(n-1),u(n-2),u(n-3),u(n-m) 估计当前及以后时刻
的信号值
ê(n+N),N≥0;
滤波:
已知当前和过去的观测值u(n-1),u(n-2),u(n-3), u(n-m)估计当前的信号ê(n)。
卡尔曼滤波用前一个估计值和最近一个观察数据来估计信号当前值,它用状态方程和递推的方法进行估计,它的解以估计值(常是状态变量值)形式给出。
系统常称为线性最优估计器。
如果该系统是因果系统,则输出的可以看成是由当前时刻的观测值和过去时刻的观测值的估计值。
用当前的和过去的观测值来估计当前的信号称为滤波;从图2.2的系统框图中估计到的信号和我们期望得到的有用信号可能不完全相同,这里用来表示真值和估计值之间的误差:
a(n)=e(n)+ê(n)
显然是随机变量,卡尔曼滤波的误差准则就是最小均方误差准则:
E[a2(n)]=E[(e(n)-ê(n))]
(2-2)
(2-3)
卡尔曼滤波器就是当输入由白噪声产生的随机信号时,使期望输出和实际输出之间的均方根误差达到最小的线性系统。
卡尔曼滤波是用当前一个估计值和最近一个观测值来估计信号的当前值,它的解形式是状态变量值。
设计卡尔曼的信号和噪声过滤功能有相关的要求,即卡尔曼滤波要有一个已知的状态方程和测量方程。
2.2卡尔曼滤波的信号模型
认识了前面的的内容,即维纳滤波器是在u(n)值的基础上和过去所有的观测值u(n−1),u(n−2)来估计当前值e(n),它的解决方案是基于最小均方误差的系统下的传递函数H(z)或单位冲激响应h(N)的原则。
卡尔曼滤波不需要保存过去的测量数据,它是基于先前的估计和最近的观测值u(n)来估计信号,这是用来估计状态方程和递推方法的当前值,因此,对于平稳信号和时间不变性卡尔曼滤波不做要求。
我们利用维纳滤波的信号模型来引入卡尔曼滤波模型。
2.2.1状态方程和量测方程
要想给出卡尔曼滤波的信号模型,就要先来讨论状态方程和量测方程。
图
2.3是维纳滤波的模型,信号e(n)可以认为是由白噪声统B(z)的响应,
x1(n)
激励一个线性系
B(z)
e(n)
x1(n)
图2.3维纳滤波的信号模型
假设响应和激励的时域关系可以用下式表示:
e(n)=be(n)+x1(n-1)
(2-4)
上式是一介AR模型。
卡尔曼滤波器中的信号e(n)被称为状态变量,可用矢量E(k)来表示,在状态k时刻可用E(k)表示,在状态k-1时刻可用E(k-1)表示,以此类推,x1(n)是激励信号,矢量可表示为x(k),用传递矩阵B(k)表示激励和响应之间的关系,表明它是一个由结构所决定的系统,和BZ有一定的关系。
有了以上假设后我们给出状态方程:
E(k)=B(k)E(k-1)+x1(k-1)
(2-5)
上式表示的含义就是在k时刻的状态E(k);可以由它的前一个时刻的状态
E(k−1)来求解;即认为k-1时刻以前的各状态都已记忆在状态E(k−1)中了。
卡尔曼滤波是基于测量系统数据(即观察)来估计的,所以除了状态方程
系统的运动外,还对测量方程有要求。
仍然从维纳滤波的观测信号模型开始,其中图2.4为信号观测模型。
∑
B(z)
x(n)
u(n)
e(n)
x1(n)
图2.4信号观测模型
观测数据和信号的关系为:
u(n)=e(n)+x(n)
(2-6)
x(n)通常是零均值的高斯白误差矢量,在卡尔曼滤波中,用 U(k)表示量测到的信号矢量序列,x(k)是量测时引入的误差矢量,因此量测矢量U(k)与状态
矢量E(k)之间的关系可以写成:
U(k)=E(k)+x(k)
(2-7)
上式和维纳滤波u(n)=e(n)+x(n)在概念上是一致的,即是说一维的卡尔曼滤波信号模型和维纳滤波的信号模型是一致的。
把式(2-8)推广就得到更普遍的多维量测方程:
U(k)=G(k)E(k)+x(k)
(2-8)
上式中的G(k)称为量测矩阵,引入它的原因是,量测矢量U(k)和状态矢量E(k)的维数不一定相同,因为我们并不需要观察的所有的参数状态。
假如U(k)是m´1的矢量,E(k)是n´1的矢量,G(k)就是m´n的矩阵,x(k)是m´1的矢量。
2.2.2信号模型
根据状态方程和量测方程:
E(k)=B(k)E(k-1)+x1(k-1)
U(k)=G(k)E(k)+x(k)
可以给出卡尔曼滤波的信号模型,如图2.5所示。
∑
z-1
∑
B(k+1)
x(k)
U(k)
x1(k)
E(k)
E(k+1)
图2.5卡尔曼滤波信号模型
2.3卡尔曼滤波方法
通过推导,卡尔曼状态方程和量测方程滤波模型,知道卡尔曼滤波的基本思想是第一个通过滤波器时不考虑输入信号x1(k)和观测噪声x(k),得到状态变量和输出信号(即观测数据)的估计值,然后估计误差加权校正的状态变量的估计值,使输出信号状态变量估计值的均方误差最小。
卡尔曼滤波是最佳值加权矩阵的关键。
建立一个良好的信号模型和卡尔曼滤波的状态方程和量测方程,要解决的问题是要找到最小均方误差E(k)信号的估计值Ê(k)。
2.3.1卡尔曼滤波的一步递推法模型
把状态方程和量测方程重新给出:
E(k)=B(k)E(k-1)+x1(k-1)
U(k)=G(k)E(k)+x(k)
(2-9)
(2-
10)
上式中B(k)和G(k)是已知的,U(k)是观测到的数据,也是已知的,假设信号的上一个估计值Ê(k-1)已知,现在的问题就是如何来求当前时刻的估计值Ê(k)。
上两式中如果没有x(k)与x1(k),可以立即求得E(k),估计问题的出现就
是因为信号与噪声的叠加。
假设暂不考虑x1(k) 与
Ê(k)和Û(k)分别用Ê`(k)和Û`(k)表示,得:
x(k),用上两式得到的
Ê`(k)=B(k)E(k-1)
Û`(k)=G(k)Ê`(k)=G(k)B(k)Ê`(k-1)
(2-11)
(2-12)
必然,观测值U(k)和估计值U`(k)
新息(innovation)。
之间有误差,它们之间的差U``(k)称为
U``(k)=U(k)-Û`(k)
显然,新息的产生是由于我们前面忽略了x1(k)
(2-13)
与x(k)所引起的,也就是
说新息里面包含了x1(k) 与x(k)的信息成分。
因而我们用新息U``(k)乘以一个
修正矩阵H(k),用它来代替式(2-14)中的x1(k)来对E(k)进行估计:
E(k)=B(k)E(k-1)+H(k)U(k)
=B(k)Ê(k-1)+H(k)[U(k)-G(k)Ê(k-1)]14)
(2-
由(2-10)~(2-15)可以画出卡尔曼滤波对E(k)进行估计的递推模型,
如图2.6所示,输入为观测值U(k)输出为信号估计值Ê(k)。
Ê(k)
Z-1
∑
H(k)
∑
G(k)
B(k)
Û`(k)
U(k)
Ê(k-1)
Û``(k)
图2.6卡尔曼滤波的一步递推法模型
2.3.2卡尔曼滤波的递推公式
从图6容易看出,要估计出Ê(k)就必须要先找到最小均方误差下的修正矩阵H(k),结合式(2-15)、(2-10)、(2-11)得:
Ê`(k)=B(k)Ê(k-1)+H(k)[G(k)E(k)+x(k)-G(k)B(k)E(k-1)]
=B(k)Ê(k-1)+H(k)[G(k)[B(k)Ê(k-1)+x(k-1)+x(k)-G(k)B(k)Ê(k-1)]]
=B(k)Ê(k-1)+[J-H(k)G(k)][B(k)Ê(k-1)+x(k-1)]+H(k)x(k)
(2-15)
用上式来求最小均方误差下的H(k),然后把求到的H(k)代入(2-15)则可以得到估计值Ê(k)。
设真值和估计值之间的误差为:
E``(k)=E(k)-Ê(k),误差是个矢量,因而均方误差是一个矩阵,用δ(k)表示。
把式(2-16)代入得:
E``(k)=E(k)-Ê(k)
=[J-H(k)G(k)][B(k)[E(k-1)-Ê(k-1)]+x(k-1)]+H(k)x(k)
均方误差矩阵:
E[E``(k)E``(k)i]
i表示对向量取共轭转置。
为了计算方便,令:
δ(k)=E[(E(k)-Ê(k)(E(k