initiation à l’outil matlab - perso-sdt.univ-brest.fr · - 2 - page démarrer matlab 1 manipuler...

25
- 1 - Université de Bretagne Occidentale Initiation à l’outil MATLAB Chantal TISSEAU - Brest - Novembre 2000 UBO – Licence Sciences de la Terre et de l’Univers Initiation à l’outil Matlab – C. Tisseau

Upload: dinhthuy

Post on 04-Oct-2018

224 views

Category:

Documents


0 download

TRANSCRIPT

- 1 -

Université de Bretagne Occidentale

Initiation à l’outil

MATLAB

Chantal TISSEAU

- Brest - Novembre 2000

UBO – Licence Sciences de la Terre et de l’Univers Initiation à l’outil Matlab – C. Tisseau

- 2 -

Page Démarrer MATLAB 1

Manipuler des matrices 1 Un exemple : la matrice de Dürer 2 Les indices d’une matrice 4 L’opérateur : 6 Expressions mathématiques 8

Les variables 8 Les nombres 9 Les opérateurs 10 Les fonctions 10 La fenêtre de commandes 12 La commande format 12 Supprimer l’affichage 13 Les commandes trop longues 13

L’éditeur de lignes de commandes 14 Travailler avec des matrices 15 Des fonctions pour générer des matrices de base 15 Concaténation de matrices 15 Enlever des lignes et des colonnes 16 Créer une matrice à partir d’un fichier texte 17 Créer une matrice à partir d’un fichier M-files 18 The workspace 18

Enregistrer les commandes 19 Enregistrer le contenu du workspace 19 Enregistrer des variables 19 Enregistrer une session : la commande diary 19 Les graphiques 20 Créer un graphique : la fonction plot 20 La fenêtre graphique 21 Montage de graphiques dans une même fenêtre 21

Présentation des axes, labels, titre, style de ligne… 22

Tracer une fonction à 2 variables f(x, y) 23 Commande demo 23

UBO – Licence Sciences de la Terre et de l’Univers Initiation à l’outil Matlab – C. Tisseau

- 1 -

Démarrer MATLAB

la fenêtre de commandes s’ouvre (Command Window) Dans cette fenêtre : prompt >> On y tape des commandes Touche ENTREE -> lance la commande Répond par ans = (answer)

Manipuler des matrices

Un scalaire est une matrice 1 x 1 Un vecteur est une matrice à une ligne 1 x j ou à une colonne i x 1 Un fichier contenant 3 colonnes et 100 lignes

sera lu comme une matrice 100 x 3

Penser à tout sous forme de matrices Rentrer une matrice : La rentrer comme une liste d’éléments La lire dans un fichier de données La calculer à partir de fonctions La créer à partir de ses propres fonctions (fichier M-file)

UBO – Licence Sciences de la Terre et de l’Univers Initiation à l’outil Matlab – C. Tisseau

- 2 -

Un exemple : La matrice de Dürer (carré magique)

Albrecht Dürer, peintre et

mathématicien de la Renaissance Rentrer une matrice comme une liste d’éléments : séparer les éléments d’une ligne par un blanc ou une virgule ; à la fin de chaque ligne la liste entière entre [ ] taper A = [ 16 3 2 13 ; 5 10 11 8 ; 9 6 7 12 ; 4 15 14 1 ] Matlab répond A = 16 3 2 13 5 10 11 8 9 6 7 12 4 15 14 1

la matrice est en mémoire connue sous le nom A

Fonction somme : >> sum( A ) somme les colonnes de A un vecteur ans = 34 34 34 34 la somme magique

UBO – Licence Sciences de la Terre et de l’Univers Initiation à l’outil Matlab – C. Tisseau

- 3 -

Et pour sommer les lignes ?

