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

看板MATLAB作者 (~火火狗)時間14年前 (2011/07/20 16:27), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
\※ 引述《susuyumi (鈴弓)》之銘言: : 不好意思,我透過標題把問題都寫在上面了.... : 問題: : 今有一個矩陣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 ] : 恕刪... : B(:,:,1) = [2 4 4 3]; : B(:,:,2) = [2 1 1 2]; : B(:,:,3) = [3 3 6 5]; 我把你可能需要答案換成D 不過和你給的範本答案相異 ,請確認敘述是否詳細與正確。 恕刪...用你嘗試方法的指令正確組合是... clear 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 ]; % isnan指令用來判斷元素是否為nan % 1代表是(真) 0代表否(假) % 例如isnan(A(:,:,1)) % =[0 0 0 0 % 1 1 1 1 % 0 0 0 0 % 0 0 0 0 ] B=double(isnan(A)); % 用法 histc(要計算的矩陣,輸入要找尋的數值) % 例如:histc(B,0) % histc 矩陣用來統計0共有多少個 % 在這範例 用於找尋不是為nan的元素有多少個。 % histc(B(:,:,1),0) % =[3 3 3 3] C=histc(B,0); % 接下來把原本nan 變成0 A(isnan(A))=0; %總和A,除以C D=sum(A)./C; %結束 D(:,:,1) = 2.0000 4.0000 4.0000 2.6667 D(:,:,2) = 3 1 1 2 D(:,:,3) = 3 3 6 5 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.127.6.148 ※ 編輯: s123123sam 來自: 140.127.6.148 (07/20 16:43) ※ 編輯: s123123sam 來自: 140.127.6.148 (07/20 16:45) ※ 編輯: s123123sam 來自: 140.127.6.148 (07/20 16:48) ※ 編輯: s123123sam 來自: 140.127.6.148 (07/20 16:52) ※ 編輯: s123123sam 來自: 140.127.6.148 (07/20 20:18)

07/22 00:40, , 1F
非常感謝解答!但現在手邊沒辦法做測試,一旦測試OK會回報
07/22 00:40, 1F
文章代碼(AID): #1E9f6CGx (MATLAB)
文章代碼(AID): #1E9f6CGx (MATLAB)