在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取矩阵的平均值[重复]的主要内容,如果未能解决你的问题,请参考以下文章

matlab中怎么求余数

求助!急!matlab中 NaN会参与运算吗

在 matlab 函数中处理 NaN

操作存储在元胞数组中的矩阵——Matlab

如何在Matlab中将每个矩阵与平均值和返回值进行比较

熊猫如何使用 groupby 将 NaN 值替换为平均值 [重复]