kalman.m
上传用户:skyjin520
上传日期:2016-12-06
资源大小:20k
文件大小:0k
源码类别:

交通/航空行业

开发平台:

Matlab

  1. function [Xk, Pk, Kk] = kalman(Phikk_1, Qk, Xk_1, Pk_1, Hk, Rk, Zk)
  2.     if nargin<7     % 仅进行状态递推
  3.         Xk = Phikk_1*Xk_1;
  4.         Pk = Phikk_1*Pk_1*Phikk_1'+Qk;
  5.     else            % 有测量时滤波
  6.         Xkk_1=Phikk_1*Xk_1;    
  7.         Pkk_1 = Phikk_1*Pk_1*Phikk_1' + Qk; 
  8.         Pxz = Pkk_1*Hk';
  9.         Pzz = Hk*Pxz + Rk;
  10.         Kk = Pxz*Pzz^-1;
  11.         Xk = Xkk_1 + Kk*(Zk-Hk*Xkk_1);
  12.         Pk = Pkk_1 - Kk*Pzz*Kk';
  13.     end