Sauvegarder des variables

[29 avril 2004] Jim G. a écrit:  
Bonjour
je suis un de vos ancien étudiants de brest. je suis tombé sur votre site par hasard.

Etant actuellement dans une boite de géophysique a paris, je programme en matlab.
j'ai juste une question matlab a vous poser:

je souhaite enregistrer une matrice dans un fichier dont le nom est une variable
nom='texte1.dat'
save nom matrice -...
le probleme c'est qu'il créé un fichier nom et pas texte1.dat !!!!
esque vous ete deja tombé sur ce probleme?
merci

 
Pour sauvegarder une ou plusieurs variables dans un fichier il existe la commande save.
Sa syntaxe est :
save <le_nom_du_fichier.son_extension> <la liste des variables séparées par des espaces>
Par défaut l'extension du fichier est .mat

Exemple :
>> A=eyes(5);
>> B=2*ones(2,1)
>> save toto A B

La commande save possède une seconde forme qui est :
save('<le_nom_du_fichier.son_extension>','<variable 1>','<variable 2>', ... ,'<variable n>')
Sous cette forme il est possible d'utiliser une variable pour définir le nom du fichier :
var_nom_fichier = '<le_nom_du_fichier.son_extension>'
save(var_nom_fichier,'<variable 1>','<variable 2>', ... ,'<variable n>')

Exemple :
>> A=eyes(5);
>> B=2*ones(2,1)
>> nomfic = 'toto.mat'
>> save(nomfic,'A','B')

Par défaut, les variables sont sauvegardées dans un fichier binaire dont la seule exploitation possible est la restauration de ces variables en mémoire dans une future session de matlab (en utilisant la commande : load <le_nom_du_fichier.son_extension>).
Ce fichier n'est donc pas lisible avec un éditeur.

Il est possible de faire une sauvegarde de variables au format ASCII (ie: caractères et chiffres), ce qui permet par exemple de lire les données du fichier avec un éditeur quelconque. Il suffit d'ajouter une option à la  commande save de la manière suivante : save <le_nom_du_fichier.son_extension> <la liste des variables séparées par des virgules> -ascii
Attention, contrairement au cas précédent, il n'est plus possible de restaurer ces variables en mémoire dans une session future de matlab.

Exemple :

>> A=eyes(5);
>> B=2*ones(2,1)
>> save toto.data A B -ascii

Le fichier toto.data a alors la forme suivante

   1.0000000e+00   0.0000000e+00   0.0000000e+00   0.0000000e+00   0.0000000e+00
   0.0000000e+00   1.0000000e+00   0.0000000e+00   0.0000000e+00   0.0000000e+00
   0.0000000e+00   0.0000000e+00   1.0000000e+00   0.0000000e+00   0.0000000e+00
   0.0000000e+00   0.0000000e+00   0.0000000e+00   1.0000000e+00   0.0000000e+00
   0.0000000e+00   0.0000000e+00   0.0000000e+00   0.0000000e+00   1.0000000e+00
   2.0000000e+00
   2.0000000e+00

On peut remarquer sur cet exemple que l'on ne maîtrise absolument pas la façon dont son présentées les variables sauvegardées. On pourrait vouloir écrire le nom de la variable, séparer les variables par des lignes blanches, etc.. Ceci est possible en utilisant la commande fprintf, mais c'est plus compliqué à mettre en oeuvre!


 

(c) Stéphane Balac - Centre de Mathématiques - INSA de Lyon.