clear all;
close;
clc;
%给定一组数据,测量误差为3;
%Z=10-3*randn(100,1);
Z=normrnd(10,3,100,1);
%测量误差
E_mea=3;
%给定数据初始估计值和估计误差
X_hat0=8;
E_est0=4;
%数据估计误差和估计值
E_est=E_est0;
X_hat=X_hat0;
Z(1)=X_hat0;
for i=1:length(Z)
t(i)=i;
%计算卡尔曼增益
Kk=E_est(i)/(E_est(i)+E_mea);
%计算估计值
X_hat(i+1)=X_hat(i)+Kk*(Z(i)-X_hat(i));
%更新估计误差
E_est(i+1)=(1-Kk)*E_est(i);
end
plot(Z);hold on
plot(X_hat);hold on
scatter(t,Z,'o');