Domanda

che sto leggendo in un file CSV dei dati di serie temporali in un programma C ++. I miei dati contiene tuttavia alcuni Nan. Ad esempio:

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

Per far fronte a questo ho scritto un breve script in Matlab che sostituisce tutte le Nan con 0.0 - Ho poi letto nel nuovo file senza il Nan. C'è un modo semplice o evitare questo pre-trattamento?

Grazie!

È stato utile?

Soluzione

Come David Dato già accennato, non c'è bisogno di pre-processo il file a tutti. strtof () e strtod () sono entrambi in grado di convertire la stringa NaN alla NaN float / valore doppio.

Se si desidera sostituire i valori con 0.0 a set di dati, è possibile farlo utilizzando la funzione isNaN ().

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

Altri suggerimenti

Vuoi che il risultato sia un galleggiante (o doppio) NaN -. Quindi utilizzare la funzione stdlib strtod ()

Se si vuole affrontare il problema a modo suo (impostato a 0, ecc) quindi leggere ogni riga in una stringa prima, assegno di NaN con strcmp () poi analizzare la stringa a seconda di ciò che si trova - più facile se NaN può apparire in una sola colonna.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top