|
|
|
|
Bonjour,
J'aimerais sous matlab, avoir le nombre de fichiers dans un dossier pour pouvoir réaliser une boucle de lecture de tous ces fichiers. Cependant si une fonction matlab permet de lire tous les fichiers sans avoir besoin du nombre exacte de fichiers, je suis preneur aussi.
question bonus : les commandes cd, ls etc... marche-t-elle sous matlab windows..il me semble que non..
Merci bien d'avance
Configuration: Windows XP Firefox 2.0.0.20
Salut
ne pas poster votre message plusieurs fois sur le forumhttp://www.commentcamarche.net/forum/affich 11600272 matlab traitements ascii dans dossiers http://www.commentcamarche.net/forum/affich 11601175 matlab boucle lecture fichiers dans dossier En référence à ce sujet, quand des dossiers ou des fichiers ont des espaces, faut mettre des apostrophes... cd D:\Travail\'DOSSIER TEST'\'TEST BOUCLE'\En référence à ce sujet, pour traiter tous les fichiers d'un dossier, on va pas tout faire à ta place, alors au lieu de poster 3 fois pour avoir une réponse plus rapidement, faudrait peut-être penser à lire les réponses qui te sont données et à réfléchir un minimum pour répondre toi-même à la question en trois coups de cuillère à pot ; les assistés de la vie, ça commence à bien faire. Char Snipeur dans son message 3 te disait que tu pouvais définir un tableau de caractères en faisant simplement A=ls; ; ce que j'ai confirmé au message 5 en précisant que dans le tableau de caractères obtenu, il y avait . et .. dont il fallait pas s'occuper, avec ça je vois pas où est le problème... cd le_dossier_où_il_faut_aller A=ls; for p=3:size(A,1) fid=fopen(A(p,:),'r'); %% Lire avec ce que tu veux... %% fread, fscanf, fgets, fgetl, textscan fclose(fid); endOu encore cd le_dossier_où_il_faut_aller A=ls; for p=3:size(A,1) %% Lecture avec textread %% du fichier de nom A(p,:) endCiao Gare au goriiiiiiiiiille ! |
Bonjour,
|
par exemple peut on pas tout ouvrir en écrivant simplement débutNomCommmun*.txt après d'avoir dirigé matlab sur l'ensemble des dossiers?
cd le_dossier_où_il_faut_aller A=ls; for p=3:size(A,1) eval(['fid' num2str(p) '=fopen(A(p,:),''r'');']); end %% Blablabla... fclose allIls seront tous ouverts avec les identifiants fid1, fid2, fid3, fid4, etc, etc... Mais ta demande était de les lire un par un. Comment écrire une boucle simple qui lirait les fichiers un par un des deux dossiers ? Apparemment t'as moult dossiers aussi, sous Unix/Linux, tu peux passer tous les flags supportés par ton OS à la commande ls. Donc ls -R pour un listing récursif. Pour Windows, je sais pas s'il y a moyen de faire ça rapidos, mais tu peux aller télécharger le Recursive directory listing sur le File Exchange de Mathworks : http://www.mathworks.com/matlabcentral/fileexchange/19550 Bon après-midi Gare au goriiiiiiiiiille ! |
Et du coup, en référence aux précisions apportées dans ce sujet, un bidule de ce genre ferait l'affaire... A=rdir('C:\2009\**\*.txt');
for p=1:size(A,1)
fid=fopen(A(p).name,'r');
%% Traitement du fichier
fclose(fid);
end Ciao
Gare au goriiiiiiiiiille ! |
Merci, j'ai essayé ça :
|
Parfait, maintenant cela fonctionne (désolé, persuadé que pbug était une sorte de fonction caché de matlab que j'avais pas, en même j'aurais du m'en douter quand j'ai essayé de la chercher sur google et que j'ai rien trouvé).
|
De rien ;-)
|
Salut.
|
Salut Char Snipeur
|
Je sais pas si avec ta version ça tournera, mais essaie ça ;-)
A=dir; B=strvcat(A.name);Si tout se passe bien, tu devrais obtenir un tableau de caractères. Si tu préfères l'avoir en tableau de cellules de caractères, un truc de ce genre devrait coller ;-) A=dir;
B={A.name};
Gare au goriiiiiiiiiille ! |