MATLAB:计算大型阵列的平均值

时间:2017-05-26 08:29:40

标签: matlab performance mean

我需要在一个巨大的数组中计算所有列的平均值wherby我必须首先用零替换所有小于零的数字。使用我的玩具示例,很明显这些计算需要相当长的时间。

tmp = -5 + 10 * rand(5000,100000);

tmp(tmp<0) = 0;
result = mean(tmp);

我想知道是否有更好的方法来获得一些速度?

1 个答案:

答案 0 :(得分:4)

在数组中查找值然后替换它们是一项非常昂贵的操作。相反,请执行以下操作:

% slooooooow
tic
tmp(tmp<0)=0;
mean(tmp);
toc

% faaaaaaaaaast
tic
tmp=max(tmp,0);
mean(tmp);
toc

在我的电脑中,报告:

Elapsed time is 5.940434 seconds.
Elapsed time is 0.358057 seconds.

请记住,如果您希望获得单个均值,则应致电mean(tmp(:))