0

我有一个大小为 50,000 x 1 的向量中的模拟数据,其中包含 NaN 和非 NaN。我想平均非 NaN,但函数 nanmean 返回 NAN。我试过删除 NAN,但我只得到一个零向量。对向量的视觉检查让我怀疑这个向量的真实平均值是否真的是 NaN。

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

有什么想法吗?

谢谢

4

2 回答 2

7

假设您的数据存储在一个向量A中,您可以通过以下方式获取向量的平均值,不包括NaNs以及任何值Inf-Inf值:

meanA = mean( A(isfinite(A)) );
于 2013-04-30T23:59:52.633 回答
0

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

nanmean(A)

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

问问自己,你是否可能对类似的东西感兴趣

nanmedian(A)

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

idx = isfinite(v) & isfinite(w);
cov(v(idx),w(idx))
于 2013-05-01T11:34:12.003 回答