Ersetzen Sie alle NaNs durch Nullen, ohne die gesamte Matrix zu durchlaufen.

8

Ich hatte eine Idee, alle NaNs in meiner Matrix zu ersetzen, indem wir jede einzelne durchschleifen und Isnan verwenden. Ich vermute jedoch, dass dies dazu führen wird, dass mein Code langsamer läuft als er sollte. Kann jemand einen besseren Vorschlag machen?

    
user1205197 21.01.2013, 13:20
quelle

3 Antworten

23

Nehmen wir an, Ihre Matrix ist:

%Vor%

Sie können die NaN -Elemente finden und sie durch isnan ersetzen so:

%Vor%

Dann ist Ihre Ausgabe:

%Vor%     
HebeleHododo 21.01.2013, 13:25
quelle
5

Wenn x Ihre Matrix ist, verwenden Sie die Funktion isnan , um das Array zu indizieren:

%Vor%

Wenn Sie es in zwei Schritten tun, ist es wahrscheinlich klarer, was passiert. Machen Sie zuerst ein Array von Wahr / Falsch-Werten und verwenden Sie dieses dann, um ausgewählte Elemente auf Null zu setzen.

%Vor%

Das ist ziemlich einfach. Sie würden gut daran tun, einige der Online-Tutorials zu MATLAB zu lesen, um auf dem neuesten Stand zu sein.

    
Justin 21.01.2013 13:24
quelle
4

Die Funktion isnan ist vektorisiert, was bedeutet:

%Vor%     
Rody Oldenhuis 21.01.2013 13:25
quelle

Tags und Links