扩展卡尔曼滤波

在这里插入图片描述
在这里插入图片描述
这里必须保证Xk-1,Xk,Xk+1都是正态分布,否则的话我们就没法递推了,如果Xk不是正态分布的话就没有办法调用我们扩展卡尔曼滤波的算法,自然就会引起误差,因为本质上f和h是非线性函数,所以说如果是这个真实的后验概率呢他一定不是这个正态分布,因为他是非线性函数,但是我们滤波的结果呢却是正态分布,所以说他就是一种误差,误差就在这体现,所以说扩展卡尔曼滤波是一种近似,这种近似是有误差的,误差来源就在这
在这里插入图片描述
在这里插入图片描述
预测步和更新步泰勒展开的展开点不同,
预测步是在Xk-1plus展开
更新步是在Xkminus展开
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
扩展卡尔曼滤波的算法和卡尔曼滤波的算法很像,最大的不一样就是他要求一个雅克比矩阵,第二个不一样就是算法的2 7步,这里是在这里插入图片描述
卡尔曼是Xkminus=A*Xk-1plus,也就是说在这里他并没有线性化,还有第7步在这里插入图片描述

卡尔曼是Xkplus=C*Xkminus,下面来算一个C帮助大家理解雅克比矩阵
在这里插入图片描述
以上是预测
以下是观测
在这里插入图片描述
这样呢ekf的理论就讲完了,接下来是代码

%EKF代码
%纸上得来终觉浅,绝知此事要躬行%x(k)=sin(3x(k-1))
%y(k)=x(k)'2
%注意似然概率是多峰分布,具有强烈的非线性,当y=4时,不知道x=2还是-2
%%%生成真实信号与观测
t=0.01:0.01:1;
n=length(t);
X=zeros(1,n);
y=zeros(1,n);
x(1)=0.1;
y(1)=0.1^2;
for i=2:n
x(i)=sin(3
x(i-1));
y(i)=x(i)^2+normrnd(0,0.1);
end
plot(t,x,‘r’,t,y,‘b’,‘LineWidth’,4)
在这里插入图片描述
红色代表真实的信号,蓝色代表观测

%EKF代码
%纸上得来终觉浅,绝知此事要躬行%x(k)=sin(3x(k-1))
%y(k)=x(k)'2
%注意似然概率是多峰分布,具有强烈的非线性,当y=4时,不知道x=2还是-2
%%%生成真实信号与观测
t=0.01:0.01:1;
n=length(t);
X=zeros(1,n);
y=zeros(1,n);
x(1)=0.1;
y(1)=0.1^2;
for i=2:n
x(i)=sin(3
x(i-1));
y(i)=x(i)^2+normrnd(0,0.7);
end
%EKF
Xplus=zeros(1,n);%设置初值
Pplus=0.1;
Xplus(1)=0.1;
Q=0.1;
R=1;
for i=2:n
%预测步
A=3cos(3Xplus(i-1));
Xminus=sin(3Xplus(i-1));
Pminus=A
PplusA’+Q;
%更新步
C=2
Xminus;
K=PminusCinv(CPminusC’+R);
Xplus(i)=Xminus+K*(y(i)-Xminus^2);
Pplus=(eye(1)-K*C)*Pminus;
end

plot(t,x,‘r’,t,Xplus,‘b’,‘LineWidth’,4)
在这里插入图片描述
结果是比较差的,但也算符合我们的预期,我们知道ekf对强烈的非线性问题处理的不太好,他的观测噪声比较大,所以效果不好,我们看一下能不能抢救一下,
Q=0.0001;以后长这样在这里插入图片描述

结果还是比较差,比刚才那个稍微好一些,而且有一种很强烈的多峰分布的一个感觉,是因为ekf直接把函数线性化了,这样的话对强非线性问题算的就不是特别的好,如果对一些比较弱的非线性问题他有可能会得到一个比较好的结果,像我们这个例子他的观测噪声比较大,他的似然概率又是一个多峰分布,这样的话就会很差,如果遇到一些强烈的非线性问题的话,扩展卡尔曼滤波需要花很多精力去调Q和R才能得到一个理想的结果,而且一般来说是比较难调的,这就是ekf自然的缺陷,他的优点就在于快,计算速度非常快,和kf差不多,需要的内存也比较小,世上第一个可以进行实时计算的slam程序就是用ekf写出来的,不过呢现在slam都在用最线性优化,第九讲提到了slam和相关的算法,ekf也是人类发明出来的第一个处理非线性问题的kf,对一些实时性要求过高并且非线性程度比较弱的场景中ekf也是经常被用到的,ekf到此为止,最后只剩一个ukf(无迹卡尔曼滤波)。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值