Vous êtes sur la page 1sur 10
3. Fichiers, fonctions et structures des données Fichiers, fonctions et structures des données Utilisation de fichiers I existe trols types de fichiers sous Matlab Achier Mavec une extension .m(Eichier .m) utlsé pour les programmes et certaines fonctions de Matlab fichier MATavec une extension .mat utilisé pour sauvegarder le nom et les valeurs des variables eréées pendant une session de Matlab fichier DAT avec une extension .dat utilisé comme fichier de données, généralement au format ASCII (lisibles directement, pas en langage binaire) contenant le plus souvent une ou plusieurs lignes de texte (commentaires, date de création, utlisateur, etc.) et une ou plusieurs lignes de données arrangées en lignes et colonnes, chaque colonne tant séparée par des espaces ou des virgules, Fichiers d’entrée et de sortie Les fonctions de fichiers d'entrée et sortie de Matlab permestent de lire et d'écrire des fichiers binaires ou texte (ASCID. Elles ermettent ainsi de lire des données collectées dans d'autres formats et de sortir des fichlers de données dans d'autres programmes ou d'autres apparels. Enregistrement et exportation de données de Matlab Plusieurs méthodes sont possibles pour exporter des données de l'environnement de Matlab. Unlliser la commande de Matlab diary Sila quantité de données est faible, la commande diary permet de créer un fichler et affiche les variables en les inserivant dans ¢e fichier. Cette commande permet de stocker tout ce qul a été tapé pendant une session (y compris les erreurs...) et les réponses de Matlab au format ASCII. A chaque nouvelle session le fichier diary est réécrit et si V’on souhaite conserver son contenu d'une session & l'autre, il faut écrire: diary filename. Enregistrer des données au format ASCII: save La commande save permet d'enregistrer les variables de I'espace de travail, c'est-a-dire leurs noms, leurs rales, leurs valeurs, etc... dans un fichier binaire £ilename.mat. Pour sauvegarder seulement quelques variables de l'espace de travail, taper save filename varl var2. extension par défaut du fichier est -mat. Pour sauvegarder les données au format ASCII en simple précision (8 chiffres) ou double précision (16 chiffres) taper save filename -ascii; save filename ~double Importation et lecture de données dans Matlab Plusleurs méthodes sont possibles pour importer des données dans l'environnement de Matlab. La méthode sera choisie en fonction de la quantité de données et de leur format. Entrer des données comme une liste d'éléments Sila quantité de données a entrer est faible, il est facile de taper les données entre crochets. Pour des données plus importantes, cette méthode est rapidement fastidieuse et sujette & erreurs de frappe... Créer un fichier de données dans un fichier Matlab On erée un fichier Matlab pour entrer les données comme une liste d'éléments. Cette méthode est utile si les données re sont pas sous forme digitale et si elles doivent absolument étre entrées. 15 = Fichiers, fonctions et structures des données + Charger des données a partir d'un fichier ASCII: Load Un fichier de données ASCII stocke les données en tableau au format ASCII. Ainsi chaque ligne a le méme nombre de valeurs séparées par des espaces. Un fichier ASCII peut étre visualisé avec un éditeur de texte, et peut donc étre Iu directement dans Matlab load donnees.dat Fonctions Matlab d’entré fi © Ouvrir et fermer un fichier ‘Avant de lie ou d'écrire un fichler texte ou binaire, il faut 'ouvrir avec la commande fopen fidefopen(‘fichier.dat’, permission’) ; option permission spécifie le type d'accds requis : lecture seule (*x"} , écriture seule (+w") , lecture et écriture ore) La commande renvoie un identficateur (Ea), valeur qui sera utilisée pour manipuler le fichier. ‘Quand le fichier a été lu cu modifié, il faut le fermer avec la commande fc Lose associée & son identificateur statut=fclose (fid) ; Pour fermer tous les fichiers ouverts, utiliser la commande statut=fclose(‘all'); + Lecture de fichiers binaires La fonction fread lit tout ou partie d'un fichier binaire et le stocke dans une matrice fidefopen(*nickel.dat’,‘r'); Azfread(fid) ; Pour visualiser le fichier & "écran, il suffit utiliser la commande di sp (A) Exead accepte un second argument (optionnel) qui contréle le nombre des valeurs lues. Si celul-ci n'est pas spécifié, le fichier sera entiérement lu fread (fia, 100); lira les 100 premiéres valeurs du £id et les mettra dans le vecteur A read(fid, [10 10]; lira les mémes 100 premiéres valeurs du £id mais les disposera en matrice 10x10. fread accepte un troisiéme argument (optionnel) qui contréle le type des valeurs Iues. Cette option permet de a contr6ler le nombre de bits lus pour chaque valeur et linterprétation de ces bits comme caractére, entier ou réel. Ces options sont par exemple ‘char’ (caractéres), ‘short’, ‘long’ (entiers 16 et 32 bits), ‘float’, ‘double’ (réels 32 et 64 bits). fread (fid, 100,‘ float’) ; lira les 100 premiéres valeurs du fid comme des réels simple précision et les mettra dans le vecteur A Aefread(fid, [10 10],/£loat’); lira les mémes 100 premiéres valeurs du fid mais les disposera en matrice 10x10. + Ecriture de fichiers binaires La fonction Ewrite écrit les éléments c'une matrice dans un fichier au format numérique spécifié fwrite_id-fopen(*magic.bin’,‘w!); compte=fwrite (fwrite_id,magic (5) ,’int32‘); statutefclose (fwrite_id) ; Ici, write crée un fichier binaire contenant les 25 éléments d'un carré magique 5x5, chacun étant codé sous la forme d'un entier 32 bits (identique au format ‘long’} + Lecture d'un fichier formaté Les fonctions Eget et Egete permettent de lire des lignes d’un fichier texte et de les stoker dans des vecteurs du type string. La différence entre les deux est que fgets copie le retour chariot & la fin d'une ligne alors que figet 1 ne le fait pas. 16 3 Fichiers, fonctions et structures des données La fonction fscant lt les lignes d'un fichier texte et les assigne a une ou plusieurs variables, Les formats des données lues sont spécifiés 5 _litune chaine de caractéres d_—_litunentler en base 10 %g _litun réel double précision fidefopen(*lune.dat',’r'); donnees=fscanf (fid, '4g') ; statut=fclose(fid) ; fidefopen(‘nickel.dat’,’r‘); Asfecanf (fid, ‘t5d’, 100) ; Befecanf (fid,‘t5d’, (10 10]); statut=fclose(fid) ; [A sera un vecteur de 100 valeurs codées en valeurs entiéres sur 5 espaces, B sera une matrice 10x10 des mémes 100 valeurs. + Eeriture d'un fichier formaté La fonction Eprint£ convertit les données en chaines de caractéres et les affiche a 'écran ou les stocke dans un fichler. Les formats des données écrites sont spécifiés e novation exponenille £ notation décimale Sg choisit ia plus courte des notations précédentes x=0:0.1:1; y= Lxexp (x) 1; fid=fopen(‘table_exponentielle.dat!,‘w') ; fprintt (fid, ‘Fonétion exponentielle\n\n’); fprintf(fid,’%6.2£ 12.8£\n',y); statutefclose (fia) ; Entrées et sorties sous Matlab Entrées Il existe plusieurs facons d'entrer des données dans Matlab. Nous avons vu comment générer directement des données dans tn fichier Matlab, nous allons voir maintenant comment entrer des données par saisie de valeurs a 'écran, a partir d'un graphique ou a partir d'un fichier de données externe. 1 La fonction input permet de saisir du texte ou des données au clavier >> xeinput (‘Valeur du coefficient d’‘extinction ="); Valeur du coefficient d’extinction = ‘On notera que le texte est saisi entre cotes (* ‘) et que l'apostrophe peut &tre visualisée si elle est entrée par “". ‘A.écran, on aura affichage La fonction input affiche le texte comme un prompt et attend une entrée au clavier. II suffit alors d'entrer une valeur et de valider par la touche return. 2. La fonction ginput. permet de saisir des données sur un graphe, les coordonnées d'un point par exemple. 3. La fonction Load permet d'appeler des données (uniquement des valeurs numériques sous forme de matrices mn) stockées dans un fichier sur le disque (en général au format .dat (ASCII) ou «mat (binaire)). Sorties : formats et contrdles d’affichage Quand les éléments d'une matrice sont affichés, les entiers sont affichés comme des entiers, les nombres réels sont affichés par défaut avec 4 chiffres significatifs aprés la virgule. Il est possible sous Matlab d'afficher jusqu’a 15 chiffres significatif. 7 i Fichiers, fonctions et structures des données Pour des valeurs trés grandes ou tras petites, la notation décimale est lourde, la notation scientifique Ax10* est préférable. Sous Matlab, cette notation s'écrit : Ae-+x. On notera qu'llne faut pas d'espace entre A et €+x, sinon Matlab les interprétera comme deux chiffres différents. On retrouve des formats prédéfinis dans Matlab format short affiche 4 chiffres significatifs : 13.6745 format long affiche 15 chiffres significatifs : 17.274840294663574 format short e affiche 4 chiffres significatfs plus exposant : 6.3792e+03 format long e affiche 15 chiffres significatifs plus exposant - 6 .379243784781294e+03 format bank ‘deux chiffres signifcatifs 178.23 format rat approximation rationnelle = 43/7 format compact affiche les éléments de la matric de facon a perdre le moins de place possible format loose réaffiche les éléments de la matrice en mode moins compact lest également possible de spécifier le type des données. Les différents formats de données sont ef rotation décimal fe notation scientifique (e+03 est équivalent & 10") tg rotation décimale ou scientifique ‘On peut enfin préciser le nombte de chiffres significatifs souaités. Ainsi, sur P espaces, on aura Q chiffres aprés la virgule =P. Qf (notation décimale), SP. Qe (notation scientifique). UN existe des codes de contrdle de I'affichage \n retour ala ligne \x début d'une nouvelle ligne \b retour-arrigre \e tabulation Sorties : fonctions d’affichage ‘on a wu précédemment que absence de point-virgule ala fin d'une instruction permet I'affichage a l'écran de son résultat. Pour un affichage plus clair ou pour afficher du texte sans résultat numérique, on utilise la fonction disp : >> disp (A) affiche le contenu de la matrice A (identique &: >> A) >> disp(‘texte’) —affiche texte La fonction Eprinté est plus flexible et permet de formaterl'afichage (uniquement les valeurs numériques) >> x01007.467y=2.1278;k=17; S> fprinté(*\nx=$8.2£ y=48.6f \nket2.0f\n",x,¥,K) ; x= 1000.46 y= 2.127800 kei? Contréle des entrées-sorties dans Matlab Matiab posséde dans son environnement un certain nombre de fonctions permettant de contrdler les entrées et les sorties, soit dans un fichier source (M-fle) soit pendant son exécution (fenétre de commands permet de continuer instruction sur une nouvelle ligne e Indique un commentaire ou un format \n indique un retour a a ligne suivante “ce (touches ctrl et C) permet de sortir de l'exécution du programme (dans une boucle infinie par exemple) ans variable par défaut pour stocker les résultats casesen —_désactive (casesen of) (réactive, casesen on )|a distinction majuscule/minuscule cle remet a zéro les commandes d'écran clear remet a zéro l'espace de travail (variables, affichages) clg remet a zéro les fenétres graphiques close ferme les fendtres graphiques echo affiche a Iécran le fichier source -m exist (‘name’) détermine si une variable ou un fichier name existe exit termine la session Matlab help invoque aide sur une fonction (succinct, ex: help disp) length —_affiche la longueur d'un vecteur 18 nargin nargout pause quit type what who whos 3 Fichiers, fonctions et structures des données determine les arguments d'entrée dans une fonction détermine les arguments de sortie dans une fonction arréte 'exécution du programme temporairement (désactivé par une saisie clavier) termine la session Matlab affiche Ia tale d'une variable (nombres de lignes et de colonnes) affiche le contenu d'un fichler source .m affiche la liste des fichiers .m sur un disque affiche la liste des variables en mémoire affiche la liste des variables en mémoire et leur taille Fonctions mathématiques élémentaires de Matlab Les expressions arithmétiques nécessitent Ie plus souvent d'autres opérations que l'addition, la soustraction, la division et la ‘multiplication. On trouve ainsi souvent des logarithmes, des exponentielles ou des fonctions trigonométriques. La liste sulvante donne les fonctions préprogrammées de Matlab. I! vous appartient de consulter l'aide en ligne pour connaitre plus précisément la syntaxe et le type des arguments et résultats abs (x) acos (x) acosh (x) acoth (x) asin (x) asinh (x) atan (x) atan2 (x) atanh (x) ceil (x) cos (x) cosh (x) exp (x) Eix (x) floor (x) Log (x) 10g10 (x) round (x) sign (x) sin (x) sinh (x) sqrt (x) tan (x) tanh (x) retourne la valeur absolue (magnitude) d'une variable x ;[x{ retourne V'arc cosinus d'une variable x ; cos-!x ‘etourne le cosinus hyperbolique inverse d'une variable x ; cosh” x retourne la cotangente hyperbolique inverse d'une variable x ; oth! retourne Ware sinus d'une variable x; sin-lx retourne le sinus hyperbolique inverse d'une variable x ; sinh" x=In(x+Vx" +1) -@ecelldisp (A) 27 17 7 At. 1)= Deauville aA(a2)= 32 juin 1997 aA(2,1)= 25 18 19 a9 La fonction cel 1p1ot produit 16 un affichage graphique des contenus de la cellule poBe{ {2 4] [6 -9 73.5] 417 721 10} + >>celiplot (B) 6-9 a sas) 7 | 10 2 Quelques fonctions utiles avec les cellules cxcell (n) Cacell (n,m) celldisp(c) celiplot (c) Cenum2cel1 (A) (y/¥,---]=deal(a,B,.. [ye¥, ---]edeal (a) iscell (A) Structures crée une cellule nxn C de matrices vides crée une cellule nem C de matrices vides affiche le contenu de la cellule C renvoie une représentation graphique de la cellule C Convertit une matrice numérique A en une cellule C ) fait coincider les lstes d’entrée/sortie fait coincider les listes d'entrée/sortie renvoie 1 si C est une cellule sinon 0 La structure est une classe d'ensembles qui permet de stocker ensemble des données différentes. Les éléments de la structure sont appelés par fe nom du champ auquel ils appartiennent. On veut créer par exemple une base de données d'étudiants regroupant leur nom, leur numéro de sécurité sociale, leur adresse e-mail et leurs dernigres notes. Pour créer deux structures étudiant pour Jean Dupont et Marie Dubois, on écrira alors Etudiant (1) .nom=’Jean Dupont’ Etudiant (1) -NSS=’ 1670177284256" Etudiant (1) email ‘Jean .Dupont@espci. fr’ Etudiant (1) notes=[12 06 15] Etudiant (2) ‘nom=’Marie Dubois’ Etudiant (2) .NSS=’ 269100724266" Etudiant (2) .email='Marie.Dubois@espei.fr’ Btudiant (2) notes=[15 14 16) (On a ainsi crée un ensemble 1x2 >>size(Etudiant) ‘contenant deux structures ax2 struct array with fields 12 >>length (Etudiant) 2 >>Etudiant Etudiant= nom Nss email notes >>fieldnames (Etudiant) 3 Fichiers, fonctions et structures des données ans= Hon! wwss’ Semail’ ‘notes’ Quelques fonctions utiles avec les structures names=fieldnames (5) Faget field(s, ' field’) isfield(s, field’) isstruct (C) Sermfield(S, ‘ field’) S=setfield(S, ‘field’, Vv) Sestruct (*£1', "vi", "£2", renyoie les noms de champs associés a la structure S comme names une cellule de chaines de caractéres renvole le contenu du champ £ie1d de la structure S. Equivalent a F=S. field renvole | si field est le nom d'un champ de la structure S, sinon 0 renvole 2 si § est une structure sinon 0 retire le champ field dela structure S @tablit |e contenu du champ field dla valeur V dans la structure S| v2", ...) erée une structure & avec les champs £1, £2,... ayant les valeurs V1, V2, s+ 23

Vous aimerez peut-être aussi