跨届大侠
- 积分
- 6556
- 威望
- 1277
- 贡献
- 4939
- 兑换币
- 188
- 注册时间
- 2011-12-31
- 在线时间
- 170 小时
|
10贡献
本帖最后由 二硫碘化钾 于 2012-2-9 11:47 编辑
- clear;
- FS=100;
- T=1/FS;
- t=0:T:5;
- wv=randn(1,(5-0)/T+1)*0.2;
- wa=randn(1,(5-0)/T+1);
- vi=sin(5*t)+wv;
- ai=cos(5*t)-10+wa;
- A=[1,-T;0,1];
- B=[T;0];
- H=[1,0];
- Q=[0.0001,0;0,0];
- R=[0.04];
- I=[1,1;1,1];
- kg=[0;0];
- x=[0;0];
- p=[1,0;0,1];
- xx=[0;0];
- pp=[0,0;0,0];
- for k=2:501
- xx=A*x+B*ai(k-1);
- pp=A*p*A'+Q;
- kg=pp*H'/(H*pp*H'+R);
- x=xx+kg*(vi(k)-H*xx);
- p=(I-kg*H)*pp;
- vo(k)=x(1)-5;
- b(k)=x(2);
- end
- plot(t,vi,'r',t,ai,'g',t,vo,'b',t,b,'y');
复制代码 以上是将光电码盘与加速度计融合得到速度的卡尔曼滤波程序(有错。。。),是根据一篇论文编写的,论文见链接。
仿真时出错,1、b不收敛。2、卡尔曼滤波似乎没起作用。。。请高手指点一二三四五六。。。。。。看看程序哪里有问题,在此谢过,此致敬礼。。。
还有程序的仿真图。。。与论文中的相比。。。差好远啊
红色是vi,绿色是ai,蓝色是滤波输出vo,黄色是b
|
附件: 您需要 登录 才可以下载或查看,没有帐号?注册
|