Найти все элементы NaN внутри массива - PullRequest
10 голосов
/ 11 ноября 2009

Есть ли в MATLAB команда, позволяющая мне найти все NaN (не-число) элементов внутри массива?

Ответы [ 3 ]

24 голосов
/ 11 ноября 2009

Как уже отмечалось, лучшим ответом является 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

isnan (a) возвращает логический массив, массив true и false того же размера, что и a, с "true" в каждом месте, где есть nan, который можно использовать для индексации в.

23 голосов
/ 11 ноября 2009

Хотя isnan - правильное решение, я просто укажу способ его найти. Используйте lookfor. Если вы не знаете имя функции в MATLAB, попробуйте поискать.

lookfor nan

быстро даст вам имена некоторых функций, которые работают с NaN, а также даст вам первую строку их блоков помощи. Здесь он бы перечислил (среди прочего)

ISNAN Истинно для не числа.

, что, безусловно, является функцией, которую вы хотите использовать.

9 голосов
/ 11 ноября 2009

Я только что нашел ответ:

k=find(isnan(yourarray))

k будет списком указателей элементов NaN.

...