Frage

Ich lese in einer CSV-Datei von Zeitreihendaten in ein C ++ Programm. Meine Daten jedoch enthält einige NaN ist. Zum Beispiel:

1-Jul-2010,   1.0 
2-Jul-2010,   2.0
3-Jul-2010,   NaN
4-Jul-2010,   3.0

Um mit dieser ich ein kurzes Skript in Matlab geschrieben, die alle Nans mit 0.0 ersetzt - Ich las dann in der neuen Datei ohne die Nans. Gibt es eine einfache Art und Weise oder zu vermeiden Diese Vorverarbeitung?

Danke!

War es hilfreich?

Lösung

Wie David Da bereits erwähnt, Sie müssen nicht im Voraus Prozess die Datei überhaupt. strtof () und strtod () sind beide in der Lage, die NaN Zeichenfolge an den NaN float / double-Wert zu konvertieren.

Wenn Sie die Werte mit 0,0 in Ihrem Datensatz ersetzen möchten, können Sie dies mit dem isnan () Funktion.

if (isnan(val))
{
    val = 0.0;
}

Andere Tipps

Möchten Sie das Ergebnis wollen ein Schwimmer (oder doppelt) NaN sein -. Dann mit der stdlib strtod () Funktion

Wenn Sie mit ihm in seinem eigenen Weg umgehen wollen (auf 0 setzen etc) dann jede Zeile in einen String zuerst lesen, Check für NaN mit strcmp (), dann analysiert die Zeichenfolge je nachdem, was Sie finden - einfacher, wenn NaN kann nur in einer Spalte angezeigt werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top