Découvrir Scilab/Gestion des fichiers
Un livre de Wikibooks.
7. Gestion de fichiers
Nous avons vu précédemment que l'on pouvait définir une fonction ou un programme dans un fichier texte, puis appeler ce fichier texte avec l'instruction exec, ce qui avait le même effet que taper la fonction ou le programme (voir Programmation).
Mais Scilab possède aussi d'autre possibilités de gestion de fichier.
Sections |
[modifier] Export et import de résultat
[modifier] Images
Scilab permet de sauvegarder des images sous plusieurs formats. Il faut au préalable donner un numéro à la fenêtre graphique, en indiquant scf(numéro) avant les instructions de tracé.
Les fonctions d'export sont de la forme
xs2format(numéro_de_fenêtre, nom_de_fichier)
où
numéro_de_fenêtreest le numéro indiqué parscf(), etnom_de_fichierest le nom du fichier image, qui doit contenir l'extension idoine (par exemple «.gif» pour un fichier GIF).
Les fonctions sont :
xs2bmp: format BMP (bitmap, Microsoft Windows);xs2emf: format EMF (enhanced metafile, Microsoft Windows) ;xs2eps: format EPS (encapsulated PostScript) ;xs2fig: format Xfig ;xs2gif: format GIF (Graphics Interchange Format) ;xs2ppm: format PPM (portable pixmap) ;xs2ps: format PS (PostScript).
[modifier] Sons
Lorsque la variable x est un vecteur, on peut le sauvegarder sous la forme d'un son, dans un fichier de type .WAV. Le son correspond à des varations de pression de l'air, ou des variations de la tension d'alimentation du haut-parleur, s de la forme
- s(ti ) = x(i )
avec
- ti = i/ƒ
ƒ étant la fréquence d'échantillonnage. Par défaut, ƒ vaut 22 050 hertz (une valeur de x correspond à 1/22 050 seconde).
La création du fichier se fait avec la fonction savewave
savewave('nom_de_fichier', x)
il faut bien s'assurer qu'il s'agit d'une matrice colonne. On peut aussi définir une autre fréquence d'échantillonnage entière :
savewave('nom_de_fichier', x, f)
Un fichier .WAV peut être mis dans une matrice avec la fonction loadwave :
x=loadwave('nom_de_fichier')
chaque ligne de la matrice correspondant alors à un canal. On peut ensuite jouer ce son dans Scilab avec l'instruction playsnd
playsnd(x)
Voir aussi Graphiques et sons.
[modifier] Format texte
Il est possible d'exporter le contenu d'une variable sous la forme d'une fichier texte (format ASCII). Ceci permet de réutiliser les valeurs dans une autre application.
Pour exporter le contenu de la variable x dans le fichier nom_de_fichier, il faut taper :
write('nom_de_fichier',x)
S'il s'agit d'une matrice de nombres, la ligne commence par trois espaces, les éléments d'une ligne sont séparés de huit espaces, et elle se termine par cinq espaces puis un changement de ligne.
S'il s'agit d'une matrice de caractères, il n'y a qu'une chaîne par ligne ; une ligne commence par un espace, et se termine par un changement de ligne.
Pour réimporter les valeurs, il faut utiliser la commande read en spécifiant les dimensions n1, n2 de la matrice à lire :
y = read('nom_de_fichier', n1, n2)
On peut aussi utiliser les fonctions « à la sauce » C. La fonction
fd = mopen('nom_de_fichier.dat','w')
ouvre le fichier nom_de_fichier (le crée s'il n'existe pas) en écriture ('w' pour write), lui attribue un numéro interne pour Scilab (référence) et met ce numéro dans la variable fd ;
mfprintf(fd, '%f %f %f\n', x)
imprime (print) le contenu de la variable x dans le fichier numéro fd, sous la forme de trois nombres à virgule (%f pour float) séparés par un espace suivi d'une nouvelle ligne (\n pour new line) ;
mclose(fd)
ferme le fichier n° fd.
Pour lire le contenu du fichier, on utilise
fd = mopen('nom_de_fichier','r')
qui ouvre le fichier nom_de_fichier en lecture ('r' pour read), lui attribue un numéro interne pour Scilab (référence) et met ce numéro dans la variable fd ;
y(1,1:3) = mfscanf(fd, '%f %f %f\n')
balaie (scan) le fichier numéro fd de manière séquentielle, et récupère les trois premières données et les met dans la première ligne d'une matrice de trois colonne appelée y ;
y(2,1:3) = mfscanf(fd, '%f %f %f\n')
continue l'opération de rapatriement et met les données dans la deuxième ligne de la matrice ;
mclose(fd)
ferme le fichier n° fd.
[modifier] Format binaire
Il est possible d'exporter le résultat d'un calcul dans un fichier, ce qui permet de le réutiliser pour une autre fois. Ceci se fait avec la commande save :
save('nom_de_fichier')
cela enregistre le contenu de toutes les variables dans le fichier dont le chemin d'acès et le nom sont dans la chaîne nom_de_fichier. Si l'on ne veut exporter qu'une seule variable x, il faut entrer
save('nom_de_fichier', x)
On peut exporter plusieurs variables x1, x2, ..., xn en tapant
save('nom_de_fichier', x1, x2, ..., xn)
Ce résultat peut ensuite être réimporté avec la commande load :
load('nom_de_fichier')
on peut sélectionner quelement quelques variables du fichier, par exemple :
load('nom_de_fichier', x1, x2)
Le fichier produit est un fichier binaire. Chaque variable est représentée par :
- le nom de la variable, sur 24 octets :
- chaque caractère correspond à un code : 10 à 35 pour les minuscules de « a » à « z », -35 à -10 pour les capitales de « Z » à « A » ; taper
str2code('chaine')pour avoir la suite de codes correspondant à la chaîne chaine ; - le nom se termine par le code 40 ;
- chaque caractère correspond à un code : 10 à 35 pour les minuscules de « a » à « z », -35 à -10 pour les capitales de « Z » à « A » ; taper
- un code représentant le type de la variable : de 1 pour une matrice de réels en virgule flottante, 2 pour un polynôme, 10 pour un chaîne de caractères… taper
type(X)pour avoir le code du type de la variable X ; - puis suit la description de la variable, notamment le nombre d'éléments pour les matrices, chaînes… cette description dépend du type de la variable ;
- enfin vient la valeur de la variable.
L'instruction listvarinfile('nom_de_fichier') permet d'avoir la liste des variable contenues dans un fichier et leur description.
[modifier] Voir aussi
- Dans Wikipédia
- Encapsulated PostScript
- Fichier binaire
- Graphics Interchange Format
- Portable pixmap (en anglais)
- PostScript
- WAVEform audio format
- Windows bitmap (BMP)
- Windows Metafile (pour EMF)
- Xfig
Environnement < ↑ > Index