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 :

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{:};
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.

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 :

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{:};
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.

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.