Matlab a une préférence pour travailler en colonnes Matrice transposée A’ des colonnes aux lignes ou inversement >> A’ ans = 16 5 9 14 3 10 6 15 2 11 7 14 13 8 12 1 somme des colonnes -> vecteur ligne >> sum( A’ ) transposée -> vecteur colonne >> sum( A’ ) ’ ans = 34 34 34 34 Diagonale (principale) : >> diag( A ) ans = 16 10 7 1 >> sum( diag( A ) ) ans = 34

UBO – Licence Sciences de la Terre et de l’Univers Initiation à l’outil Matlab – C. Tisseau

- 4 -

L’autre diagonale (anti-diagonale) : >> fliplr( A ) to flip retourner lr (left to right) gauche à droite ans = 13 2 3 16 8 11 10 5 12 7 6 9 1 14 15 4 >> sum( diag( fliplr( A ) ) ) ans =

34 et toujours la somme magique Les indices d’une matrice : Rang i l’élément A( i , j ) Colonne j >> A( 4 , 2 ) ans = 15 somme des éléments de la 4ème colonne >> A( 1 , 4 ) + A( 2 , 4 ) + A( 3 , 4 ) + A( 4 , 4 )

UBO – Licence Sciences de la Terre et de l’Univers Initiation à l’outil Matlab – C. Tisseau

- 5 -

On peut aussi travailler avec un seul indice A( k ) pour référencer un vecteur dans Matlab : aussi une matrice à 2D comme une grande colonne formée par les différentes colonnes à la suite les unes des autres >> A( 8 ) ans = 15 valeur contenue dans A( 4 , 2 ) Si on utilise la valeur d’un élément hors de la matrice : t = A( 4 , 5 ) attention erreur

Index exceeds matrix dimensions Inversement, on peut mettre en mémoire une valeur hors de la matrice

on augmente alors d’autant la taille de la matrice X = A X( 4 , 5 ) = 17 X = 16 3 2 13 0 X est une matrice 5 10 11 8 0 de dimensions 4 x 5 9 6 7 12 0 4 15 14 1 17

UBO – Licence Sciences de la Terre et de l’Univers Initiation à l’outil Matlab – C. Tisseau

- 6 -

L’opérateur :

un des opérateurs les plus importants dans Matlab >> 1 : 10 vecteur ligne ans = 1 2 3 4 5 6 7 8 9 10 spécifier un incrément >> 100 : -7 : 50 ans = 100 93 86 79 72 65 58 51 >> 0 : pi/4 : pi ans = 0 0.7854 1.5708 2.3562 3.1416 A( 1 : k , j ) les k premiers éléments de la colonne j de A sum( A( 1 : 4 , 4 ) ) somme de la 4ème colonne de A encore mieux : fait référence à tous les éléments d’une ligne ou d’une colonne le mot clé end fait référence à la dernière ligne ou colonne >> sum( A( : , end ) ) somme des éléments ans = de la dernière colonne de A 34

UBO – Licence Sciences de la Terre et de l’Univers Initiation à l’outil Matlab – C. Tisseau

- 7 -

Pourquoi la somme magique d’un carré 4 x 4 est-elle égale à 34 ? Si les entiers de 1 à 16 sont répartis en 4 groupes de sommes égales, cette somme doit être >> sum( 1 : 16 ) / 4 ans =

34 Dans Matlab la fonction magic :

crée un carré magique de dimension donnée >> B = magic( 4 ) B = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 Cette matrice est presque la même que celle de Dürer

et a toutes les propriétés magiques La seule différence : les 2 colonnes du milieu ont été échangées Pour remettre ces 2 colonnes dans le bon ordre : >> A = B( : , [ 1 3 2 4 ] ) pour toutes les lignes de la matrice B réorganiser les éléments dans l’ordre 1 3 2 4 A = 16 3 2 13 5 10 11 8 9 6 7 12 4 15 14 1

Pourquoi Dürer n’a-t-il pas utilisé l’ordre de Matlab ? UBO – Licence Sciences de la Terre et de l’Univers

Initiation à l’outil Matlab – C. Tisseau

- 8 -

