【问题标题】:Find all NaN elements inside an Array查找 Array 中的所有 NaN 元素
【发布时间】:2010-12-15 09:13:20
【问题描述】:

MATLAB 中是否有一个命令可以让我找到数组中的所有 NaN(非数字)元素?

【问题讨论】:

    标签: matlab nan


    【解决方案1】:

    我刚刚找到了答案:

    k=find(isnan(yourarray))
    

    k 将是 NaN 元素索引的列表。

    【讨论】:

    • 在 Matlab 中,您通常不需要在逻辑数组上调用 find(),因为可以直接使用逻辑数组而不是索引进行大多数进一步的操作,例如参见 blogs.mathworks.com/loren/2006/08/09/essence-of-indexing
    • 有时你只需要逻辑数组,有时你需要索引。我同意不做不必要的操作,但是 OP 没有明确说明他想要什么。这个答案是正确的。
    【解决方案2】:

    虽然 isnan 是正确的解决方案,但我只是指出找到它的方法。使用查找。如果您不知道 MATLAB 中的函数名称,请尝试查找。

    lookfor nan
    

    将很快为您提供一些使用 NaN 的函数的名称,并为您提供它们帮助块的第一行。在这里,它会列出(除其他外)

    对于非数字,ISNAN 为真。

    这显然是您要使用的功能。

    【讨论】:

      【解决方案3】:

      如前所述,最好的答案是 isnan()(尽管对于 woodchips 的元答案 +1)。一个更完整的例子,说明如何将它与逻辑索引一起使用:

      >> a = [1 nan;nan 2]
      
      a =
      
        1   NaN
      NaN     2
      
      >> %replace nan's with 0's
      >> a(isnan(a))=0
      
      a =
      
       1     0
       0     2
      

      isnan(a)返回一个逻辑数组,一个大小与a相同的true&false数组,每有一个nan的地方就带“true”,可以用来index into a.

      【讨论】:

      • 我接受了您的回答,因为您向我展示了如何将 NaN 替换为 0 值,这对我的目的来说非常宝贵。
      猜你喜欢
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 2021-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多