Importer des valeurs numériques
Cédrick Aurélien K. a écrit :
bonjour,
j'ai lu votre document sur Matlab, et j'ai des difficultés.
Pour mes travaux de DEA, il m'est nécessaire d'ecrire des
programmes; ne maitrisant pas matlab j'ai écrit ces programmes en
language Pascal et je suis coincé au niveau du tracé des
courbes. Je ne sais pas comment tranférer les données dans
Matlab afin de tracer mes courbes.
votre question est un peut vague. Disons de manière assez
générale que si votre programme Pascal
génère un fichier de points (xi,yi) que vous souhaitez
voir afficher sous forme d'une courbe, il vous faut stocker les
abscisses dans un vecteur X, les ordonnées dans un vecteur Y puis
utiliser la commande
plot(X,Y)
Bien entendu si vous avez peu de valeurs, le plus simple est de
définir les vecteurs X et Y en faisant un copier/coller des
valeurs fournies par votre programme Pascal. On définit un
vecteur X de la manière suivante:
X = [x1, x2, x3, ..., x20];
où x1, x2,...,x20 désignent les valeurs fournies par
votre programme Pascal (noter la virgule de séparation; on peut
aussi mettre un blanc).
Même chose pour définir Y.
Par contre si vous avez plusieurs milliers de valeurs, cette
procédure est à éviter. Il faut alors stocker les
valeurs dans un fichier et les relire sous matlab en utilisant les
instructions de lecture d'un fichier externe.
Par exemple supposons que l'on ait le fichier donnees.txt
suivant:
10 #nb de valeurs
#suivent toutes les abscisses puis toutes les ordonnées
1
2
3
4
5
6
7
8
9
10
1.1
2.2
3.3
4.4
5.5
6.6
7.7
8.8
9.9
10.10
La lecture de ce fichier et l'affichage des points (1 ; 1.1) , (2 ;
2.2) , ... , (10 ; 10.10) contenu dans ce fichier est
réalisé de la manière suivante:
(sauvegarder ces instructions dans un M-file test.m)
nomfic = input(' Nom du fichier de resultats : ','s');
fid=fopen(nomfic,'r'); % ouverture du fichier
line=fgets(fid); % lecture de la premiere ligne
fgets(fid); % lecture de la deuxieme ligne (ligne de commentaires)
nbval=str2num(line(1:3)); % lecture du nombre de points
coord(1:nbval,1:2) = fscanf(fid,'%f',[nbval,2]); % on lit les valeurs et on les stocke
fclose(fid); % fermeture du fichier
plot(coord(1:nbval,1),coord(1:nbval,2),'o-'); % affichage
grid
On execute alors les instructions suivantes dans la fenêtre de
commande matlab
>> test
Nom du fichier de resultats : donnees.txt
>> coord
coord =
1.0000 1.1000
2.0000 2.2000
3.0000 3.3000
4.0000 4.4000
5.0000 5.5000
6.0000 6.6000
7.0000 7.7000
8.0000 8.8000
9.0000 9.9000
10.0000 10.1000
Et voici le graphique obtenu
(c)
Stéphane Balac - Centre de Mathématiques - INSA de Lyon.