卡尔曼滤波处理数据matlab代码
时间: 2024-07-22 22:01:00 浏览: 122
卡尔曼滤波与自适应卡尔曼滤波matlab例程.zip
5星 · 资源好评率100%
卡尔曼滤波是一种递归最小二乘估计方法,常用于实时系统的状态估计,如信号处理、控制系统等领域。在MATLAB中,你可以使用内置的`kalman`函数来创建并运行卡尔曼滤波器。下面是一个简单的卡尔曼滤波器的示例代码:
```matlab
% 初始化模型
dt = 0.1; % 时间步长
A = [1 dt; 0 1]; % 状态转移矩阵
B = [dt; 0]; % 控制输入影响
Q = eye(2); % 状态噪声协方差矩阵
R = 0.1; % 测量噪声协方差矩阵
P0 = eye(2) * 10; % 初始状态误差协方差矩阵
% 创建滤波器对象
kf = kalman(A, B, Q, R, P0);
% 假设的数据生成(这里以随机线性变化为例)
x_true = randn(1, 50); % 真实状态序列
u = randn(1, 50); % 控制输入序列
z = A*x_true + B*u + sqrt(Q)*randn(1, 50); % 观测值(包含噪声)
% 运行卡尔曼滤波
for i = 1:length(z)
x_hat(i), P = kf(x_hat(i-1), u(i), z(i));
end
% 可视化结果
plot(x_true, 'b', 'LineWidth', 2, 'DisplayName', 'True State');
hold on;
plot(x_hat, 'r', 'LineWidth', 2, 'DisplayName', 'Estimated State');
legend('show');
% 提取滤波后的状态估计
estimated_states = x_hat;
阅读全文