Pregunta

Estoy leyendo en un archivo CSV de datos de series temporales en un programa en C ++. Mis datos contiene sin embargo algunos de Nan. Por ejemplo:

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

Para hacer frente a esta Escribí un pequeño script en Matlab que sustituye todo el NaN de con 0.0 - luego leí en el nuevo archivo sin el NaN de. ¿Hay una manera fácil o evitar este pre-procesamiento?

Gracias!

¿Fue útil?

Solución

Como David Dado que ya se ha mencionado, usted no tiene que pre-procesar el archivo en absoluto. strtof () y strtod () son ambos capaces de convertir la cadena NaN a la / doble valor NaN flotador.

Si desea reemplazar los valores con 0.0 en su conjunto de datos, puede hacerlo a través de la función isnan ().

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

Otros consejos

¿Quieres que el resultado sea un flotador (o doble) NaN -. A continuación, utilizar la función stdlib strtod ()

Si usted quiere tratar con él en su propio camino (ajustado a 0, etc) y luego leer cada línea en una cadena primero, cheque por NaN con strcmp () y luego analizar la cadena en función de lo que se encuentra - más fácil si NaN sólo puede aparecer en una columna.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top