卡尔曼滤波报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
卡尔曼滤波实验报告
一、实验任务
产生含噪声信号X(n)=sin(2*pi*f*n)+w(n),f=0.05,w(n)~N(0,1.2)。编写程序运用卡尔曼滤波进行去噪处理,要求画出去噪前和去噪后图形,滤波误差及收敛过程。
二、实验程序
clc;
clear;
N=256 ; %信号与噪声的长度离散信号个数
w=randn(1.2,N); %产生高斯白噪声,令方差为1.2
f=0.05; %实正弦信号频率
s=sin(2*pi*f*(0:N-1)) ; %产生正弦信号
subplot(311);
plot(s);
title('有用信号s(n)')
grid on;
x=s+w;
subplot(312);
plot(x);
title('加噪信号x(n)')
grid on;
c=[1]; %观测矩阵
a=[1]; %状态转移矩阵
b=[1]; %输入矩阵
H=[1];
R=std(w); %R是观测白噪声v(k)的方差Y(1)=20;
P(1)=10;
for i=1:1:N-1
Y(i+1)=a*Y(i)+b*s(i);
P(i+1)=a*P(i);
Kg(i)=P(i+1)*H'*inv(H*P(i+1)*H'+R);
Y(i+1)= Y(i+1)+Kg(i)*(x(i)-H*Y(i+1));
P(i+1)=P(i+1)-Kg(i)*H*P(i+1);
end;
subplot(313);
t=1:N;
plot(t,Y);
title('通过卡尔曼滤波后的估计信号y(n)')
grid on;
三、实验结果
四、实验总结
与维纳滤波器实验结果相比,卡尔曼滤波器的输出更加平滑,但是仍没有去除掉曲线中的椒盐噪声点,这一点需要继续改进。
卡尔曼滤波就是根据前一个估计值x^
k-1和当前的观测值y
k
来对信号作递推估计,
得到x^
k 。首先建立卡尔曼滤波器的模型,由状态方程和观测方程x
k
=A
k
x
k-1
+w
k-1
,
y k =C
k
x
k
+v
k
,由此可得到k时刻的预测值x^
k
’=A
k-1
x^
k-1
与估计值y^
k
’=C
k
x^
k
’=C
k
A
k
x^
k-1
,定义
新息y~
k =y
k
-y^
k
’,由于w
k-1
和v
k
的影响才产生了y~
k
,为了得到最有估计值,有必要利
用一系列矩阵H
k 来校正预测值y^
k
’,此时x^
k
= A
k-1
x^
k-1
+H
k
(y
k
- C
k
A
k
x^
k-1
)上式为卡尔曼滤
波器的递推方程,这样就可以根据前一个估计值x^
k-1和当前观测值y
k
对信号作递推估
计,得到x^
k
。