Вопрос

Я читаю в файле CSV данных серии Time в программу C ++. Мои данные, однако, содержит некоторые нан. Например:

1-Jul-2010,   1.0 
2-Jul-2010,   2.0
3-Jul-2010,   NaN
4-Jul-2010,   3.0

Чтобы разобраться с этим, я написал короткий скрипт в Matlab, который заменяет все NAN с 0,0 - я тогда читаю в новом файле без нан. Есть ли простой способ или избегать этой предварительной обработки?

Спасибо!

Это было полезно?

Решение

Как уже упоминалось Давид, вы не должны предварительно обработать файл вообще. STRTOF () и STRTOD () способны преобразовывать строку NAN в NAN FLOAT / двойное значение.

Если вы хотите заменить значения с 0.0 в ваш набор данных, вы можете сделать это, используя функцию isnan ().

if (isnan(val))
{
    val = 0.0;
}

Другие советы

Хотите, чтобы результат был поплавок (или двойной) NAN - затем используйте функцию Stdlib Strtod ().

Если вы хотите иметь дело с ним по-своему (установите его на 0 и т. Д.) Затем сначала прочитайте каждую строку в строку, проверьте на нан с strcmp (), затем проанализируйте строку в зависимости от того, что вы найдете - проще, если нан может появиться только в одном столбце.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top