Expressions mathématiques : la plupart des langages utilise des expressions mathématiques Matlab les écrit avec des matrices Ces expressions mathématiques sont écrites à partir de : Variables Nombres Opérateurs Fonctions Les variables : Pas besoin de déclaration de type de variables dimensionnement des variables Quand Matlab rencontre un nouveau nom de variable crée automatiquement la variable alloue la mémoire correspondante Si cette variable existe déjà (a déjà été utilisée) Matlab change son contenu et éventuellement alloue la nouvelle mémoire nécessaire Exemples : >> nb_etudiants = 14 crée une matrice 1 x 1 appelée nb_etudiants stocke la valeur 14 dans son unique élément >> X = A où A est la matrice 4 x 4 de Dürer >> X( 4 , 5 ) = 17

change à la fois le contenu et les dimensions de la matrice X X est maintenant une matrice 4 x 5

UBO – Licence Sciences de la Terre et de l’Univers Initiation à l’outil Matlab – C. Tisseau

- 9 -

Le nom d’une variable : commence par une lettre 31 caractères au maximum (lettres, chiffres, underscores) distingue les minuscules des majuscules A et a sont deux variables différentes Pour voir la matrice correspondant à n’importe quelle variable : taper simplement le nom de cette variable

>> nb_etudiants ans= 14

Les nombres : S’écrivent avec la notation décimale conventionnelle Le point décimal n’est pas obligatoire

(n’oblige pas la distinction réel/entier) Notation scientifique e pour les puissances de 10 Nombres imaginaires i ou j en suffixe Exemples : 3 -99 0.001 8.6379 1.6e-2 6.02252e23 1i -3.14j 3e5i Un nombre est stocké (en mémoire) avec 16 chiffres significatifs avec le format long (format standard IEEE des réels) peut avoir des valeurs comprises entre à peu près

10-308 et 10+308

UBO – Licence Sciences de la Terre et de l’Univers Initiation à l’outil Matlab – C. Tisseau

- 10 -

Les opérateurs : Addition +

soustraction -

multiplication * division / puissance ^

complexe conjugué, transposée ‘

Les fonctions : Matlab connaît toutes les fonctions mathématiques standards Utilise les noms anglais Attention : on ne raisonne pas uniquement avec des réels La racine carrée, ou le logarithme d’un nombre négatif, ne donne pas d’erreur est égale au nombre complexe correspondant >> sqrt( -1 ) ans = 0 + 1.0000i Matlab connaît bien d’autres fonctions (Bessel, gamma, erf,…) La plupart de ces fonctions admettent des arguments complexes

UBO – Licence Sciences de la Terre et de l’Univers Initiation à l’outil Matlab – C. Tisseau

- 11 -

Il existe des fonctions spéciales (des constantes) : pi 3.14159265… i (ou j) imaginaire eps précision relative d’un réel 2-52

realmin le plus petit nombre réel realmax le plus grand nombre réel

Inf l’infini (division par 0, ou « overflow ») NaN Not-a-number (0/0, ou Inf – Inf ) Les noms des fonctions ne sont pas réservées : On peut imposer >> eps = 1.e-6 Et ensuite l’utiliser dans tous les calculs qui suivent La fonction originelle est restaurée en faisant >> clear eps Certaines fonctions sont dans le noyau de Matlab (ex : sin, sqrt ) : permet d’être très efficace au niveau temps de calcul les détails du calcul de ces fonctions ne sont pas accessibles D’autres fonctions (ex : gamma, sinh) sont dans des fichiers M-files : on peut lire le code et éventuellement le modifier L’aide en ligne : >> help elfun

donne la liste des fonctions mathématiques élémentaires >> help specfun

donne la liste des fonctions mathématiques avancées >> help elmat

donne la liste des fonctions avancées matricielles UBO – Licence Sciences de la Terre et de l’Univers

Initiation à l’outil Matlab – C. Tisseau

- 12 -

La fenêtre de commandes :

