Lecture d'un lot de fichiers

Il est courant de disposer d'un ensemble de fichiers de données expérimentales à traiter.

Vous trouverez ici un dossier de fichiers de données CSV, que l'on souhaite traiter par lot :

Dossier contenant des fichiers CSV [zip]

Vous pouvez télécharger et décompresser cette archive pour disposer des fichiers CSV d'exemple.

La fonction dir permet de récupérer la liste des fichiers contenus dans un répertoire, en les filtrant selon leur extension.

Syntaxe

La fonction dir prend comme argument une chaîne de caractères représentant le chemin vers un répertoire. Ce chemin peut comporter le symbole * (wildcards), qui est ce que l'on appelle un méta-caractère ou un joker : il permet de remplacer n'importe quel caractère ou groupe de caractères.

liste = dir('repertoire/*')

La fonction renvoie alors une structure correspondant à l'ensemble des fichiers se trouvant dans le répertoire indiqué, et respectant le filtre précisé. Cette structure comporte différents champs permettant de connaître principalement le nom du fichier, sa taille et la date de sa création.

Exemple

La commande suivante renvoie dans la variable listeFichiersCSV une structure correspondant à tous les fichiers du répertoire DATAS ayant pour extension csv.

listeFichiersCSV = dir('./DATAS/*.csv') ;

Exemple

Dans l'exemple qui suit, une fois que l'on a la liste des fichiers qui nous intéressent, c'est-à-dire correspondant aux données expérimentales que l'on veut représenter, une simple structure for permet alors de parcourir l'ensemble des fichiers pour les traiter.

%%
% Fabien Baillon et Jean-Louis Dirion - Nov.2014
% Exemple de traitement par lot
%
clear all
clc
%
experience = 'ManipsLS5';
extension ='csv';

%%
% Récupération de la liste des fichiers de données présents dans le dossier
% d'expérience
filelist = dir([experience,'/*',extension]);
nfiles = length(filelist);
%
% Pour chaque fichier, on récupère les infos (dates, heures) et les données
% les données sont stockées dans des tableaux RAIES et DATAS
LEGENDS = [];

for ifile = 1:nfiles
    disp(['Traitement du fichier n° ',sprintf('%d',ifile)])
    probname = filelist(ifile).name;
    probdate = filelist(ifile).date;
    tmp=csvread([experience,'/',probname]);
%   
    if ~exist('DATAS')
        RAIES = tmp(:,1);
        DATAS = tmp(:,2);
    else
        DATAS = [DATAS tmp(:,2)];
    end
%    
    LEGENDS = [LEGENDS; [experience, ' : ',probdate]];
end


%%
%
plot(RAIES,DATAS);
legend(LEGENDS);
xlabel('\lambda (cm^{-1})');
ylabel('Intensité I (UA)');
title('Spectres RAMAN');
Spectres RAMAN issus d'un traitement par lot
Spectres RAMAN issus d'un traitement par lot