Écriture de fichiers de données

On peut distinguer deux objectifs principaux pour lesquels on souhaite enregistrer des données sous forme d'un fichier :

  • soit pour les stocker en vue d'une utilisation ultérieure avec MATLAB ;

  • soit pour utiliser ces données avec un autre logiciel (un tableur, un grapheur, etc).

Créer un fichier MAT

Il est possible de sauvegarder toutes ou certaines variables existantes dans le workspace, sous forme d'un fichier mat, qui conserve la structure des données MATLAB : pour cela, on utilisera la fonction save.

Le format mat est spécifique à MATLAB. Il est donc utile pour sauvegarder des données que l'on compte réutiliser au sein de MATLAB.

Syntaxe

Si l'on veut sauvegarder toutes les variables définies dans le workspace, il suffit d'utiliser la syntaxe :

save(nom_Fichier_mat) ;

nom_Fichier_mat est une chaîne de caractères correspondant au nom du fichier mat que l'on souhaite créer.

Syntaxe

Si l'on veut sauvegarder certaines variables uniquement, il suffit de préciser leur nom, sous forme de chaînes de caractères :

save(nom_Fichier_mat,nom_Variable_1,...,nom_Variable_n) ;

nom_Fichier_mat est une chaîne de caractère correspondant au nom du fichier mat que l'on souhaite créer, et nom_Variable_1, ... , nom_Variable_n sont les chaînes de caractères correspondant aux noms des variables spécifiques à enregistrer.

Exemple

a= pi/6;
x= -a:2*a/100:a ;
y= sin(x).*x ;
save('DATAS.mat') ;

ou, si l'on veut sauvegarder que les variables x et y :

save('./Docs/DATAS_xy.mat','x','y') ;

Remarque

On remarquera que dans l'exemple précédent, le nom du fichier comprend aussi un chemin d'accès : les variables seront stockées dans un fichier nommé DATAS_xy.mat, dans le répertoire Docs (à supposer qu'il existe).

Exemple

Supposons que dans l'espace mémoire existent des variables nommées LEGENDS, RAIES et DATAS (et peut-être d'autres).

On peut sauvegarder ces variables dans un fichier, nommé SpectresRAMAN.mat, en écrivant :

%%
% Fabien Baillon et Jean-Louis Dirion - Nov.2014
%
% Exemple d'utilisation de la fonction save
%
% Création d'un fichier mat pour sauvegarder des variables MATLAB
% On suppose ici que la variable LEGENDS, ainsi que les tableaux RAIES et DATAS, existent !
disp('La fonction save permet l''écriture d''un fichier mat, contenant les variables LEGENDS, RAIES et DATAS') ;
save('SpectresRAMAN.mat','LEGENDS','RAIES','DATAS') ;

Créer un fichier CSV

DéfinitionFichier CSV

Un fichier CSV (Comma-separated values) est un format de fichier stockant des données tabulaires sous forme de valeurs séparées par des virgules. L'extension du fichier est généralement .csv.

Exemple de fichiers CSV

Ce format n'est pas spécifique à MATLAB, et il est surtout adapté aux données numériques.

Si l'on souhaite récupérer des données pour les traiter avec un logiciel externe, il est utile de savoir créer un fichier CSV : pour cela, on utilise la fonction csvwrite.

Syntaxe

La fonction csvwrite permet de sauvegarder un tableau de données sous forme d'un fichier CSV, selon la syntaxe :

csvwrite(nom_Fichier_csv, tableau_Donnees) ;

nom_Fichier_csv est une chaîne de caractères correspondant au nom du fichier csv que l'on souhaite créer, et tableau_Donnees est le tableau à sauvegarder.

Exemple

>> M = [3 6 9 12 15; 5 10 15 20 25; ...
  7 14 21 28 35; 11 22 33 44 55];
>> csvwrite('M_csv.dat',M) ;
>> type('M_csv.dat') ;
 
3,6,9,12,15
5,10,15,20,25
7,14,21,28,35
11,22,33,44,55
 

Dans cet exemple, on enregistre le tableau de données M dans un fichier nommé M_csv.dat.

La fonction type permet d'afficher le contenu de ce fichier.

