2015-01-16 68 views
0

我有一個1000x500矩陣(1000行,每個對應1分鐘計數,500列對應不同的高度)。我想計算10分鐘的平均值(使用nanmean),這意味着我希望我的最終矩陣爲100x500。是否有捷徑可尋 ? 感謝您的幫助。在Matlab中將1000x500矩陣重塑爲100x500

回答

1

重塑成10行矩陣,沿着每列適用nanmean,重塑回500列的矩陣。讓M表示你的矩陣:

result = reshape(nanmean(reshape(M, 10, [])), [], size(M,2)); 
+0

非常感謝您的善意幫助。 – user3876557

0

如果我正確你想要什麼瞭解,你可以這樣做:

% assuming data is your 1000x500 matrix 
avgs = zeros(100, 500); 
inds = 1:10; 
for i = 0:99 
    avgs(i + 1, :) = nanmean(data(i * 10 + inds, :)) 
end 
+0

@knedlsepp yeap,謝謝你的提示! – VHarisop

+0

感謝您的幫助.. – user3876557

0

你也可以拆分成矩陣的一百10-by-500基質細胞; nanmean他們沿着列,然後再把它們放在矩陣中:

avgs = cell2mat(cellfun(@(X) nanmean(X,1), mat2cell(data,10*ones(100,1),[500]), 'uni', 0)); 
+0

Luis的回答完成了這個任務,不需要細胞,也不需要臭名昭着的'cellfun'。 –

+0

@BenVoigt:確實;但有幾種選擇可供選擇,這並沒有什麼壞處。 (實際上Luis在寫我的初始解決方案時發佈了他的解決方案:'avgs = squeeze(nanmean(重塑(data。',500,10,[]),2))。';',這當然使我由於多餘的轉換重新考慮答案) – knedlsepp