Esiste un comando in MATLAB che mi consente di trovare tutti gli elementi NaN (Not-a-Number) all'interno di un array?Trova tutti gli elementi NaN all'interno di una matrice
risposta
Ho appena trovato la risposta:
k=find(isnan(yourarray))
k sarà un elenco di elementi indicies NaN.
Mentre isnan è la soluzione corretta, indicherò semplicemente il modo per averlo trovato. Usa lookfor. Quando non conosci il nome di una funzione in MATLAB, prova lookfor.
lookfor nan
rapidamente dare i nomi di alcune funzioni che lavorano con NaNs, oltre a dare la prima linea dei loro blocchi di aiuto. Qui, avrebbe elencato (tra le altre cose)
ISNAN True for Not-a-Number.
che è chiaramente la funzione che si desidera utilizzare.
+1 per insegnare a un uomo a pescare! – Marc
Come notato, la risposta migliore è isnan() (anche se +1 per meta-risposta di woodchips). Un esempio più completo di come usarlo con indicizzazione logico:
>> 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) restituisce un array logico, un array di vera & falso della stessa dimensione come, con "vero" ogni luogo v'è un nan, che può essere utilizzato per index into a.
Ho accettato la tua risposta perché mi hai mostrato come sostituire il NaN con il valore 0, che è inestimabile per il mio scopo. – Graviton
In Matlab spesso non è necessario chiamare find() sull'array logico perché gli array logici possono essere utilizzati direttamente anziché gli indici per la maggior parte delle operazioni successive, vedere ad esempio http: //blogs.mathworks .com/loren/2006/08/09/essence-of-indexing/ – Mikhail
Ci sono momenti in cui hai bisogno solo della matrice logica, e ci sono momenti in cui hai bisogno degli indici. Sono d'accordo a non fare operazioni non necessarie, tuttavia il PO non ha chiarito quale voleva. Questa risposta è corretta. – MatlabDoug