Как бороться с NaN при чтении в CSV-файл в C ++ - PullRequest
3 голосов
/ 09 августа 2010

Я читаю в файле 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.Есть ли простой способ или избежать этой предварительной обработки?

Спасибо!

Ответы [ 2 ]

7 голосов
/ 09 августа 2010

Как уже упоминал Дэвид Дан, вам не нужно предварительно обрабатывать файл.strtof () и strtod () могут конвертировать строку NaN в значение типа float / double NaN.

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

if (isnan(val))
{
    val = 0.0;
}
0 голосов
/ 09 августа 2010

Хотите ли вы, чтобы результат был плавающим (или двойным) NaN - тогда используйте функцию stdlib strtod ().

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

...