我正在将时间序列数据的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的新文件中读到。有一个简单的方法或避免 这个预处理?
谢谢!
答案 0 :(得分:7)
正如David Given已经提到的,你根本不需要预处理文件。 strtof()和strtod()都能够将NaN字符串转换为NaN float / double值。
如果要在数据集中将值替换为0.0,可以使用isnan()函数执行此操作。
if (isnan(val))
{
val = 0.0;
}
答案 1 :(得分:0)
您希望结果是浮点数(或双精度数)NaN - 然后使用stdlib strtod()函数。
如果你想以你自己的方式处理它(把它设置为0等)然后先将每一行读成一个字符串,用strcmp()检查NaN然后根据你发现的东西解析字符串 - 如果NaN更容易只能出现在一列中。