看板 MATLAB 關於我們 聯絡資訊
大家好~ 想請問一個問題,我最近因為資料處理的關係,先把都是同樣大小的矩陣存在cell中 接著要判斷每一個cell中的矩陣數值為何並且相加計算方均根 我的code如下 for i = 1:100 I{i} = graypic_imadjust(row,cow) ; every_I(i) = sqrt(mean(find(I{i}).^2)) ; end 但是算出來的數值都非常奇怪,回去看我的變數發現是find(I{i})這裡出問題了 假設我的I{1}= 1 23 0 0 0 0 0 12 0 0 23 0 0 0 2 9 1 0 0 0 1 原本預期find(I{1})出來要是1 23 12 23 2 9 1 1 但是出來的數字卻不對 想問問看是哪裡出錯了,拜託各位了>< -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.164.131.223 ※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1484376912.A.580.html ※ 編輯: LSgay5566 (1.164.131.223), 01/14/2017 15:00:31 ※ 編輯: LSgay5566 (1.164.131.223), 01/14/2017 15:02:19
sunev: find給出來的是位置,不是值 01/14 17:19
LSgay5566: 哦哦哦好的~那想請問有什麼辦法求非零值呢>< 01/14 21:21
mp19990920: cell內所有東東都做相同事情請把迴圈去掉改用cellfun 01/14 23:14
mp19990920: 你預計要的find(I{i})是I{i}(I{i}~=0) 01/14 23:16
mp19990920: 所以程式如下所示: 01/14 23:22
mp19990920: f = @(x) sqrt(mean( x(x~=0) )); 01/14 23:22
mp19990920: every_I = cellfun(@f, I); 01/14 23:23
mp19990920: 更正,是 every_I = cellfun(f, I); 01/14 23:24
mp19990920: 或是 cellfun(@(x) sqrt(mean( x(x~=0) )), I); 01/14 23:26