[問題] 矩陣內資料NaN 取代 計算平均與標準差已回收

看板MATLAB作者 (鈴弓)時間13年前 (2011/07/16 15:00), 編輯推噓2(203)
留言5則, 3人參與, 最新討論串1/2 (看更多)
不好意思,我透過標題把問題都寫在上面了.... 問題: 今有一個矩陣A <4x4x3 double>,內部資料有NaN,我想要分析計算其平均與標準差, ,最後可得到資料B <1x4x3 double>,該怎麼作呢? 資料: A(:,:,1) = [1 6 7 5 NaN NaN NaN NaN 2 3 2 2 3 3 3 1 ] A(:,:,2) = [4 2 1 0 NaN NaN NaN NaN NaN NaN NaN NaN 2 0 1 4 ] A(:,:,3) = [2 1 2 1 3 2 8 6 2 1 4 4 5 8 10 9 ] 嘗試1: 我有試過直接用迴圈→ for i = 1:4; for j = 1:3; B(1,i,j) = mean(A(:,i,j)); end end 但是因為矩陣A裡面有NaN的關係,B算出來都會是NaN..... 但算出來的B矩陣,我希望是: B(:,:,1) = [2 4 4 3]; B(:,:,2) = [2 1 1 2]; B(:,:,3) = [3 3 6 5]; 要怎麼先解決掉NaN造成無法計算的問題呢? 嘗試2: 先用取代的方式? A(isnan(A)) = []; 但是,因此A矩陣變成了<1x36 double>的型態,不利於處理成B矩陣。 各位版友有什麼比較好的想法嗎? 困難點在於每一次對第三維矩陣作回歸的時候,矩陣的直行的長度都不一樣 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.123.213.195 ※ 編輯: susuyumi 來自: 140.123.213.195 (07/16 16:42)

07/16 16:59, , 1F
分次挖掉每層的nan=>permute(2,1)=>mean()
07/16 16:59, 1F

07/16 17:03, , 2F
permute()改 reshape()才對 col固定 row用總元素數目去除
07/16 17:03, 2F

07/16 18:06, , 3F
我在分次挖掉每層的NaN就已經卡關...coding不曉得怎麼打
07/16 18:06, 3F

07/16 19:46, , 4F
如果有裝statistics toolbox的話,
07/16 19:46, 4F

07/16 19:47, , 5F
請查nanmean和nanstd
07/16 19:47, 5F
文章代碼(AID): #1E8JSBEj (MATLAB)
文章代碼(AID): #1E8JSBEj (MATLAB)