Quelques façons de modifier l’affichage dans cette fenêtre La commande format Contrôle le format d’affichage à l’écran des valeurs numériques Ne touche pas à la façon dont

elles sont calculées ou stockées en mémoire >> format short format par défaut 5 chiffres significatifs >> format short e format scientifique avec 5 chiffres significatifs >> format short g short ou short e suivant la valeur >> format long 16 chiffres significatifs >> format long e format scientifique avec 16 chiffres significatifs >> format long g long ou long e suivant la valeur >> format bank 2 chiffres décimaux >> format rat en fractions Si le plus grand élément d’une matrice > 103

ou si le plus petit élément < 10-3

Matlab applique un facteur d’échelle pour les formats short et long >> format compact

supprime les lignes blanches dans les sorties

UBO – Licence Sciences de la Terre et de l’Univers Initiation à l’outil Matlab – C. Tisseau

- 13 -

Supprimer la sortie : Terminer la ligne de commandes par ; Matlab fait le calcul N’affiche pas le résultat >> A = magic( 100 ) ; Les commandes trop longues : Les 3 petits points … avant de taper Entrée indiquent que la commande continue sur la ligne suivante Les blancs autour de = + - sont optionnels mais augmentent la lisibilité

UBO – Licence Sciences de la Terre et de l’Univers Initiation à l’outil Matlab – C. Tisseau

- 14 -

L’éditeur de lignes de commandes : Ctrl p rappelle la dernière commande Ctrl n rappelle la ligne suivante Ctrl b recule d’un caractère

Ctrl f avance d’un caractère Ctrl Ctrl r avance d’un mot Ctrl Ctrl l recule d’un mot Home Ctrl a va au début de la ligne End Ctrl e va à la fin de la ligne Esc Ctrl u efface la ligne Del Ctrl d efface le caractère Backspace Ctrl h efface le caractère avant le curseur Ctrl k efface la fin de la ligne

UBO – Licence Sciences de la Terre et de l’Univers Initiation à l’outil Matlab – C. Tisseau

- 15 -

Travailler avec des matrices ou … d’autres façons de créer des matrices

Des fonctions pour générer des matrices de base zeros >> Z = zeros( 2 , 4 ) Z = 0 0 0 0 0 0 0 0 ones >> F = 5 * ones( 3 , 3 ) F = 5 5 5 5 5 5 5 5 5 rand génère au hasard des éléments randn ceux-ci sont normalisés Concaténation de matrices >> B = [ A A + 32 ; A + 48 A + 16 ] >> sum( B ) ans = 260 260 260 260 260 260 260 260 >> sum( B’ )’ B n’est pas tout à fait un carré magique

UBO – Licence Sciences de la Terre et de l’Univers Initiation à l’outil Matlab – C. Tisseau

- 16 -

Enlever des lignes et des colonnes >> X = A ; >> X( : , 2 ) = [ ] enlève la colonne 2 Attention : >> X( 1 , 2 ) = [ ] Erreur ! !

Seulement les lignes ou les colonnes entières Avec un seul indice : >> X( 2 : 2 : 10 ) = [ ] X = 16 9 2 7 13 12 1

met les éléments restants dans un vecteur ligne Avant de travailler sur des fichiers : Changer la Directory (dossier) par défaut en donnant

le chemin (path) du dossier contenant les fichiers dans la hiérarchie du système de fichiers

Dans le menu File Set Path …

puis cliquer sur Browse et sélectionner le bon dossier

UBO – Licence Sciences de la Terre et de l’Univers Initiation à l’outil Matlab – C. Tisseau

- 17 -

Créer une matrice à partir d’un fichier texte : Dans un fichier texte ligne par ligne éléments séparés par des blancs même nombre d ‘éléments par ligne enregistré sous le nom magik.txt (suffixe .txt ) Pour créer ce fichier : Ouvrir l’éditeur de texte PC (et un fichier Editeur ) Dans le menu File ou icône dans la barre d’outils New L’enregistrer sous le format Tous les fichiers *.* avec le nom magik.txt Avec Excel l’enregistrer en format texte ( *.txt ) Avec Word l’enregistrer en format texte seulement

