卡尔曼滤波报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档