時系列データの csv ファイルを C++ プログラムに読み込んでいます。ただし、私のデータには NaN が含まれています。例えば:
1-Jul-2010, 1.0
2-Jul-2010, 2.0
3-Jul-2010, NaN
4-Jul-2010, 3.0
これに対処するために、Matlab ですべての NaN を 0.0 に置き換える短いスクリプトを作成し、NaN なしで新しいファイルを読み込みました。この前処理を回避する簡単な方法はありますか?
ありがとう!
David Given が既に述べたように、ファイルを前処理する必要はまったくありません。strtof() と strtod() はどちらも NaN 文字列を NaN float/double 値に変換できます。
データセットの値を 0.0 に置き換えたい場合は、isnan() 関数を使用して行うことができます。
if (isnan(val))
{
val = 0.0;
}
結果を float (または double) NaN にしたい場合は、stdlib の strtod() 関数を使用します。
独自の方法で処理したい場合 (0 に設定するなど)、最初に各行を文字列に読み込み、strcmp() で NaN をチェックしてから、見つかった内容に応じて文字列を解析します - NaN しか表示されない場合は簡単です1 つの列で。