MATLAB 卡尔曼滤波
时间: 2023-07-30 20:08:37 浏览: 68
Matlab 卡尔曼滤波
在MATLAB中,你可以使用`kalman`函数实现卡尔曼滤波。下面是一个简单的示例:
```matlab
% 定义系统的状态转移矩阵 A
A = [1 1; 0 1];
% 定义系统的测量矩阵 C
C = [1 0];
% 定义过程噪声的协方差矩阵 Q
Q = [0.01 0; 0 0.01];
% 定义测量噪声的协方差矩阵 R
R = 1;
% 初始化卡尔曼滤波器状态向量 x 和协方差矩阵 P
x = [0; 0];
P = eye(2);
% 模拟测量值
measurements = [1, 2, 3, 4, 5];
% 使用卡尔曼滤波进行滤波
filtered_states = zeros(2, length(measurements));
for i = 1:length(measurements)
% 预测步骤
x_pred = A * x;
P_pred = A * P * A' + Q;
% 更新步骤
K = P_pred * C' / (C * P_pred * C' + R);
x = x_pred + K * (measurements(i) - C * x_pred);
P = (eye(2) - K * C) * P_pred;
% 存储滤波后的状态值
filtered_states(:, i) = x;
end
% 输出滤波后的状态值
disp(filtered_states);
```
这个示例中,我们定义了一个简单的一维卡尔曼滤波器,并使用模拟的测量值进行滤波。你可以根据需要调整状态转移矩阵A、测量矩阵C、过程噪声协方差矩阵Q和测量噪声协方差矩阵R。最后,通过`filtered_states`变量输出滤波后的状态值。
阅读全文