我正在将时间序列数据的 csv 文件读入 C++ 程序。然而,我的数据包含一些 NaN。例如:
1-Jul-2010, 1.0
2-Jul-2010, 2.0
3-Jul-2010, NaN
4-Jul-2010, 3.0
为了解决这个问题,我在 Matlab 中编写了一个简短的脚本,用 0.0 替换了所有的 NaN - 然后我读入了没有 NaN 的新文件。有没有简单的方法或避免这种预处理?
谢谢!
正如 David Given 已经提到的,您根本不需要预处理文件。strtof() 和 strtod() 都能够将 NaN 字符串转换为 NaN 浮点/双精度值。
如果要将数据集中的值替换为 0.0,可以使用 isnan() 函数进行。
if (isnan(val))
{
val = 0.0;
}
您是否希望结果为浮点(或双精度)NaN - 然后使用 stdlib strtod() 函数。
如果您想以自己的方式处理它(将其设置为 0 等),然后首先将每一行读入一个字符串,使用 strcmp() 检查 NaN,然后根据您找到的内容解析字符串 - 如果 NaN 只能出现,则更容易在一列中。