2013-12-23 95 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想要问的东西,或者让另一个有不同需求的人可能更清楚地受益。 –