多元信息融合EKF作业

clear all;
close all;
clc

Q=0.01;
R=0.01;
X0=1;
P0=0.01;
N=100;
W=sqrt(Q)*randn(1,N);
V=sqrt(R)*randn(1,N);


%模型
for k=1:N
   if k==1
   X(1)=X0+1/X0+W(k);
   else
X(k)=(X(k-1)+1/X(k-1))+W(k);
   end
end
for k=1:N
   if k==1
   Y(1)=X0^2+V(k);
   else
Y(k)=X(k)*X(k)+V(k);
   end
end
%%%f(x)=x+1/x,h(x)=x*x,f'(x)=1-1/(x*x),h'(x)=2*x;

for k=1:N
    if k==1
        F(k)=1-1/X0*X0;   %%f(x)求导
        X_pre(k)=X0+1/X0;   %%带入f(x)
        H(k)=2*X_pre(k);
        P_pre(k)=F(k)*P0*F(k)'+Q;
        Y_pre(k)=X_pre(k)*X_pre(k);
        K(k)=P_pre(k)*H(k)'*inv(H(k)*P_pre(k)*H(k)'+R);
        X_est(k)=X_pre(k)+K(k)*(Y(k)-H(k)*X_pre(k));
       %% X_est(k)=X_pre(k)+K(k)*(Y(k)-X_pre(k)*X_pre(k));
        P_est(k)=P_pre(k)-K(k)*H(k)*P_pre(k);
    else
        F(k)=1-1/(X_est(k-1)*X_est(k-1)); %%f(x)求导
        %F(k)=X_est(k-1)+1/(X_est(k-1));
        X_pre(k)=X_est(k-1)+1/X_est(k-1); %%带入f(x)
        H(k)=2*X_pre(k);
        P_pre(k)=F(k)*P0*F(k)'+Q;
        Y_pre(k)=X_pre(k)*X_pre(k);
        K(k)=P_pre(k)*H(k)'*inv(H(k)*P_pre(k)*H(k)'+R);
%         X_est(k)=X_pre(k)+K(k)*(Y(k)-H(k)*X_pre(k));
        X_est(k)=X_pre(k)+K(k)*(Y(k)-X_pre(k)*X_pre(k));
        P_est(k)=P_pre(k)-K(k)*H(k)*P_pre(k);
    end
end

%绘图分析:
figure(1)
k=1:N;
plot(k,X(k),'-o',k,X_est(k),'-x');
xlabel('时间'),ylabel('状态值');
legend ('X的状态值','X的估计值');
title('EKF算法X的状态值和估计值曲线');
for k = 1:N
    e(k)=X(k)-X_est(k);
end

figure(2)
k=1:N;
plot(k,e(k),'-');
xlabel('时间');
ylabel('误差');
title('EKF算法X的状态值与估计值的误差');

figure(3)
plot(k,P_est(k),'-');
xlabel('时间'),ylabel('误差');
title('EKF算法估计误差协方差曲线');

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

潘诺西亚的火山

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值