3

時系列データの 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 なしで新しいファイルを読み込みました。この前処理を回避する簡単な方法はありますか?

ありがとう!

4

2 に答える 2

7

David Given が既に述べたように、ファイルを前処理する必要はまったくありません。strtof() と strtod() はどちらも NaN 文字列を NaN float/double 値に変換できます。

データセットの値を 0.0 に置き換えたい場合は、isnan() 関数を使用して行うことができます。

if (isnan(val))
{
    val = 0.0;
}
于 2010-08-09T15:27:32.063 に答える
0

結果を float (または double) NaN にしたい場合は、stdlib の strtod() 関数を使用します。

独自の方法で処理したい場合 (0 に設定するなど)、最初に各行を文字列に読み込み、strcmp() で NaN をチェックしてから、見つかった内容に応じて文字列を解析します - NaN しか表示されない場合は簡単です1 つの列で。

于 2010-08-09T15:26:09.730 に答える