卡尔曼滤波的MATLAB实现Word格式.doc
- 文档编号:14177395
- 上传时间:2022-10-19
- 格式:DOC
- 页数:8
- 大小:791.50KB
卡尔曼滤波的MATLAB实现Word格式.doc
《卡尔曼滤波的MATLAB实现Word格式.doc》由会员分享,可在线阅读,更多相关《卡尔曼滤波的MATLAB实现Word格式.doc(8页珍藏版)》请在冰豆网上搜索。
(a)求出卡尔曼增益矩阵,并得出最优估计和观测矢量之间的递归关系。
(b)通过一个标量框图(不是矢量框图)表示出状态矢量中元素和估计值的计算过程。
(c)用模拟数据确定状态矢量的估计值并画出当k=0,1,…,10时和的图。
(d)通常,状态矢量的真实值是得不到得。
但为了用作图来说明问题,表P8.1和P8.2给出来状态矢量元素得值。
对于k=0,1,…,10,在同一幅图中画出真实值和在(c)中确定的的估计值。
对重复这样过程。
当k从1变到10时,对每一个元素i=1,2,计算并画出各自的误差图,即。
(e)当k从1变到10时,通过用卡尔曼滤波器的状态误差协方差矩阵画出和,而,。
(f)讨论一下(d)中你计算的误差与(e)中方差之间的关系。
二、实验原理
1、卡尔曼滤波简介
卡尔曼滤波是解决以均方误差最小为准则的最佳线性滤波问题,它根据前一个估计值和最近一个观察数据来估计信号的当前值。
它是用状态方程和递推方法进行估计的,而它的解是以估计值(常常是状态变量的估计值)的形式给出其信号模型是从状态方程和量测方程得到的。
卡尔曼过滤中信号和噪声是用状态方程和测量方程来表示的。
因此设计卡尔曼滤波器要求已知状态方程和测量方程。
它不需要知道全部过去的数据,采用递推的方法计算,它既可以用于平稳和不平稳的随机过程,同时也可以应用解决非时变和时变系统,因而它比维纳过滤有更广泛的应用。
2、卡尔曼滤波的递推公式
………
(1)
………
(2)
………(3)
………(4)
3、递推过程的实现
如果初始状态的统计特性及已知,并
令
又
将代入式(3)可求得,将代入式
(2)可求得,将此代入式
(1)可求得在最小均方误差条件下的,同时将代入式(4)又可求得;
由又可求,由又可求得,由又可求得,同时由与又可求得……;
以此类推,这种递推计算方法用计算机计算十分方便。
三、MATLAB程序
%卡尔曼滤波实验程序
clc;
y1=[3.29691969,3.38736515,7.02830641,9.71212521,11.42018315,15.97870583,22.06934285,28.30212781,30.44683831,38.75875595];
%观测值y1(k)
y2=[2.10134294,0.47540797,3.17688898,2.49811140,2.91992424,6.17307616,5.42519274,3.05365741,5.98051141,4.51016361];
%观测值y2(k)
p0=[1,0;
0,1];
p=p0;
%均方误差阵赋初值
Ak=[1,1;
%转移矩阵
Qk=[1,0;
%系统噪声矩阵
Ck=[1,0;
%量测矩阵
Rk=[1,0;
0,2];
%测量噪声矩阵
x0=[0,0]'
;
xk=x0;
%状态矩阵赋初值
fork=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)
plot(i,x2(i),'
x2(k)的估计值'
X1=[0,1.65428714,3.50300702,5.997852924,9.15040740,12.50873910,16.92192594,21.34483352,25.89335144,31.54135330,36.93605670];
%由模拟得到的实际状态值X1(k)
X2=[0,1.65428714,1.84871988,2.47552222,3.17187816,3.35833170,4.41318684,4.42290758,4.54851792,5.64800186,5.394470340];
%由模拟得到的实际状态值X2(k)
figure%在同一幅图中画出状态矢量的估计值与真实值
i,X1(i+1),'
b'
x1(k)的真实值'
i,X2(i+1),'
x2(k)的真实值'
fori=1:
10%计算x(k)的误差
e1(i)=X1(i+1)-x1(i);
e2(i)=X2(i+1)-x2(i);
figure%画出误差图
plot(i,e1(i),'
r'
x1(k)的误差'
plot(i,e2(i),'
x2(k)的误差'
figure%通过用卡尔曼滤波器的状态误差协方差矩阵画出E[ε1(k/k)^2]和E[ε2(k/k)^2]
plot(i,pk(1,i),'
h=legend('
由状态误差协方差矩阵得到的E[ε1(k/k)^2]'
Interpreter'
plot(i,pk(2,i),'
h=legend('
由状态误差协方差矩阵得到的E[ε2(k/k)^2]'
四、实验结果分析
(a)卡尔曼增益矩阵:
估计值与观测值之间的递归关系为:
(b)状态矢量估计值的计算框图:
+
(c)和的图:
(d)真实值与估计值的比较图:
各自的误差图:
(e)通过用卡尔曼滤波器的状态误差协方差矩阵画出的和:
(f)分析:
(e)中的方差是(d)中的误差平方后取均值,是均方误差。
误差直接由真实值减去估计值,有正有负,而均方误差没有这个缺陷,更能综合的表示滤波的效果。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 卡尔 滤波 MATLAB 实现