代码拉取完成,页面将自动刷新
同步操作将从 ln920171519/惯性导航程序与讲解 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
function [ kf ] = kfupdate( kf, Zk, time_measure_both )
%% **************************************************************
%名称:Kalman filter update
%功能:
%________________________________________________________________________
% 输入:
% kf: k-1时刻的kalman filter参数
% Zk: k时刻传感器测得的量测信息
% time_measure_both:
% 输出:
% kf: k时刻的kalman filter参数
%_________________________________________________________________________
%作者:哈尔滨工程大学 自动化学院 张峥
%日期:2020年10月10日
% ************************************************************************
%%
% T: 进行时间更新,M: 进行量测更新,B: 进行时间更新和量测更新
if nargin == 1
% 如果没有量测输入,则只进行时间更新
time_measure_both = 'T';
elseif nargin == 2
% 有量测输入,进行时间更新和量测更新
time_measure_both = 'B';
end
if time_measure_both == 'T' || time_measure_both == 'B'
% *** 时间更新 ***
% 状态预测
kf.Xkk_1 = kf.Phikk_1*kf.Xk;
kf.Pkk_1 = kf.Phikk_1*kf.Pk*kf.Phikk_1' + kf.Gammak*kf.Qk*kf.Gammak';
else % time_measure_both == 'M'(原文)
% 没有模型信息,直接把上个时刻的信息当作时间更新结果
kf.Xkk_1 = kf.Xk;
kf.Pkk_1 = kf.Pk;
end
if time_measure_both == 'M' || time_measure_both == 'B'
% *** 量测更新 ***
% Pk|k-1*Hk'
kf.PXZkk_1 = kf.Pkk_1*kf.Hk';
% (Hk*Pk|k-1*Hk' + Rk)
kf.PZkk_1 = kf.Hk*kf.PXZkk_1 + kf.Rk;
% Pk|k-1*Hk'*inv(Hk*Pk|k-1*Hk' + Rk)
kf.Kk = kf.PXZkk_1/kf.PZkk_1;
kf.Xk = kf.Xkk_1 + kf.Kk*(Zk - kf.Hk*kf.Xkk_1);
% 协方差减小算法:
kf.Pk = kf.Pkk_1 - kf.Kk*kf.PZkk_1*kf.Kk';
else % time_measure_both == 'T'(原文)
% 没有量测信息,相当于Kk=zeros(n),直接用时间更新的结果作为量测更新结果
kf.Xk = kf.Xkk_1;
kf.Pk = kf.Pkk_1;
end
% P阵对角化
kf.Pk = (kf.Pk + kf.Pk')/2;
end
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。