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