Matlab - Gestion des fichiers : lecture et écriture
N.B. Ce qui suit a été testé avec les versions 4.2 et 6.5.
Fonctions :
1. Lecture d'un fichier binaire
On se propose de lire et d'afficher, dans Matlab, le contenu d'un fichier quelconque : test.txt
Avec le bloc-notes, cela donne :
4 lignes de commande suffisent :
>> [fid , message] = fopen('test.txt' , 'r')
fid =
3
message =
''
>> [A , count] = fread(fid)
A =
66
111
110
106
111
117
114
32
33
13
10
49
46
50
51
9
52
53
count =
18
>> status = fclose(fid)
status =
0
>> disp(setstr(A'))
Bonjour !
1.23 45
La fonction fopen ouvre le fichier test.txt en mode lecture ('r').
fid est l'identifiant du fichier (la valeur attribuée est ici 3).
En cas de problème, fid vaut -1 et message est par exemple :
Cannot open file. Existence? Permissions? Memory? . . .
La fonction fread lit les données binaires du fichier.
Les données binaires du fichier sont écrites dans la matrice A (vecteur colonne).
count est la taille du fichier : ici 18 octets.
C'est donc aussi la taille de la matrice A (18 x 1).
Il s'agit d'un fichier texte donc les données binaires correspondent au code ASCII.
La fonction fclose ferme le fichier.
En cas de problème, status vaut -1.
La fonction setstr convertit le code ASCII en caractère.
disp est la fonction d'affichage.
2. Création et écriture d'un fichier binaire
Nous allons créer un fichier binaire data.dat de 3 octets (1 octet contient un entier compris entre 0 et 255) :
>> [fid , message] = fopen('data.dat' , 'w')
fid =
3
message =
''
>> A = [ 65 49 125]
A =
65 49 125
>> count = fwrite(fid , A)
count =
3
>> status = fclose(fid)
status =
0
La fonction fopen crée et ouvre le fichier data.dat (mode écriture 'w').
fid est l'identifiant du fichier.
En cas de problème, fid vaut -1 et message est par exemple :
Sorry. No help in figuring out the problem . . . (cela arrive si le fichier existe déjà et qu'il est en lecture seule)
La fonction fwrite écrit des données binaires dans le fichier.
La fonction fclose ferme le fichier.
En cas de problème, status vaut -1.
3. Lecture d'un fichier texte
>> [fid , message] = fopen('data1.txt' , 'r')
fid =
3
message =
''
>> [A , count] = fscanf(fid , '%g')
count =
16
>> status = fclose(fid)
status =
0
La fonction fscanf lit les données formatées du fichier, et stocke ces données dans la matrice vecteur A (1 x 16).
%g désigne un format numérique (notation exponentielle ou à point fixe).
>> [fid , message] = fopen('data2.txt' , 'r')
fid =
3
message =
''
>> [A , count] = fscanf(fid , '%g %g %g' , [3 inf])
count =
48
>> status = fclose(fid)
status =
0
La fonction fscanf lit les données formatées du fichier, et stocke ces données dans la matrice A (3 x 16).
4. Création et écriture d'un fichier texte
Exemple : On se propose de compléter le tableau de données suivant, et d'enregistrer ces données dans un fichier texte :
x
|
sin(x)
|
exp(x)
|
0
|
||
10
|
||
...
|
Pour cela, 6 lignes de commande suffisent :
>> [fid , message] = fopen('data.txt' , 'w')
fid =
3
message =
''
>> x = 0:10:100
x =
0 10 20 30 40 50 60 70 80 90 100
>> y = [x ; sin(x) ; exp(x)]
>> fprintf(fid , 'x \t sin(x) \t exp(x) \r\n\r\n')
ans =
24
>> fprintf(fid , '%8.12g\t %8.12g\t %8.12g\r\n' , y)
ans =
484
>> status = fclose(fid)
status =
0
Avec l'éditeur Notepad++, cela donne (avec les caractères spéciaux) :
La fonction fopen crée et ouvre le fichier data.txt (mode écriture 'w').
fid est l'identifiant du fichier.
En cas de problème, fid vaut -1 et message est par exemple :
Sorry. No help in figuring out the problem . . . (cela arrive si le fichier existe déjà et qu'il est en lecture seule)
La fonction fprintf écrit des données formatées dans le fichier.
\t désigne le caractère spécial de tabulation.
\r\n désigne les caractères spéciaux de saut de ligne
%8.12g désigne un format numérique (notation exponentielle ou à point fixe) : 8 chiffres max. pour la partie entière et 12 chiffres max. pour la partie décimale.
La taille du fichier est 508 octets (24 + 484).
La fonction fclose ferme le fichier.
En cas de problème, status vaut -1.
Ouvrir Excel.
Fichier -> Ouvrir : Tous les fichiers (*.*)
Puis, dans l'assistant d'importation de texte :
- Séparateurs : choisir la tabulation
- Séparateur de décimale : choisir le point (.)
(C) Fabrice Sincère ; Révision 1.0.3