作者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/m.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