ou texte seulement avec sauts de ligne (met lui-même le suffixe .txt ) Pour lire ce fichier dans Matlab : >> load magik1.txt lit le fichier

et crée la variable magik1 Créer 3 fichiers texte et les lire sous Matlab : L’un sous Word avec le contenu d’une matrice 3 x 5 appelé matrice3x5.txt L’un sous Excel avec le contenu d’une matrice 4 x 3 appelé matrice4x3.txt L’un sous l’éditeur PC (en ligne sous Matlab) avec le contenu d’une matrice 5 x 6 appelé matrice5x6.txt

UBO – Licence Sciences de la Terre et de l’Univers Initiation à l’outil Matlab – C. Tisseau

- 18 -

Créer une matrice à partir d’un fichier M-files (ou Matlab files)

Les M-files sont des fichiers texte contenant du code Matlab Créer un fichier contenant : A = [ … 16.0 3.0 2.0 13.0 5.0 10.0 11.0 8.0 9.0 6.0 7.0 12.0 4.0 15.0 14.0 1.0 ] ; L’enregistrer sous le nom magik2.m >> magik2 lit le fichier magik2.m et crée la variable A The workspace :

C’est l’espace mémoire accessible par la session Matlab Pour connaître le contenu de cet espace : >> who

donne la liste des variables contenues dans le Workspace >> whos donne également la taille et la place mémoire utilisée Pour effacer la variable A du Workspace >> clear A Pour effacer toutes les variables du Workspace >> clear

UBO – Licence Sciences de la Terre et de l’Univers Initiation à l’outil Matlab – C. Tisseau

- 19 -

Enregistrer les commandes : >> save mercredi27oct enregistre tout le contenu du Workspace

dans le fichier mercredi27oct.mat Ce fichier est enregistré dans un format binaire

lisible très rapidement et efficacement par Matlab On peut imposer un autre format (ajouter une option -ascii ) Pour enregistrer seulement certaines variables : >> save mercredi var1 var2 enregistre les 2 variables var1 var2 dans le fichier mercredi.mat Pour lire ces fichiers MAT-files >> clear >> load mercredi.mat var1 var2 sont alors connues >> load mercredi27oct.mat toutes les variables contenues dans ce fichier

sont alors connues La commande diary >> diary

Enregistre toute la session Matlab, commandes et résultats, dans le fichier diary (dans le dossier par défaut Set Path …)

>> diary off arrête l’enregistrement >> diary nom_fichier enregistre dans nom_fichier Les fichiers diary ou nom_fichier sont lisibles sous n’importe quel traitement de texte (Word par exemple)

UBO – Licence Sciences de la Terre et de l’Univers Initiation à l’outil Matlab – C. Tisseau

- 20 -

Les graphiques Créer un graphique : Fonction plot prend différentes formes suivant ses arguments Si y est un vecteur plot( y ) est le graphe linéaire des éléments de y >> y = [ 2 8 12 4 10 10 ] ; >> plot( y ) une fenêtre graphique s’ouvre Figure No. 1 Si x et y sont 2 vecteurs >> x = [ 2 6 7 10 11 12 ] ; >> plot( x , y ) trace le graphe de y( x ) >> t = 0 : pi/100 : 2*pi ; >> y = sin( t ) >> plot( t , y ) trace le graphe de y = sin(t) pour t de 0 à 2*pi pour tracer plusieurs courbes plusieurs paires de vecteurs >> y2 = sin( t - .25 ) ; >> y3 = sin( t - .5 ) ; >> plot( t , y , t , y2 , t , y3 ) trace les 3 courbes On peut spécifier la couleur, le type de ligne, les symboles >> plot( x , y , ‘color_style_marker’ ) >> plot( x , y , ‘y:+‘ ) yellow dotted line plus + >> plot( x , y , ‘r-‘ ) red solid >> plot( x , y , ‘b- -*’ ) blue dashed plus *

