【问题标题】:numel(isnan(A)) == numel(~isnan(A)) == numel(A)?数字(isnan(A))==数字(~isnan(A))==数字(A)?
【发布时间】:2016-08-22 19:58:37
【问题描述】:

我有一个 121x601 matrix 和一些 NaN 值。

我无法理解以下不一致的原因:

>> size(A,1)*size(A,2)

ans =

       72721

>> numel(~isnan(A))

ans =

       72721

>> numel(isnan(A))

ans =

       72721

有人可以指点一下吗?

【问题讨论】:

    标签: matlab nan


    【解决方案1】:

    numel 返回矩阵元素的数量,与它们是什么无关。 isnan(A)A 中的每个元素转换为布尔值,具体取决于相应元素是否为 NaN。但是两个矩阵isnan(A)及其补集~isnan(A)的元素个数相同,即原矩阵的元素个数A

    详细了解numelisnan

    【讨论】:

    • 所以numel(A(~isnan(A))) 就是我要找的!谢谢!
    • @shamalaia 或者只是sum(~isnan(A))
    • @shamalaia 只是为了混合起来,nnz(~isnan(A)) 也可以。
    • @Holt,不不不! sum(~isnan(A)) 将返回一个列向量,其中包含每列中非 NaN 元素的数量。 sum(A) 默认计算每一列的总和。执行此操作的正确方法是 sum(sum(~isnan(A)));sum(~isnan(A(:)));` 或 craigim 建议的 nnz(~isnan(A))。我认为最后一个是最好的......
    • 对了。我已经习惯了 NumPy,那里不需要那种诡计。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-07
    • 1970-01-01
    • 2022-01-27
    • 2016-04-25
    • 2012-07-25
    • 2015-12-19
    相关资源
    最近更新 更多