2013-12-23 160 views
0

我有一個矩陣A大小100000x128。 對於這個矩陣的每一行,我需要計算列的平均值1:16,17:32 ... 98:113。 我做它的方式是用一個for循環是這樣的:如何避免在matlab中的平均值計算循環

n = 8; % number of windows 
    win_size = 128/n; 

    for i = 1 : length(A) 
    PAA(i,:) = [mean(reshape(A(i,:),win_size,n))]; 
    end 

任何機會,我可以改善這種不循環? 感謝您的幫助。

回答

1

您可以使用重塑,爲您創造塊另一個層面:

y=reshape(x,size(x,1),win_size,size(x,2)/win_size) 

,讓每塊平均,使用mean(y,2)

+1

謝謝。這很好。我只是補充道: meanY = squeeze(mean(y,2)); – oldflatop

0
>> A = randn(100000, 128); 
>> Amean = reshape(mean(reshape(A',16,100000)), 8, 100000)'; 
+0

有越來越大的趨勢,以紀念代碼只回答作爲低質量。最好稍微解釋一下答案,這樣你的假設就很簡單了...如果他們分歧OP想要問的東西,或者讓另一個有不同需求的人可能更清楚地受益。 –