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.