[請益 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