highspeedlogic算法仿真-卡尔曼滤波
【highspeedlogic算法仿真-卡尔曼滤波】function data_out2 = func_kalman(data);
T= 0.7;
LL= length(data);
data_out= zeros(2,LL);
%产生2*LL的全零矩阵
Y0= [0;
1];
data_out(:,1) = Y0;
%Y的第一列等于Y0
A= [1 T
0 1];
B= [1/2*(T)^2 T]';
H= [1 0];
P0= [0 0
0 1];
P= [P0 zeros(2,2*(LL-1))];
Q= (0.1)^2;
R= (0.1)^2;
X= zeros(1,LL);
% kalman
for n= 1:LL
i= (n-1)*2+1;
K= P(:,i:i+1)*H'*inv(H*P(:,i:i+1)*H'+R);
%滤波增益
data_out(:,n)= data_out(:,n)+K*(data(:,n)-H*data_out(:,n));
%估计
data_out(:,n+1) = A*data_out(:,n);
%预测
P(:,i:i+1)= (eye(2,2)-K*H)*P(:,i:i+1);
%误差
P(:,i+2:i+3)= A*P(:,i:i+1)*A'+B*Q*B';
%kalman滤波
end
data_out2 = data_out(1,2:end);
推荐阅读
- 画解算法(1.|画解算法:1. 两数之和)
- Guava|Guava RateLimiter与限流算法
- 一个选择排序算法
- SG平滑轨迹算法的原理和实现
- 《算法》-图[有向图]
- LeetCode算法题-11.|LeetCode算法题-11. 盛最多水的容器(Swift)
- 虚拟DOM-Diff算法详解
- 《数据结构与算法之美》——队列
- 算法回顾(SVD在协同过滤推荐系统中的应用)
- 简谈迪克斯特拉算法