Question

Je lis dans un fichier csv des données de séries chronologiques dans un programme C ++. Mes données contient cependant certains NaN est. Par exemple:

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

Pour faire face à ce que j'ai écrit un script court dans Matlab qui remplace tous les NaN est avec 0.0 - Je lis alors dans le nouveau fichier sans NaN de. Est-il un moyen facile d'éviter ou cette pré-traitement?

Merci!

Était-ce utile?

La solution

Comme David Comme déjà mentionné, vous n'avez pas de pré-traiter le fichier du tout. strtof () et strtod () sont tous deux capables de convertir la chaîne NaN au flotteur NaN / double valeur.

Si vous voulez remplacer les valeurs avec 0.0 dans votre ensemble de données, vous pouvez le faire en utilisant la fonction isnan ().

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

Autres conseils

Voulez-vous que le résultat soit un flotteur (ou double) - NAN. Puis utilisez la fonction strtod stdlib ()

Si vous voulez traiter dans votre propre chemin (mis à 0 etc) a ensuite lu chaque ligne dans une chaîne d'abord, vérifiez NaN avec strcmp () analyser ensuite la chaîne en fonction de ce que vous trouvez - plus facile si NaN ne peut apparaître dans une colonne.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top