2009-11-11 58 views

回答

9

我只是找到了答案:

k=find(isnan(yourarray)) 

k將是NaN的元素indicies的列表。

+5

在Matlab中,您通常不需要在邏輯陣列上調用find(),因爲可以直接使用邏輯數組而不是索引來進行大多數進一步的操作,請參見http://blogs.mathworks .com/loren/2006/08/09 /索引精華/ – Mikhail 2009-11-11 08:21:08

+0

有時候你只需要邏輯數組,有時候你需要索引。我同意不做不必要的操作,但是OP沒有說清楚他想要什麼。這個答案是正確的。 – MatlabDoug 2009-11-11 14:48:32

23

雖然isnan是正確的解決方案,但我只想指出找到它的方法。使用lookfor。當你不知道MATLAB中函數的名字時,試着找一下。

lookfor nan 

將迅速給您的一些功能與NaN的工作,以及給你的幫助塊的第一行的名字。在此,它將列出(除其他事項外)

ISNAN對於非數字爲真。

這顯然是你想要使用的功能。

+2

+1教男人如何釣魚! – Marc 2009-11-12 13:57:27

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 

isnan(a)中返回一個邏輯陣列,真&假相同大小作爲陣列,與「真」的每一個地方有一個:的更完整的示例如何使用邏輯索引使用它nan,可用於index into a.

+0

我接受了你的答案,因爲你告訴我如何用0值替換NaN,這對我的目的是無價的。 – Graviton 2009-11-11 14:30:45