Matlab仅从具有NaN和非NaN的向量中返回NAN

时间:2013-04-30 23:56:13

标签: matlab simulation average nan mean

我有一个大小为50,000 x 1的矢量模拟数据,它有NaNs和非NaNs。我想平均非NaNs,但功能nanmean返回NAN。我试过删除NANs,但我只得到一个零向量。对载体的目视检查使我怀疑这个载体的真实平均值是NaN。

此外,我想使用此向量来计算与其他几个向量的协方差(在某些时候)。我的替代方案是在Excel中执行此操作,这将是痛苦的。

有什么想法?

谢谢

2 个答案:

答案 0 :(得分:7)

假设您的数据存储在向量A中,您可以采用不包含NaNs的向量的平均值以及任何Inf-Inf值:

meanA = mean( A(isfinite(A)) );

答案 1 :(得分:0)

假设你的矢量只包含有限数值,并且NaN在这里和那里,解决方案非常简单

nanmean(A)

如果向量中存在非有限值,这只会带来麻烦。 在这种情况下,你可以按照@Ryan的建议过滤它们,但是你需要意识到你实际上并没有计算向量的平均值。

问问自己是否可能对

之类的东西感兴趣
nanmedian(A)

关于协方差等的计算,假设你有向量vw,那么我建议你做这样的事情:

idx = isfinite(v) & isfinite(w);
cov(v(idx),w(idx))