63 votes

Boucle dans les fichiers d'un dossier en matlab

J'ai un ensemble de jours de fichiers journaux que je dois analyser et regarder dans Matlab.

Les fichiers journaux ressemblent à ceci :

LOG_20120509_120002_002.csv
(year)(month)(day)_(hour)(minute)(second)_(log part number)

Les journaux s'incrémentent toutes les heures, mais parfois les secondes sont décalées d'une ou deux secondes (par heure), ce qui signifie que je dois ignorer ce qu'ils me disent de faire. loadcsv .

J'ai aussi un autre dossier :

LOG_DATA_20120509_120002.csv

qui contient les données pour l'heure entière (données différentes).

L'objectif général est de :

 loop through each day 
     loop through each hour
         read in LOG_DATA for whole hour
         loop through each segment
             read in LOG for each segment
                 compile a table of all the data

Je suppose que la question est alors, comment puis-je ignorer les minutes du jour si elles sont différentes ? Je pense que ce sera en passant en boucle par tous les fichiers du dossier, dans ce cas, comment faire ?

102voto

Isaac Points 2150

Il est relativement facile de parcourir en boucle tous les fichiers du dossier :

files = dir('*.csv');
for file = files'
    csv = load(file.name);
    % Do some stuff
end

0 votes

J'avais le sentiment qu'il y aurait quelque chose avec dir, mais je n'arrivais pas à mettre le doigt dessus. Merci pour votre réponse.

2 votes

Mmm, cela ne fonctionne pas pour moi... file = files copie simplement les fichiers dans le fichier :(

12 votes

Essayez file = files' ; elle peut exiger que files est un tableau de rangées.

3voto

PyMatFlow Points 255

Tout d'abord, vous devez spécifier votre chemin, le chemin que votre *.csv Les fichiers sont là

path = 'f:\project\dataset'

Vous pouvez le modifier en fonction de votre système.

alors,

utiliser dir fonction :

files = dir (strcat(path,'\*.csv'))

L = length (files);

for i=1:L
   image{i}=csvread(strcat(path,'\',file(i).name));   
   % process the image in here
end

pwd peut également être utilisé.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X