作者Ecampus ()
看板MATLAB
标题[求救 1000P] 有一行程式的意思看不懂=.=...
时间Thu May 3 18:29:47 2018
下面是一个自由落体的模型,结合卡尔曼滤波器。
我先讲解一下,以下是kalman-filter五条公式
https://imgur.com/a/85OkG
https://imgur.com/a/kCCjz
然後,在下面这2张图,是把参数代入之後的情况(或许可以作为参考)
https://imgur.com/a/kTSfpfS (迭代 第一次)
https://imgur.com/a/3aGo1km (迭代 第二次)
然後各参数我都有,就只是代入就好....只是我最後面有一行程式码看不懂=.=
以下是code码:
% Kalman filter for the example of free body falling
% Using previous data to modified
clear all
clc
II=eye(2,2);
N=15;
%y0=[100 99.5 98.0 95.5 92.0 87.5 82.0]
%y =[0 100 97.9 94.4 92.7 87.3 82.1]
y0=[100 99.5 98.0 95.5 92.0 87.5 82.0 75.5 68.0
59.5 50.5 39.5 28.0 15.5 2.0]
y= [100 100.0 97.9 94.4 92.7 87.3 82.1 75.4 68.8
59.0 50.6 39.4 28.3 14.5 2.1]
A=[1 1
0 1]
U=[-0.5
-1.0]
H=[1 0]
R=1
x=zeros(2,1,N); % N代表"次数",此程式N为15。表示迭代了15次。
x(:,1,1)=[95
1];
x0=zeros(1,N)
p=zeros(2,2,N);
p(:,:,1)=[10 0
0 1];
kg=zeros(2,1);
for k=2:N
x(:,1,k) = A*x(:,1,k-1)+U;
p(:,:,k) = A*p(:,:,k-1)*A';
kg(:,1,k) = p(:,:,k)*H' / (H*p(:,:,k)*H'+R);
x(:,1,k)=x(:,1,k)+kg(:,1,k)*(y(k-1)-H*x(:,1,k-1));
x0(1,k)=x(1,1,k);
p(:,:,k)=(II-kg(:,1,k)*H)*p(:,:,k);;
end
y0
y
x0
t=1:N;
plot(t,y0,'r',t,y,'g',t,x0,'b');
=================================================
我想问的是,这一行程式码 x0(1,k)=x(1,1,k); 的涵义是??
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 125.230.88.172
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/MATLAB/M.1525343389.A.D9B.html
※ Ecampus:转录至看板 Programming 05/03 18:32
※ 编辑: Ecampus (125.230.88.172), 05/03/2018 19:07:42
1F:推 sppmg: 单就这行,只是把3D阵列中的1D资料复制到2D中的1D空间 05/03 19:42
2F:推 sppmg: 小小错误,应该是复制一个值,而非1D空间。不过他搭配for後 05/03 19:46
3F:→ sppmg: 效果一样 05/03 19:46
4F:→ Ecampus: 3Q P币等下寄出 05/05 21:22