卡尔曼滤波 Kalman Filter 理解 (超简单),带仿真

卡尔曼滤波 Kalman Filter 精简理解

参考外文 An Introduction to the Kalman Filter

核心过程一 (时间更新:)

初始输入(k-1时刻):系统最优状态、系统噪声协方差
系统状态转移方程(1.9)
过程噪声协方差 (1.10)
在这里插入图片描述

核心过程二 (测量更新:)

计算卡尔曼增益K (1.11)
根据卡尔曼增益K,计算最优当前状态 (1.12)
根据卡尔曼增益K,计算当前系统噪声协方差 (1.13)
在这里插入图片描述

图表化整个循环迭代过程

在这里插入图片描述

MATLAB代码

%
%   ---------------------------------------------------------------------
%
%   Copyright 2019 wmx qq 843230304
%
%   ---------------------------------------------------------------------
%
function y = kalman01(z) 
%-------初始化-----------------------------
% 初始化 状态转移系数矩阵A
dt=1;
A=[ 1 0 dt 0 0 0;...
    0 1 0 dt 0 0;...
    0 0 1 0 dt 0;...
    0 0 0 1 0 dt;...
    0 0 0 0 1 0 ;...
    0 0 0 0 0 1 ];

% Measurement matrix
% 系统测量系数矩阵
H = [ 1 0 0 0 0 0; 0 1 0 0 0 0 ];

% 状态转移过程噪声
Q = eye(6);

% 测量噪声
R = 1000 * eye(2);

% Initial conditions
% 系统状态和协方差初始条件
persistent x_est p_est
if isempty(x_est)
    x_est = zeros(6, 1);
    p_est = zeros(6, 6);
end

%----------------Predicted state and covariance-------------------------
% 根据状态转移方程 预测理论值(预测状态 预测协方差)
x_prd = A * x_est;
p_prd = A * p_est * A' + Q;

% ------------------- Estimation --------------------------------------------
% 最优估计(根据理论预测和测量,使误差最小)
% 计算卡尔曼增益klm_gain
S = H * p_prd' * H' + R;
B = H * p_prd';
klm_gain = (S \ B)';

% Estimated state and covariance
% 根据卡尔曼增益klm_gain,
% 最优估计系统 当前状态x_est  当前协方差p_est, 提供下次迭代计算使用
x_est = x_prd + klm_gain * (z - H * x_prd);
p_est = p_prd - klm_gain * H * p_prd;

% Compute the estimated measurements
% 卡尔曼滤波输出
y = H * x_est;
end

仿真输出

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值