- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
卡尔曼滤波的MATLAB实现
一、实验内容
一个系统模型为
同时有下列条件:
初始条件已知且有。
是一个标量零均值白高斯序列,且自相关函数已知为。
另外,我们有下列观测模型,即
且有下列条件:
和是独立的零均值白高斯序列,且有
对于所有的j和k,与观测噪声过程和是不相关的,即
我们希望得到由观测矢量,即估计状态矢量的卡尔曼滤波器的公式表示形式,并求解以下问题:
求出卡尔曼增益矩阵,并得出最优估计和观测矢量之间的递归关系。
通过一个标量框图(不是矢量框图)表示出状态矢量中元素和估计值的计算过程。
用模拟数据确定状态矢量的估计值并画出当k=0,1,…,10时和的图。
通常,状态矢量的真实值是得不到得。但为了用作图来说明问题,表P8.1和P8.2给出来状态矢量元素得值。对于k=0,1,…,10,在同一幅图中画出真实值和在(c)中确定的的估计值。对重复这样过程。当k从1变到10时,对每一个元素i=1,2,计算并画出各自的误差图,即。
当k从1变到10时,通过用卡尔曼滤波器的状态误差协方差矩阵画出和,而,。
讨论一下(d)中你计算的误差与(e)中方差之间的关系。
二、实验原理
1、卡尔曼滤波简介
卡尔曼滤波是解决以均方误差最小为准则的最佳线性滤波问题,它根据前一个估计值和最近一个观察数据来估计信号的当前值。它是用状态方程和递推方法进行估计的,而它的解是以估计值(常常是状态变量的估计值)的形式给出其信号模型是从状态方程和量测方程得到的。
卡尔曼过滤中信号和噪声是用状态方程和测量方程来表示的。因此设计卡尔曼滤波器要求已知状态方程和测量方程。它不需要知道全部过去的数据,采用递推的方法计算,它既可以用于平稳和不平稳的随机过程,同时也可以应用解决非时变和时变系统,因而它比维纳过滤有更广泛的应用。
2、卡尔曼滤波的递推公式
………(1)
………(2)
………(3)
………(4)
3、递推过程的实现
如果初始状态的统计特性及已知,并
令
又
将代入式(3)可求得,将代入式(2)可求得,将此代入式(1)可求得在最小均方误差条件下的,同时将代入式(4)又可求得;由又可求,由又可求得,由又可求得,同时由与又可求得……;以此类推,这种递推计算方法用计算机计算十分方便。
三、MATLAB程序
%卡尔曼滤波实验程序
clc;
y1=[3379111522283038; %观测值y1(k)
y2=[2032265354; %观测值y2(k)
p0=[1,0;0,1];p=p0; %均方误差阵赋初值
Ak=[1,1;0,1]; %转移矩阵
Qk=[1,0;0,1]; %系统噪声矩阵
Ck=[1,0;0,1]; %量测矩阵
Rk=[1,0;0,2]; %测量噪声矩阵
x0=[0,0];xk=x0; %状态矩阵赋初值
for k=1:10
Pk=Ak*p*Ak+Qk; %滤波方程3
Hk=Pk*Ck*inv(Ck*Pk*Ck+Rk); %滤波方程2
yk=[y1(k);y2(k)]; %观测值
xk=Ak*xk+Hk*(yk-Ck*Ak*xk); %滤波方程1
x1(k)=xk(1);
x2(k)=xk(2); %记录估计值
p=(eye(2)-Hk*Ck)*Pk; %滤波方程4
pk(:,k)=[p(1,1),p(2,2)]; %记录状态误差协方差矩阵
end
figure %画图表示状态矢量的估计值
subplot(2,1,1)
i=1:10;
plot(i,x1(i),k)
h=legend(x1(k)的估计值)
set(h,interpreter,none)
subplot(2,1,2)
i=1:10;
plot(i,x2(i),k)
h=legend(x2(k)的估计值)
set(h,inter
您可能关注的文档
最近下载
- 中外海军经典战例分析(中国人民解放军海军工程大学)网课章节测试答案.pdf VIP
- 2025年液化天然气储运工技能证书全国考试题库(含答案).pdf VIP
- 2025年新教科版五下科学全册知识点(重点版).pdf
- 11S405-2 建筑给水聚烯烃类塑料管道安装标准图集.pdf VIP
- YSM组合式空调机组样本.pdf VIP
- 英语自然拼读法有效记忆技巧.docx VIP
- 2023-2024学年广东省八年级(下)期末语文试卷(含详细答案解析).docx VIP
- 河南省鹤壁市小升初语文真题试卷d卷.doc VIP
- 实验初中德育工作行事历.xls VIP
- GB50210-2018 建筑装饰装修工程质量验收标准.doc VIP
文档评论(0)