3

我正在将时间序列数据的 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 的新文件。有没有简单的方法或避免这种预处理?

谢谢!

4

2 回答 2

7

正如 David Given 已经提到的,您根本不需要预处理文件。strtof() 和 strtod() 都能够将 NaN 字符串转换为 NaN 浮点/双精度值。

如果要将数据集中的值替换为 0.0,可以使用 isnan() 函数进行。

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

您是否希望结果为浮点(或双精度)NaN - 然后使用 stdlib strtod() 函数。

如果您想以自己的方式处理它(将其设置为 0 等),然后首先将每一行读入一个字符串,使用 strcmp() 检查 NaN,然后​​根据您找到的内容解析字符串 - 如果 NaN 只能出现,则更容易在一列中。

于 2010-08-09T15:26:09.730 回答