查看: 514|回复: 1|关注: 0

[未答复] 卡尔曼滤波参数估计 无法执行赋值,因为左侧的大小为 1×1,右侧的大小为 3×1

[复制链接]

新手

5 麦片

财富积分


050


1

主题

2

帖子

0

最佳答案
发表于 2020-4-26 11:35:34 | 显示全部楼层 |阅读模式
  1. function main
  2. T=1;
  3. N=100/T;
  4. X=zeros(3,N);
  5. X(:,1)=[0.5,0.8,0.3];
  6. Z=zeros(3,N);
  7. Z(:,1)=[X(1,1),X(2,1),X(3,1)];
  8. R=0.01;
  9. F=1;
  10. u=idinput(N,'prbs',[0,1],[0,1]);
  11. for t=2:N
  12.     H=[Z(t-1),u(t-1),1];
  13.     if t==2
  14.         Z=[0.4,0.9,0.2];
  15.     end
  16.     Z(:,t)=H*X(:,t)+sqrtm(R)*randn(1,1);
  17. end
复制代码

错误信息:

无法执行赋值,因为左侧的大小为 1×1,右侧的大小为 3×1。


出错 main (line 16)
    Z(:,t)=H*X(:,t)+sqrtm(R)*randn(3,1);




回复主题 已获打赏: 0 积分

举报

新手

5 麦片

财富积分


050


1

主题

2

帖子

0

最佳答案
 楼主| 发表于 2020-4-26 11:38:27 | 显示全部楼层
我是根据书上的程序进行修改的 下面是书上的源程序

  1. function main
  2. clc;clear;
  3. T=1;
  4. N=80/T;
  5. X=zeros(4,N);
  6. X(:,1)=[-100,2,200,20];
  7. Z=zeros(2,N);
  8. Z(:,1)=[X(1,1),X(3,1)];
  9. delta_w=1e-2;
  10. Q=delta_w*diag([0.5,1,0.5,1]) ;
  11. R=100*eye(2);
  12. F=[1,T,0,0;0,1,0,0;0,0,1,T;0,0,0,1];
  13. H=[1,0,0,0;0,0,1,0];
  14. for t=2:N
  15.     X(:,t)=F*X(:,t-1)+sqrtm(Q)*randn(4,1);
  16.     Z(:,t)=H*X(:,t)+sqrtm(R)*randn(2,1);
  17. end
复制代码
回复此楼 已获打赏: 0 积分

举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

快速回复 返回顶部 返回列表