在matlab中查找平均值

时间:2012-11-11 04:25:23

标签: matlab matrix average

我有950000x1个值数组,例如[1e15 2.5e12 ...etc]。但当我执行以下操作以获得平均值时,我得到的值为NaN

avg=mean(g1)

我无法理解为什么会收到此错误。

2 个答案:

答案 0 :(得分:2)

以下代码在我的机器上运行正常(Core i7,16GB RAM,Linux Mint v12,Matlab 2012b):

T = 1e9;
Vec = ones(T, 1) * 1e200;
M = mean(Vec);

这告诉我,您的值数组在某处包含NaN。请注意,即使您的数组包含的数字大于双浮点数也可以处理(即大约为1e320或其左右),mean函数将返回Inf,而不是NaN。< / p>

在您的阵列上尝试any(isnan(Vec))。如果它返回1,那么您知道它包含NaN。如果是,则以下代码将删除NaN。

Vec(isnan(Vec)) = [];

如果您认为这已经解决了您的查询,请随时点击我的答案旁边的刻度线。干杯!

答案 1 :(得分:1)

在查询NaN函数之前,您可以使用mean代替nanmean,而不是在计算平均值时忽略NaN值:

nanmean

  

y = nanmean(X)是X的平均值,在去除NaN值后计算。

它也适用于矩阵,如果删除NaN,它就不起作用。