在Matlab中用NaN取矩阵的平均值[重复]
Posted
技术标签:
【中文标题】在Matlab中用NaN取矩阵的平均值[重复]【英文标题】:Taking the mean of a matrix with NaN's in Matlab [duplicate] 【发布时间】:2013-01-19 14:56:48 【问题描述】:可能重复:Dealing with NaN’s in matlab functions
是否有一行命令允许您在 Matlab 中获取矩阵的元素平均值(忽略 NaN
's)?例如,
>> A = [1 0 NaN; 0 3 4; 0 NaN 2]
A =
1 0 NaN
0 3 4
0 NaN 2
所以mean(A)
应该等于(1+3+2+4+0+0+0)/7 = 1.4286
另外,我无权访问统计工具箱,因此无法使用nanmean()
【问题讨论】:
请参阅***.com/questions/14693536/… 以获得解决方案 从 2015a 版开始,有一个 'omitnan' 标志,您可以将其作为第三个参数传递以表示执行此操作。 【参考方案1】:nanmean
执行与 mean
类似,但忽略 nans。
例如:
>> A = [1 0 NaN; 0 3 4; 0 NaN 2]
A =
1 0 NaN
0 3 4
0 NaN 2
>> nanmean(A)
ans =
0.333333333333333 1.5 3
>> nanmean(A,2)
ans =
0.5
2.33333333333333
1
>> nanmean(A(:))
ans =
1.42857142857143
【讨论】:
直到现在才注意到您关于没有统计工具箱的警告。奥利的答案是正确的。【参考方案2】:您可以使用isnan()
过滤掉不需要的元素:
mean(A(~isnan(A)))
【讨论】:
A(isnan(A))
不只返回NaN
元素吗?我们是否缺少右括号?
@Prashant:已经修复了!以上是关于在Matlab中用NaN取矩阵的平均值[重复]的主要内容,如果未能解决你的问题,请参考以下文章