现代信号处理Matlab仿真——例611

  • 格式:doc
  • 大小:174.50 KB
  • 文档页数:5

下载文档原格式

  / 5
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

例6.11

利用卡尔曼滤波估计一个未知常数

题目:

设已知一个未知常数x 的噪声观测集合,已知噪声v(n)的均值为零,

方差为

,v(n)与x 不相关,试用卡尔曼滤波估计该常数

题目分析:

回忆Kalman 递推估计公式

由于已知x 为一常数,即不随时间n 变化,因此可以得到: 状态方程: x(n)=x(n-1)

观测方程: y(n)=x(n)+v(n)

得到A(n)=1,C(n)=1, , 将A(n)=1,代入迭代公式

得到:P(n|n-1)=P(n-1|n-1)

用P(n-1)来表示P(n|n-1)和P(n-1|n-1),这是卡尔曼增益表达式变为

从而 2v σ1ˆˆ(|1)(1)(1|1)(|1)(1)(1|1)(1)()()(|1)()[()(|1)()()]ˆˆˆ(|)(|1)()[()()(|1)](|)[()()](|1)H w H H v x n n A n x n n P n n A n P n n A n Q n K n P n n C n C n P n n C n Q n x

n n x n n K n y n C n x n n P n n I K n C n P n n --=----=----+=--+=-+--=--2()v v

Q n σ=()0w Q n =(|1)(1)(1|1)(1)()H w P n n A n P n n A n Q n -=----+21

()(|1)[(|1)]v K n P n n P n n σ-=--+22(1)()[1()](1)(1)v

v P n P n K n P n P n σσ-=--=-+

利用递归的方法

...

得到一般的P(n)计算式

将上式代入卡尔曼增益K(n)计算式得:

最后得到离散卡尔曼滤波器计算式:

22(0)(1)(0)v v P P P σσ=+2222(1)(0)(2)(1)2(0)v v v v P P P P P σσσσ==++2222(2)(0)(3)(2)3(0)v v v v

P P P P P σσσσ==++22(0)()(0)v v P P n nP σσ=+22(1)(0)()(1)(0)v v P n P K n P n nP σσ-==-++2(0)ˆˆˆ()(1)[()(1)](0)v P x n x n y n x n nP σ=-+--+

Matlab实现

clear

N=200;

%w(n)=0

A=1;

x(1)=50;%initial state

for k=2:N;

x(k)=A*x(k-1);

end

V=randn(1,N);

rv_sd=std(V);

Rvv=rv_sd.^2;

%Rxx no use,Rww is 0

C=1;

Y=C*x+V;

%Kalman filter to estimate

p(1)=10;%initial MSE value

s(1)=100;%initial estimated value

for t=2:N;

p(t)=p(1).*Rvv/(t*p(1)+Rvv);

k(t)=p(1)/(t*p(1)+Rvv);

s(t)=A*s(t-1)+k(t)*(Y(t)-A*C*s(t-1)); end

t=1:N;

figure(1)

plot(t,k); title('Kalman Gain');

figure(2)

plot(t,s,'r',t,Y,'g',t,x,'b');

legend('estimated','measured','state'); figure(3)

plot(t,p); title('Mean Square of Error');

仿真结果