一维数据卡尔曼滤波处理及算法

在这里插入图片描述MATLAB代码如下

clc
%参数初始化
x_hat_0 = 40;       %设置初始估计值为40
e_EST_0 = 5;        %设置初始估计误差为5
e_MEA = 3;          %假设测量误差总为3
%随机生成一组测量值
z_k = 50+(2*rand(1,1000)-1);  
L = length(z_k);
%定义估计值
x_hat = zeros(L,1);
x_hat(1) = x_hat_0;
%定义估计误差
e_EST= zeros(L,1);
e_EST(1) = e_EST_0;
%定义卡尔曼增益
K_k = zeros(L,1);
K_k(1) = 0;

%% 卡尔曼滤波器算法
for k = 2:L+1
    %计算卡尔曼增益
    K_k(k) = e_EST(k-1)/(e_EST(k-1)+e_MEA);
    %计算估计值
    x_hat(k) = x_hat(k-1)+K_k(k)*(z_k(k-1)-x_hat(k-1));
    %更新估计误差
    e_EST(k) = (1-K_k(k))*e_EST(k-1);
end

%% 绘图
figure(1)
plot(z_k)
hold on
plot(x_hat,'LineWidth',2)
axis([0 L+10 35 55])

运行结果如下图所示:
在这里插入图片描述
从上图可以看出估计值随着时间能够较好的收敛于准确值。
在这里插入图片描述
更多信息可以关注公众号【Future Car】

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值