UBO – Licence Sciences de la Terre et de l’Univers Initiation à l’outil Matlab – C. Tisseau

- 21 -

La fenêtre graphique : Toute fonction graphique

ouvre automatiquement une fenêtre graphique Figure No. 1 s’il n’y en a pas encore à l’écran

La fenêtre graphique par défaut est toujours utilisée Pour en ouvrir une nouvelle

(qui deviendra alors la fenêtre utilisée par défaut) >> figure Si plusieurs fenêtres existent : >> figure( n ) la fenêtre No. n devient la fenêtre « active » Pour ajouter des graphiques à un graphique existant : >> hold on Matlab n’efface pas le graphique précédent et ajoute les suivants dans la même fenêtre

en gérant les échelles si nécessaire >> hold off Montage de graphiques dans une même fenêtre : >> subplot( m, n, p )

construit et trace le p ième graphique du montage considéré comme une matrice m x n

C’est alors ce p ième graphique qui est « actif » et sur lequel agissent tous les outils graphiques (Menu Tools) Pour « activer » un graphique particulier : Cliquer dans le graphique

(-> faire apparaître les carrés noirs montrant la sélection)

UBO – Licence Sciences de la Terre et de l’Univers Initiation à l’outil Matlab – C. Tisseau

- 22 -

>> t = 0 : pi/10 : 2*pi ; >> y1 = cos(t) ; >> subplot( 2, 2, 1 ) >> plot( t , y1 ) en 1ère position, sur la 1ère ligne >> y2 = sin(t) ; >> subplot( 2, 2, 2 ) >> plot(t , y2 ) en 2ème position, sur la 1ère ligne >> y3 = cos(t - 1) ; >> subplot( 2, 2, 3 ) >> plot( t , y3 ) en 3ème position, sur la 2ème ligne >> y4 = sin(t - 1) ; >> subplot( 2, 2, 4 ) >> plot( t , y4 ) en 4ème position, sur la 2ème ligne Présentation des axes, labels, titres, style de ligne … Le graphique doit être actif (sélectionné) et/ou l’objet graphique (sur lequel on veut agir) doit être sélectionné Menu Tools de la fenêtre graphique Axes Properties… Line Properties… Text Properties… Show Legend …. Toutes ces manipulations ont leurs commandes équivalentes (utilisables dans un fichier M-file et très utiles pour automatiser)

xlabel >> xlabel(‘Temps t en sec’) ylabel >> ylabel(‘Fonction sin(t)’) zlabel title >> title(‘Graphe de la fonction sin’) axis >> axis( [xmin xmax ymin ymax] ) text >> text( 1 , 1/3 , ‘commentaire’ )

UBO – Licence Sciences de la Terre et de l’Univers Initiation à l’outil Matlab – C. Tisseau

- 23 -

Tracer une fonction à deux variables f(x,y) : Matlab définit une surface

par les coordonnées z au-dessus d’une grille dans un plan x, y trace des segments de droite reliant les points ainsi définis

Pour représenter cette surface en 3 dimensions : mesh montre les lignes, en couleur (maille d’un filet) surf montre les lignes et les faces, en couleur Tracer f(x,y) = sin( r ) / r

pour x et y variant de –8 à +8 par pas de 0.5 x vecteur en ligne y vecteur en colonne Matrices X et Y sur le domaine >> [ X , Y ] = meshgrid( -8 : .5 : 8 ) ; >> R = sqrt( X.^2 + Y.^2 ) + eps >> Z = sin( R ). / R ; >> mesh( X , Y , Z ) Commande demo >>demo Matlab Matrices Numerics Visualization 2-D Plots 3-D Plots

Language/Graphics Toolboxes

Mapping Signal Processing

UBO – Licence Sciences de la Terre et de l’Univers Initiation à l’outil Matlab – C. Tisseau