如何避免在matlab中计算均值的循环

时间:2013-12-23 16:35:28

标签: matlab

我有一个大小为100000x128的矩阵A. 对于这个矩阵的每一行,我需要计算列的平均值1:16,17:32 ...... 98:113。 我这样做的方式是使用这样的for循环:

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

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

我有机会在没有循环的情况下改善这一点吗? 谢谢你的帮助。

2 个答案:

答案 0 :(得分:1)

您可以使用reshape为块创建另一个维度:

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

要获得每个块的平均值,请使用mean(y,2)

答案 1 :(得分:0)

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