[英]Finding the average value in matlab
我有一个950000x1
的值数组,例如[1e15 2.5e12 ...etc]
。 但是,当我执行以下操作以获取平均值时,我得到的值为NaN
。
avg=mean(g1)
我无法理解为什么出现此错误。
以下代码可以在我的机器上正常运行(Core i7、16GB RAM,Linux Mint v12,Matlab 2012b):
T = 1e9;
Vec = ones(T, 1) * 1e200;
M = mean(Vec);
这向我建议您的值数组在某处包含NaN
。 请注意,即使您的数组包含的数字大于双精度浮点数也可以处理(即1e320左右), mean
函数将返回Inf
,而不是NaN
。
在数组上尝试any(isnan(Vec))
。 如果它返回1
,那么您将知道它包含一个NaN
。 如果是这样,则以下代码将删除NaN。
Vec(isnan(Vec)) = [];
如果您认为这样可以解决您的查询,请随时单击我的答案旁边的对勾。 干杯!
您可以使用nanmean
,而不是在查询mean
函数之前删除NaN
,而在计算均值时会忽略NaN
值:
nanmean :
y = nanmean(X)是X的平均值,是在除去NaN值后计算得出的。
它也适用于矩阵,如果您删除NaN
,它将不起作用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.