Bonjour,
J'utilise une fonction récupérant toutes les données d'un fichier texte à la suite, dans un format numérique.
J'avais dans un premier temps écrit la fonction suivante :
Elle fonctionne mais tout ce qui se trouve dans m est en string donc je dois faire un str2double devant toutes les opérations de mes autres programmes ce qui n'est pas très pratique.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 function [m]=ouverture_fichier(fichier) f=fopen(fichier); a=textscan(f,'%s'); fclose(f); m=a{:};
J'ai essayé en remplaçant %s par %f mais cela ne fonctionne pas car dès que des données non numériques sont rencontrées la lecture s'arrête.
J'ai ensuite trouvé cette solution :
Cela fonctionne bien et plus vite, toutes les chaines de caractères sont remplacées par NaN ce qui me convient. Mais j'ai une vingtaine de mots à éviter ce qui n'est pas très pratique, de plus, si un nouveau mot apparaît dans un nouveau fichier cela ne fonctionnera pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 function [m]=ouverture_fichier_2(fichier) f=fopen(fichier); a=textscan(f,'%f','treatAsEmpty',{'$TITLE','=','$SUBTITLE=','$LABEL','OUTPUT'....etc....}); fclose(f); m=a{:};
1) Avez vous une solution pour que textscan (avec %f) évite toutes les données de type non numérique ?
2) J'en profite pour demander aussi si il est possible d'éviter la ligne m=a{:}; en faisant en sorte que textscan remplisse directement sous forme de vecteur et non de cell contenant ce vecteur.
Merci d'avance pour vos réponses.
Partager