⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ekf.m

📁 一个关于卫星导航方面的ekf滤波程序
💻 M
字号:
function [xh, Px] = ekf(state, Pstate, pNoise, oNoise, obs)%   EKF ----- Main Code%   Reference: ReBEL, Rudolph van der Merwe%   (c) Shi Heng (2007)Xdim  = 6;                                % 状态向量维数Odim  = 6;                                  % 观测向量维数Vdim  = 6;                                    % 系统噪声向量维数Ndim  = 6;                                    % 观测噪声向量维数NOV = size(obs,2);                                           % 观测向量个数xh   = zeros(Xdim,NOV);xh_  = zeros(Xdim,NOV);zh_  = zeros(Odim,NOV);inov = zeros(Odim,NOV);%----------------滤波递推--------------for i=1:NOV,        % Time Update        [A] = feval(@linearize, state, pNoise.mu, oNoise.mu,'A');          [G] = feval(@linearize, state, pNoise.mu, oNoise.mu,'G');    xh_(:,i) = feval(@ffun, state, pNoise.mu);    Px_      = A*Pstate*A' + G*pNoise.cov*G';    % Measurement Update        [C] = feval(@linearize, xh_(:,i), pNoise.mu, oNoise.mu,'C');        [H] = feval(@linearize, state, pNoise.mu, oNoise.mu,'H');    Py        = C*Px_*C' + H*oNoise.cov*H';    KG        = Px_ * C' * inv(Py);%%%%%%%%%%%%%%%%%%%%%%%!!!!!!!    yh_(:,i)  = feval(@hfun, xh_(:,i), oNoise.mu);        inov(:,i) = obs(:,i) - yh_(:,i);    xh(:,i)   = xh_(:,i) + KG * inov(:,i);    Px        = Px_ - KG*Py*KG';    state  = xh(:,i);    Pstate = Px;  end   % loop end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -