赞
踩
初始输入(k-1时刻):系统最优状态、系统噪声协方差
系统状态转移方程(1.9)
过程噪声协方差 (1.10)
计算卡尔曼增益K (1.11)
根据卡尔曼增益K,计算最优当前状态 (1.12)
根据卡尔曼增益K,计算当前系统噪声协方差 (1.13)
% % --------------------------------------------------------------------- % % 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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。