[请益 4000P] 如何贮存“每次叠代状态下的x值”?

楼主: Ecampus (7.7)   2018-05-06 18:59:28
以下是kalman-filter五条公式
https://imgur.com/a/85OkG
https://imgur.com/a/kCCjz
下面是kalman滤波器的程式码:
我想把kalman-filter(卡尔曼滤波器)用在“修正河川液体浓度扩散”
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= 不知道怎么处理 ??????????? ;
p(:,:,k)=(II-kg(:,1,k)*H)*p(:,:,k);;
% k是总迭代次数(k表不同时间,k=1秒、2秒、3秒、4秒....)
[x]跟[A]是矩阵式,所有参数或矩阵都已知。
[x]矩阵,是扩散后的液体浓度的推估值
[x]矩阵格式如下:
[ A
B
C
D
.
.
.
. ]
A为0公尺处的浓度推估值
B为10公尺处的浓度推估值
C为20公尺处的浓度推估值
D为30公尺处的浓度推估值
以此类推下去,假设终点为100公尺处。
如果我想贮存某一点(譬如B点)随着时间的不同液体浓度,该如何设定x0
.
.
.
.
.
我各项参数都有了(A矩阵、p矩阵、U矩阵、k是总迭代次数)
但有一个小地方,我不知道该如何处理。 就是x0如何处理?
x0的数学含义就是把每次叠代k状态下的x值贮存起来方便最后做图
(和观测值y以及理论值y0对比)
物理意义是把卡尔曼滤波算法得到的每一k时刻的位移值放在x0中,
于是x0就是每一时刻的浓度值
但是在此处,我不知道我这个题目的x0该如何设定=.=...
假设这里迭代10次好了。
作者: LiamIssac (Madchester)   2018-05-06 19:18:00
加个index就好 x0(k)
作者: sppmg (sppmg)   2018-05-07 04:53:00
同一楼。一般会在循环外预先分配阵列空间(用 x0=zeros(1,k)或是 x0(k)=0 ,后者据说比较快),避免每次循环 MATLAB 须要像系统要求内存并复制资料的时间耗损。另外,如果你今天不是每个k都要纪录,可以另设一个专用变量。进循环前 n=1 ,循环内 x0(n)=… ; n=n+1(不用p币,给一楼吧!)

Links booklink

Contact Us: admin [ a t ] ucptt.com