卡尔曼滤波 matlab 程序
时间: 2024-05-08 21:14:09 浏览: 85
matlab卡尔曼滤波程序.zip
卡尔曼滤波是一种常用于系统状态估计的算法,其基本思想是通过对当前状态的观测和先前状态的预测,对系统状态进行递推估计。在 MATLAB 中,可以使用“kalman”函数来实现卡尔曼滤波。
使用“kalman”函数时,需要定义系统的状态转移矩阵 A、观测矩阵 C、过程噪声协方差矩阵 Q、观测噪声协方差矩阵 R,以及初始状态和协方差矩阵。函数的输入参数包括观测值、前一时刻的状态和协方差矩阵,以及上述定义的矩阵和向量。
以下是一个简单的 MATLAB 代码示例:
```matlab
% 定义系统矩阵
A = [1 0.1; 0 1];
C = [1 0];
Q = [0.01 0; 0 0.1];
R = 1;
% 定义初始状态和协方差矩阵
x0 = [0; 0];
P0 = [1 0; 0 1];
% 生成测试数据
t = 0:0.1:10;
y = sin(t) + randn(size(t));
% 使用 kalman 函数进行滤波
[x, P] = kalman(y, A, C, Q, R, x0, P0);
% 绘制结果
figure
plot(t, y)
hold on
plot(t, x(1, :))
legend('观测值', '滤波值')
```
阅读全文