查找Array中的所有NaN元素

Gra*_*ton 10 matlab nan

在MATLAB中是否有一个命令允许我在数组中找到所有NaN(非数字)元素?

Mar*_*arc 24

如上所述,最好的答案是isnan()(虽然为木片的元回答+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
Run Code Online (Sandbox Code Playgroud)

isnan(a)返回一个逻辑数组,一个与a大小相同的真假数组,每个地方都有一个"真",有一个nan,可用于索引到a.


小智 23

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

lookfor nan
Run Code Online (Sandbox Code Playgroud)

将快速为您提供一些与NaN一起使用的函数的名称,以及为您提供帮助块的第一行.在这里,它会列出(除其他外)

ISNAN对于非数字而言是对的.

这显然是你想要使用的功能.


Gra*_*ton 9

我刚刚找到答案:

k=find(isnan(yourarray))
Run Code Online (Sandbox Code Playgroud)

k将是NaN元素标记的列表.

  • 在Matlab中,您通常不需要在逻辑数组上调用find(),因为逻辑数组可以直接使用而不是索引用于大多数进一步的操作,例如参见http://blogs.mathworks.com/loren/2006/08/09/本质-的索引/ (5认同)