[請益 4000P] 如何貯存「每次叠代狀態下的x值」?

看板MATLAB作者時間6年前 (2018/05/06 18:59), 6年前編輯推噓1(106)
留言7則, 2人參與, 6年前最新討論串1/1
以下是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://www.ptt.cc/bbs/MATLAB/M.1525604370.A.165.html

05/06 19:18, 6年前 , 1F
加個index就好 x0(k)
05/06 19:18, 1F
※ 編輯: Ecampus (125.230.93.172), 05/06/2018 22:08:45

05/07 04:53, 6年前 , 2F
同一樓。一般會在迴圈外預先分配陣列空間(用 x0=zeros(1,k)
05/07 04:53, 2F

05/07 04:54, 6年前 , 3F
或是 x0(k)=0 ,後者據說比較快),避免每次迴圈 MATLAB 須
05/07 04:54, 3F

05/07 04:54, 6年前 , 4F
要像系統要求記憶體並複製資料的時間耗損。
05/07 04:54, 4F

05/07 04:58, 6年前 , 5F
另外,如果你今天不是每個k都要紀錄,可以另設一個專用變數
05/07 04:58, 5F

05/07 04:58, 6年前 , 6F
。進迴圈前 n=1 ,迴圈內 x0(n)=… ; n=n+1
05/07 04:58, 6F

05/07 04:58, 6年前 , 7F
(不用p幣,給一樓吧!)
05/07 04:58, 7F
文章代碼(AID): #1Qxk0I5b (MATLAB)
文章代碼(AID): #1Qxk0I5b (MATLAB)