Conseil

Le fichier csv peut porter n'importe quelle extension (voire aucune).

Souvent, on choisit comme extension csv, dat ou txt. Ce choix peut être guidé par l'usage que l'on souhaite en faire : pour des raisons pratiques, certains logiciels imposent l'extension du fichier.

Exemple

La fonction csvwrite n'enregistre qu'un seul tableau. Si l'on veut enregistrer plusieurs colonnes, ou des tableaux ayant des dimensions cohérentes, on peut construire un tableau global reprenant les valeurs des ces colonnes et tableaux :

%%
% Fabien Baillon et Jean-Louis Dirion - Nov.2014
%
% Exemple d'utilisation de la fonction csvwrite
%
% Création d'un fichier csv pour sauvegarder les données lues
% On suppose ici que les tableaux RAIES et DATAS existent !
disp('La fonction csvwrite permet l''écriture d''un fichier csv') ;
csvwrite('SpectresRAMAN.csv',[RAIES DATAS]) ;

Remarque

La fonction csvwrite sauvegarde "à plat" les données contenues dans les variables MATLAB : elle est donc bien adaptée pour un ré-emploi des données en dehors de MATLAB, mais pas très adaptée pour un stockage intermédiaire en vue d'une ré-utilisation ultérieure avec MATLAB.

Contrairement au format mat, ici, ce ne sont que les valeurs qui sont sauvegardées (et non les variables).

Attention

La fonction csvwrite tronque les données à cinq décimales !

Dans certains cas, cette limite de précision peut s'avérer rédhibitoire.

Créer un fichier texte, sans contraintes

Comme nous venons de le voir, le format csv est un format de fichier simple et courant, lisible comme tout fichier texte, mais il ne permet pas de stocker n'importe quelles données (seulement des valeurs numériques), et les valeurs sont stockées avec cinq décimales au plus.

Si l'on veut s'affranchir de ces contraintes, tout en conservant le côté pratique des fichiers texte, il faut créer son propre fichier.

Nous avons vu précédemment (Entrées et Sorties de variables), que la fonction sprintf permet de construire une chaîne de caractères en formatant l'affichage de variables. Il existe une fonction similaire, fprintf, pour écrire dans un fichier texte.

Syntaxe

La fonction fprintf permet d'écrire une chaîne de caractères formatée dans un fichier donné, selon la syntaxe :

pointeur_vers_fichier = fopen('Nom_du_fichier.txt','w') ;
fprintf(pointeur_vers_fichier, Chaine_de_Caracteres_avec_Plusieurs_Formats, variable_a_formater_1, ..., variable_a_formater_N) ;
fclose(pointeur_vers_fichier) ;

Exemple

La fonction fprintf sait écrire d'un coup l'ensemble de valeurs contenues dans une matrice (attention les données doivent être en ligne pour les formater en colonne...).

% création des données
x=linspace(0,pi,100);
y=cos(x).*sin(x);
Datas=[x;y];
%
% ouverture du fichier en écriture
fileID=fopen('MonFichier.txt','w');
%
% écriture de x et y selon le format choisi
fprintf(fileID,'x : %2.8f \t f(x) = %2.6f \n',Datas);
%
% fermeture du fichier
fclose(fileID);

Pour visualiser le résultat, vous pouvez utiliser la fonction type :

>> type('MonFichier.txt')
 
x : 0.00000000   f(x) = 0.000000
x : 0.03173326   f(x) = 0.031712
x : 0.06346652   f(x) = 0.063296
x : 0.09519978   f(x) = 0.094626
x : 0.12693304   f(x) = 0.125574
x : 0.15866630   f(x) = 0.156017
x : 0.19039955   f(x) = 0.185831
x : 0.22213281   f(x) = 0.214897
  ...
  ...
x : 3.04639288   f(x) = -0.094626
x : 3.07812614   f(x) = -0.063296
x : 3.10985939   f(x) = -0.031712
x : 3.14159265   f(x) = -0.000000
>>

Complément

Pour en savoir plus sur les possibilités de format, consultez l'aide de Matlab :

https://fr.mathworks.com/help/matlab/matlab_prog/formatting-strings.html