作者Ecampus ()
看板MATLAB
标题[请问] 如何把"每次叠代状态下的x值"贮存起来??
时间Sun May 6 18:59:28 2018
以下是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次好了。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 125.230.90.99
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/MATLAB/M.1525604370.A.165.html
1F:推 LiamIssac: 加个index就好 x0(k) 05/06 19:18
※ 编辑: Ecampus (125.230.93.172), 05/06/2018 22:08:45
2F:→ sppmg: 同一楼。一般会在回圈外预先分配阵列空间(用 x0=zeros(1,k) 05/07 04:53
3F:→ sppmg: 或是 x0(k)=0 ,後者据说比较快),避免每次回圈 MATLAB 须 05/07 04:54
4F:→ sppmg: 要像系统要求记忆体并复制资料的时间耗损。 05/07 04:54
5F:→ sppmg: 另外,如果你今天不是每个k都要纪录,可以另设一个专用变数 05/07 04:58
6F:→ sppmg: 。进回圈前 n=1 ,回圈内 x0(n)=… ; n=n+1 05/07 04:58
7F:→ sppmg: (不用p币,给一楼吧!) 05/07 04:58