资源简介
比较详细的个人卡尔曼滤波原理推导过程记录,同时附了一个matlab例程
代码片段和文件信息
clc
clear all;
close all;
%初始化参数
delta_t = 0.1; %采样时间间隔
t = 0:delta_t:10;
N = length(t);
sz = [2N];
g = 10; %加速度大小,对应卡尔曼滤波中的控制向量
q = 10; %系统位置噪声方差
Q = [q 0;0 0]; %系统噪声协方差矩阵,大小为2X2(系统状态中只包含位置、速度两个分量)
r = 5; %测量位置噪声方差
R = [r]; %测量噪声协方差,大小为1X1(只测量了位置)
A = [1 delta_t; 0 1]; %状态转换矩阵,大小为2X2
B = [1/2*delta_t^2; delta_t]; %控制转换矩阵,大小为2X1
H = [10]; %观测转换矩阵,大小为1X2
n = size(Q);
m = size(R);
P = zeros(n); %估计值和真实值的误差协方差矩阵
Qn = zeros(1N); %系统噪声导致的小车位置偏差累积
Qn(1) = q*randn;
for i = 2:1:N
Qn(i) = Qn(i-1)+q*randn; %每一个dt内位置噪声满足高斯分布
end
x = 1/2*g*t.^2 + Qn(int32(t/delta_t+1)); %真实值
z = x + r.*randn(1N); %加入观测噪声的观测值
xhat = zeros(sz); %估计值
xhatminus = zeros(sz); %预测值
Pminus = zeros(n); %预测值与真实值的误差协方差矩阵
K = zeros(n(1)m(1)); %卡尔曼增益矩阵
I = eye(n);
for k = 9:N %这里我们从时刻9处才开始计算,即小车已经运动了一段时间
xhatminus(:k) = A*xhat(:k-1) + B*g; A*xhat(:k-1)+B*g;
Pminus = A*P*A‘+Q;
K = Pminus*H‘/(H*Pminus*H‘+R);
xhat(:k) = xhatminus(:k)+K*(z(k)-H*xhatminus(:k));
P = (I-K*H)*Pminus;
end
figure(1)
plot(tz)
hold on
plot(txhat(1:)‘r-‘)
plot(txhatminus(1:)‘k-‘);
hold on
plot(tx(1:)‘g-‘)
legend(‘z‘‘xhat‘‘xhatminus‘‘x‘);
xlabel(‘Iteration‘);
相关资源
- KF+EKF matlab程序实现
- 卡尔曼滤波MATLAB代码170027
- 基于卡尔曼滤波的三种经典室内定位
- 基于卡尔曼滤波的PID控制
- MATLAB在卡尔曼滤波器中应用的理论与
- 卡尔曼滤波基础及matlab仿真程序-王可
- matlab实现的人体跟踪kalman滤波
- 卡尔曼滤波(卡尔曼滤波理论与实践
- 集合卡尔曼滤波算法-数据同化的经典
- 基于卡尔曼滤波的目标跟踪算法-官方
- Kalman Filtering - Theory and Practice Using M
- 改进的自适应卡尔曼滤波算法
- 卡尔曼滤波理论与实践MATLAB版第四版
- 卡尔曼滤波原理及应用 MATLAB仿真pd
- 卡尔曼滤波原理及应用-黄小平pdf版
- 《卡尔曼滤波原理及应用MATLAB仿真》
- 卡尔曼滤波及原理黄小平随书程序
- 基于扩展卡尔曼滤波相关期刊和毕业
- 卡尔曼滤波原理及应用 matlab仿真
- 卫星定位-卡尔曼滤波-MATLAB程序
- 卡尔曼滤波原理及应用-MATLAB仿真随书
- 卡尔曼滤波原理及matlab仿真含程序
- 卡尔曼滤波原理及应用 MATLAB仿真pd
- 《卡尔曼滤波原理及应用-MATLAB仿真》
- 卡尔曼滤波原理及应用-黄小平pdf版
- 13811540_卡尔曼滤波原理及应用MATLAB仿
- 卡尔曼滤波器的原理以及在matlab中的
- 卡尔曼滤波原理及应用:MATLAB仿真.
- 捷联惯导算法与卡尔曼滤波原理讲义
- 《卡尔曼滤波原理及应用MATLAB仿真》
评论
共有 条评论