我有一个大小为 50,000 x 1 的向量中的模拟数据,其中包含 NaN 和非 NaN。我想平均非 NaN,但函数 nanmean 返回 NAN。我试过删除 NAN,但我只得到一个零向量。对向量的视觉检查让我怀疑这个向量的真实平均值是否真的是 NaN。
另外,我想使用这个向量来计算与其他几个向量的协方差(在某些时候)。我的替代方法是在 Excel 中执行此操作,这会很痛苦。
有什么想法吗?
谢谢
我有一个大小为 50,000 x 1 的向量中的模拟数据,其中包含 NaN 和非 NaN。我想平均非 NaN,但函数 nanmean 返回 NAN。我试过删除 NAN,但我只得到一个零向量。对向量的视觉检查让我怀疑这个向量的真实平均值是否真的是 NaN。
另外,我想使用这个向量来计算与其他几个向量的协方差(在某些时候)。我的替代方法是在 Excel 中执行此操作,这会很痛苦。
有什么想法吗?
谢谢
假设您的数据存储在一个向量A
中,您可以通过以下方式获取向量的平均值,不包括NaNs
以及任何值Inf
和-Inf
值:
meanA = mean( A(isfinite(A)) );
假设你有一个只包含有限数值的向量,并且在NaN
这里和那里,解决方案非常简单
nanmean(A)
如果向量中有非有限值,这只会带来麻烦。在这种情况下,您可以按照@Ryan 的建议将它们过滤掉,但是您需要意识到您实际上并没有计算向量的平均值。
问问自己,你是否可能对类似的东西感兴趣
nanmedian(A)
关于协方差等的计算,假设你有向量v
和w
,那么我建议你做这样的事情:
idx = isfinite(v) & isfinite(w);
cov(v(idx),w(idx))