繁体   English   中英

在MATLAB中求平均值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM