Pergunta

Estou lendo em um arquivo CSV de dados de séries temporais em um programa C ++. Meus dados, no entanto, contêm alguns nan. Por exemplo:

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

Para lidar com isso, escrevi um pequeno script no Matlab, que substitui todos os nans por 0,0 - então li no novo arquivo sem o NAN's. Existe uma maneira fácil ou evitar esse pré-processamento?

Obrigado!

Foi útil?

Solução

Como David já mencionado, você não precisa pré-processar o arquivo. strtof () e strtod () são capazes de converter a string nan para o valor nan -float/duplo.

Se você deseja substituir os valores por 0.0 no seu conjunto de dados, pode fazê -lo usando a função iSNAN ().

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

Outras dicas

Deseja que o resultado seja uma nan float (ou dupla) - use a função stdlib strtod ().

Se você quiser lidar com isso à sua maneira (defina -o como 0 etc), leia cada linha em uma string primeiro, verifique a NAN com strcmp (), analise a string dependendo do que você encontrar - mais fácil se a NAN só puder aparecer em uma coluna.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top