2010-02-28 7 views
0

comment je peux lire les fichiers suivants en utilisant la boucle for: (peut la boucle ignorer les caractères dans les noms de fichiers)Que dois-je ajouter au début de cette boucle?

abc-1.TXT
cde-2.txt
ser-3.TXT
WSZ-4.TXT
AQZ-5.TXT
iop-6.TXT

Que dois-je ajouter au début de cette boucle ??

for i = 1:1:6 
    nom_fichier = strcat(['MyFile\.......' num2str(i) '.TXT']); 
+0

Comment Matlab devrait savoir quels caractères sont avant les nombres dans les noms de fichiers? Ou vous voulez lire tous les fichiers dont le nom est terminé par des chiffres? L'ordre de lecture des fichiers est-il important? S'il vous plaît fournir plus de détails. – yuk

Répondre

3

Vous pouvez éviter de construire les noms de fichiers en utilisant la commande DIR. Par exemple:

myfiles = dir('*.txt'); 
for i = 1:length(myfiles) 
    nom_fichier = myfiles(i).name; 
    ...do processing here... 
end 
1

Tout d'abord, pourquoi voudriez-vous utiliser strcat ici? C'est, en soi, une chaîne unique. Toute concaténation a déjà été faite par les crochets [].

['MyFile\.......' num2str(i) '.TXT'] 

Ensuite, je ne sais pas quelle est votre question ici. Est-ce comment charger dans les données? Si les fichiers sont simplement des nombres délimités, avec le même nombre d'entre eux sur chaque ligne, alors charger suffira pour les charger, ou peut-être vous aurez besoin de textread. Je pense que vous ne savez pas comment construire la partie principale du nom de fichier. Vous pouvez le faire de cette façon:

Names = {'abc' 'cde 'ser' 'wsz' 'aqz' 'iop'}; 
for i = 1:6 
    fn = ['MyFile',filesep,Names{i},'-',num2str(i),'.TXT']; 
    data = load(fn); 

    % do other stuff ... 

end 

Si vous ne voulez pas créer une variable avec les noms en les tapant, puis utilisez dir, peut-être comme celui-ci pour créer une liste de noms de fichiers texte:

Names = dir('MyFile\*.TXT');