You are on page 1of 112

Initiation au progiciel Matlab Licence M ecanique-Electronique

Ann ee Universitaire 2005/2006

Y. Mor` ere

Cette page est laiss ee blanche intentionnellement

Table des mati` eres


1 Introduction ` a Matlab . . . . . . . . . . . . . . . . . . 1.1 Objectif du TP . . . . . . . . . . . . . . . . . . . . . . 1.2 Bref descriptif de Matlab . . . . . . . . . . . . . . . . 1.3 Excercices . . . . . . . . . . . . . . . . . . . . . . . . . 1.4 Les signaux num eriques . . . . . . . . . . . . . . . . . 1.4.1 Limpulsion unit e . . . . . . . . . . . . . . . . . 1.4.2 L echelon unit e . . . . . . . . . . . . . . . . . . 1.4.3 Sinus et exponentielle d ecroissante . . . . . . . 1.4.4 Scripts Matlab . . . . . . . . . . . . . . . . . . 1.5 Op erations sur les signaux . . . . . . . . . . . . . . . . 1.5.1 D ecalage et retournement temporelle . . . . . . 1.5.2 Fonctions matlab . . . . . . . . . . . . . . . . . 1.5.3 Addition, soustraction, multiplication et division 1.5.4 Autres op erations . . . . . . . . . . . . . . . . . 1.6 Spectre des signaux . . . . . . . . . . . . . . . . . . . 1.7 Exemples de signaux . . . . . . . . . . . . . . . . . . . 1.7.1 Exemple 1 . . . . . . . . . . . . . . . . . . . . . 1.7.2 Exemple 2 . . . . . . . . . . . . . . . . . . . . . A G en eralit es sur Matlab . . . . . . . . . . . . . . . . . . A.1 Lenvironnement Matlab . . . . . . . . . . . . . . . . . A.1.1 Espace de travail . . . . . . . . . . . . . . . . . A.1.2 Obtenir de laide . . . . . . . . . . . . . . . . . A.1.3 Syntaxe dune ligne dinstructions . . . . . . . . A.1.4 Gestion des chiers du r epertoire de travail . . . A.2 Types de donn ees et variables . . . . . . . . . . . . . . A.2.1 Les types de donn ees . . . . . . . . . . . . . . . A.2.1.1 Les 4 types de donn ees Matlab . . . . . . . . A.2.1.2 Le type complexe . . . . . . . . . . . . . . . . A.2.1.3 Le type cha ne de caract` eres . . . . . . . . . . A.2.1.4 Le type logique . . . . . . . . . . . . . . . . . A.2.2 Les vecteurs . . . . . . . . . . . . . . . . . . . . A.2.2.1 D enir un vecteur . . . . . . . . . . . . . . . A.2.2.2 Vecteurs sp eciaux . . . . . . . . . . . . . . . A.2.3 Les matrices . . . . . . . . . . . . . . . . . . . . A.2.3.1 D enir une matrice . . . . . . . . . . . . . . . A.2.3.2 Matrices sp eciales . . . . . . . . . . . . . . . A.2.3.3 Manipuler des matrices . . . . . . . . . . . . A.2.4 La structure Sparse . . . . . . . . . . . . . . . . A.3 Calculer avec Matlab . . . . . . . . . . . . . . . . . . . A.3.1 Les constantes . . . . . . . . . . . . . . . . . . . A.3.2 Op erations et fonctions portant sur les scalaires 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sur les . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . signaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 7 7 10 11 11 12 12 13 13 13 14 15 16 16 18 18 18 19 19 19 22 22 23 24 24 24 25 26 27 27 27 29 29 29 31 32 35 38 38 39

Y. Mor` ere

Initiation Progiciel Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 41 42 43 45 45 45 46 47 47 47 48 49 49 52 52 53 54 54 56 58 59 62 62 63 63 65 66 66 66 67 69 70 70 72 75 77 79 79 79 79 79 80 80 81 81 81 81 82 82

A.3.3 Op erations et fonctions portant sur les vecteurs . . . . . . . . A.3.4 Op erations et fonctions portant sur les matrices . . . . . . . . A.3.5 R esolution de syst` emes lin eaires . . . . . . . . . . . . . . . . . A.3.6 Les polyn omes . . . . . . . . . . . . . . . . . . . . . . . . . . A.4 Les entr ees-sorties . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.4.1 Les formes dachage des r eels . . . . . . . . . . . . . . . . . A.4.2 Achage simple, la commande disp . . . . . . . . . . . . . . A.4.3 Lecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.4.4 Impressions dirig ees par format . . . . . . . . . . . . . . . . . A.4.4.1 Mod` ele d edition de caract` eres . . . . . . . . . . . . . . . . A.4.4.2 Mod` ele d edition des r eels . . . . . . . . . . . . . . . . . . . A.4.4.3 Utilisations particuli` eres . . . . . . . . . . . . . . . . . . . . A.5 Programmer sous Matlab . . . . . . . . . . . . . . . . . . . . . . . . A.5.1 Scripts et fonctions . . . . . . . . . . . . . . . . . . . . . . . . A.5.2 Op erateurs de comparaison et op erateurs logiques . . . . . . . A.5.3 Instructions de contr ole . . . . . . . . . . . . . . . . . . . . . A.5.3.1 Boucle FOR : parcours dun intervalle . . . . . . . . . . . . A.5.3.2 Boucle WHILE : tant que . . . faire . . . . . . . . . . . . . . A.5.3.3 Linstruction conditionn ee IF . . . . . . . . . . . . . . . . . A.5.3.4 Choix ventil e, linstruction switch . . . . . . . . . . . . . . . A.5.3.5 Interruption dune boucle de contr ole . . . . . . . . . . . . . A.5.4 Un exemple complet . . . . . . . . . . . . . . . . . . . . . . . A.6 Graphisme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.6.1 Gestion des fen etres graphiques . . . . . . . . . . . . . . . . . A.6.2 Graphisme 2D . . . . . . . . . . . . . . . . . . . . . . . . . . . A.6.2.1 Tracer le graphe dune fonction ; la commande fplot . . . . A.6.2.2 La commande plot . . . . . . . . . . . . . . . . . . . . . . . A.6.2.3 La commande loglog . . . . . . . . . . . . . . . . . . . . . . A.6.3 Am eliorer la lisibilit e dune gure . . . . . . . . . . . . . . . . A.6.3.1 L egender une gure . . . . . . . . . . . . . . . . . . . . . . A.6.3.2 Acher plusieurs courbes dans une m eme fen etre . . . . . . A.6.3.3 Sauvegarder une gure . . . . . . . . . . . . . . . . . . . . . A.6.4 Graphisme 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . A.6.4.1 Tracer les lignes de niveau dune fonction de deux variables A.6.4.2 Repr esenter une surface d equation z = g (x, y ) . . . . . . . . A.6.4.3 Repr esenter une surface param etr ee . . . . . . . . . . . . . . A.7 R ef erences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B Le progiciel Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . B.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B.1.1 Fen etres de Matlab (ou li ees ` a Matlab) . . . . . . . . . . . . . B.2 Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B.2.1 Nombres complexes . . . . . . . . . . . . . . . . . . . . . . . . B.2.2 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B.2.3 Entr ees des matrices . . . . . . . . . . . . . . . . . . . . . . . B.2.4 Indexation - Extraction de sous-matrices . . . . . . . . . . . . B.2.5 Initialisations de matrices . . . . . . . . . . . . . . . . . . . . B.2.6 Taille . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B.2.7 Op erations matricielles . . . . . . . . . . . . . . . . . . . . . . B.2.8 Autres types . . . . . . . . . . . . . . . . . . . . . . . . . . . . B.2.9 Vecteurs et polyn omes . . . . . . . . . . . . . . . . . . . . . . 4

Y. Mor` ere B.3 Op erations matricielles et el em ent par el ement . . . . B.4 D eclaration, expressions et variables . . . . . . . . . B.4.1 Suppression de lachage des r esultats . . . . B.4.2 Majuscules et Minuscules . . . . . . . . . . . B.4.3 Liste de variables et de chiers M . . . . . . . B.4.4 Interruption dun calcul . . . . . . . . . . . . B.5 Structure de Contr oles . . . . . . . . . . . . . . . . . B.5.1 Boucles inconditionnelles for . . . . . . . . . B.5.2 Boucles conditionnelles while . . . . . . . . . B.5.3 Branchements conditionnels if . . . . . . . . B.5.4 Op erateurs relationnels et op erateurs logiques B.6 Fonctions Matlab pr ed enies . . . . . . . . . . . . . B.6.1 Fonctions scalaires . . . . . . . . . . . . . . . B.6.2 Fonctions vectorielles . . . . . . . . . . . . . . B.6.3 Fonctions matricielles . . . . . . . . . . . . . . B.7 Edition de ligne . . . . . . . . . . . . . . . . . . . . . B.8 Sous-matrices . . . . . . . . . . . . . . . . . . . . . . B.8.1 G en eration de vecteurs . . . . . . . . . . . . . B.8.2 Acc` es aux sous-matrices . . . . . . . . . . . . B.9 Fichier M . . . . . . . . . . . . . . . . . . . . . . . . . B.9.1 Fichiers de commandes (scripts) . . . . . . . . B.9.2 Fichiers de fonctions . . . . . . . . . . . . . . B.9.3 Sorties multiples . . . . . . . . . . . . . . . . B.9.4 Commentaires et aide en ligne . . . . . . . . . B.10 Cha nes, messages derreur et entr ees . . . . . . . . . B.10.1 Message derreur . . . . . . . . . . . . . . . . B.10.2 Entr ees . . . . . . . . . . . . . . . . . . . . . B.11 Gestion des chiers M . . . . . . . . . . . . . . . . . . B.11.1 Ex ecution de commandes syst` emes . . . . . . B.11.2 Gestion des r epertoires et des chiers . . . . . B.11.3 Matlab et chemins dacc` es . . . . . . . . . . . B.12 Mesure de lecacit e dun programme . . . . . . . . B.12.1 Fonction flops . . . . . . . . . . . . . . . . . B.12.2 Temps de Calcul . . . . . . . . . . . . . . . . B.12.3 Proleur . . . . . . . . . . . . . . . . . . . . . B.13 Formats de sortie . . . . . . . . . . . . . . . . . . . . B.14 Repr esentations graphiques . . . . . . . . . . . . . . B.14.1 Graphiques en dimension 2 . . . . . . . . . . . B.14.2 Graphiques multiples . . . . . . . . . . . . . . B.14.3 Graphe dune fonction . . . . . . . . . . . . . B.14.4 Courbes param etr ees . . . . . . . . . . . . . . B.14.5 Titres, l egendes, textes . . . . . . . . . . . . . B.14.6 Axes et echelles . . . . . . . . . . . . . . . . . B.14.7 Graphiques multiples . . . . . . . . . . . . . . B.14.8 Types de trac es, types de marqueurs, couleurs B.14.9 Autres fonctions sp ecialis ees . . . . . . . . . . B.14.10 Impression des graphiques . . . . . . . . . . . B.14.11 Repr esentation des courbes gauches . . . . . . B.14.12 Couleurs et ombres port ees . . . . . . . . . . . B.14.13 Perspective dune vue . . . . . . . . . . . . . . 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Initiation Progiciel Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 83 83 83 84 84 84 84 85 85 85 86 86 87 87 88 88 88 88 88 89 89 90 90 90 90 91 91 91 91 91 91 91 92 92 92 92 93 93 93 93 93 94 94 95 95 95 95 96 96

Y. Mor` ere C C.1 C.2 C.3 C.4 C.5 C.6 C.7 C.8 C.9 C.10 C.11 C.12 C.13 C.14 C.15 Les fonctions usuelles de Matlab . . . . . . . . . . Commandes g en erales . . . . . . . . . . . . . . . . Op erateurs et caract` eres sp eciaux . . . . . . . . . . Langage de programmation . . . . . . . . . . . . . Matrices particuli` eres et op erations sur les matrices Fonctions math ematiques usuelles . . . . . . . . . . Fonctions math ematiques sp ecialis ees . . . . . . . . Manipulation de matrices - Alg` ebre lin eaire . . . . Analyse de donn ees . . . . . . . . . . . . . . . . . . Polyn omes et interpolation . . . . . . . . . . . . . Int egration num erique . . . . . . . . . . . . . . . . Fonctions permettant de traiter le son . . . . . . . Repr esentations graphiques . . . . . . . . . . . . . Traitement des cha nes de caract` eres . . . . . . . . Fonction dentr ees/sortie . . . . . . . . . . . . . . . Types et structures de donn ees . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Initiation Progiciel Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 97 98 99 102 103 104 104 106 107 108 108 108 109 110 111

TP 1 :
(2 s eances)

Introduction ` a Matlab

1.1

Objectif du TP

Le but de ce TP est de vous familiariser avec le logiciel Matlab qui sera utilis e pour tous les TP de traitement de signal. Matlab (Matrix Laboratory) est un environnement de calcul permettant des calculs num eriques et des repr esentations graphiques. Dans ce TP vous trouverez en premi` ere partie un bref descriptif du logiciel et en deuxi` eme partie le TP proprement dit qui se compose de plusieurs exercices.

1.2

Bref descriptif de Matlab

Pour lancer Matlab, cliquez sur lic one Matlab. Au lancement , appara t la fen etre suivante :

Fig. 1.1 Fen etre de commande Matlab Le menu File : manipulation des chiers de Matlab, le menu Edit : utilisation du presse papier de Windows, le menu Options : positionnement des options dutilisation, Le menu Windows permet dutiliser les di erentes fen etres de Matlab : interpr eteur et gures, Le menu Help fournit une aide interactive sous la forme dun chier Windows en hypertexte. Matlab est un interpr eteur de commandes dont l el ement de base est la matrice. Sous Matlab, la syntaxe g en erale est de la forme : 7

Y. Mor` ere variable = expression ou expression

Initiation Progiciel Matlab

1 2 3 Par exemple la matrice suivante 4 5 6 sera rentr ee sous Matlab de la mani` ere suivante : 7 8 9 >>A=[1 2 3; 4 5 6; 7 8 9] ou en rempla cant les ; par des sauts de lignes >>A=[ 1 2 3 4 5 6 7 8 9] Les el ements des matrices peuvent etre une expression Matlab quelconque : >>x=[-1.3 sqrt(3) (1+2+3)*4/5] >>x= -1.3 1.7321 4.8000 Les el ements des matrices peuvent etre acc ed es en mettant leur indice ` a lint erieur de deux parenth` eses () : >>x(1) ans= -1.3000 On peut aussi construire des matrices en utilisant des matrices plus petites : >>x(5)=abs(x(1)) x= -1.3 1.7321 4.8000 0 1.3000 >>r=[10 11 12]; >>A=[A;r] A= 1 2 3 4 5 6 7 8 9 10 11 12 On remarquera que le signe ; permet de ne pas acher le r esultat de la commande. La commande who permet de visualiser les variables et whos permet en plus de pr eciser leur nature : >>who Your variables are: A ans r x >>whos Name Size Elements Bytes A 4 by 3 12 96 ans 1 by 1 1 8 r 1 by 3 3 24 x 1 by 5 5 40 Grand total is 21 elements using 168 bytes 8

Density Full Full Full Full

Complex No No No No

Y. Mor` ere

Initiation Progiciel Matlab

Pour cr eer un nombre complexe, on utilisera i ou j (i2 = 1 ou j 2 = 1) : >>z = 2+3i >>z2 = 2-2j Les op erateurs sont : + addition, - soustraction, * multiplication, / division ` a droite, \ division ` a gauche, transpos ee, <op erateur> op eration membre ` a membre. Lop erateur * permet de r ealiser directement des multiplications de matrices. Lop erateur \ permet de r esoudre l equation A*X=B : la solution est X=A\B. Par exemple, en utilisant la notation matricielle cet op erateur permet de r esoudre les syst` emes d equations : x+y =2 2x + 3y = 5 1 1 2 3 x y = 2 5 A X = B :X = A\B

Le symbole : permet sous Matlab de cr eer des vecteurs, par exemple x=1:5 cr ee un vecteur x contenant les chires de 1 ` a 5 avec un incr ement de 1. Pour rentrer un incr ement di erent de 1 (ici 0.8), on tape : >>x=1:0.8:5 Le symbole : permet aussi de s electionner des indices dans les matrices. Sachant que A est une matrice 10x10 : A(1:5, 3) s electionnera le troisi` eme el ement des lignes 1, 2, 3, 4 et 5, A(:,3) s electionnera la troisi` eme colonne, A(:,:) s electionnera la matrice enti` ere. Matlab permet aussi de r ealiser des graphiques en 2 ou 3 dimensions. Voici un exemple en deux dimensions : >>t=0:pi/10:2*pi; >>y=sin(t); >>plot(t,y) >>title(Mon premier graphique sous Matlab) >>xlabel(t en secondes) >>ylabel(V en volts) Matlab permet dutiliser des chiers de commandes. Un chier de commandes est chier rassemblant des commandes Matlab. Ce chier est ex ecut e lorsquon tape le nom du chier sous linterpr eteur. Le nom du chier doit obligatoirement avoir une terminaison .m. Voici un chier de commandes bo.m permettant de calculer la suite de Fibonacci. % exemple de fichier de commandes, calcul de la suite de Fibonacci % u(n+2)=u(n+1)+u(n) f=[1 1]; i=1; while f(i) + f(i+1) < 1000 f(i+2)=f(i+1)+f(i); i=i+1; end plot(f) 9

Y. Mor` ere

Initiation Progiciel Matlab

Mon premier graphique sous Matlab 1

0.8

0.6

0.4

0.2 V en volts

0.2

0.4

0.6

0.8

3 4 t en secondes

Fig. 1.2 Premier graphique avec Matlab

On peut aussi ecrire des fonctions sous Matlab. Une fonction sera un chier Matlab qui commence par function (et non pas par fonction) et qui aura des arguments. Par exemple voici la fonction mean qui calcule la moyenne dun vecteur : >>a=1:99; >>y=mean(a); function y = mean(x) %MEAN Average or mean value. % For vectors, MEAN(X) is the mean value of the elements in X. % For matrices, MEAN(X) is a row vector containing the mean value % of each column. % % See also MEDIAN, STD, MIN, MAX. % Copyright (c) 1984-94 by The MathWorks, Inc. [m,n] = size(x); if m == 1 m = n; end y = sum(x) / m;

1.3

Excercices

Il est a noter quune aide en ligne est disponible ` a tout moment au niveau de linterpr eteur de commande. Par exemple, pour obtenir de laide sur la fonction plot, taper help plot. Veuillez ecrire les chiers de commandes pour les exercices suivants. A la n de la s eance vous rendrez un compte rendu ainsi que les listings de ces chiers de commandes (qui devront etre 10

Y. Mor` ere enregistr es sous votre r epertoire). 1. Soit x=[1 2 3] et y=[4 5 6]. Que repr esente x*y et x*y? 2. Calculer le d eterminant de A = direct). 3. Acher les courbes suivantes : x [0, 1], f1 (x) = cos(tan(x)), x [10, 10], f2 (x) =
sin(x) , x

Initiation Progiciel Matlab

1 2 3 4

de deux mani` eres (fonctions int egr ee et calcul

x [100, 100], f3 (x) = x5 + 2x2 + x + 1, x [2, 2], f4 (x) = et sin t. 4. R esoudre le syst` eme suivant : x+y+z =0 2x + y + z = 10 2x y + z = 3
2

5. Approximation dune fonction par un polyn ome. Soit f (x), d enie pour x [a, b] (intervalle ni). Approximer f (x) par un polyn ome du premier degr e revient ` a ecrire : y = p(x) o` u p(x) = p1 (x) + p0 Cest-` a-dire sous Matlab, il faut r esoudre le syst` eme compos e des n el ements de lintervalle de d enition de x : p1 (1) + p0 = y (1) ... o` u p1 , p0 sont les inconnues. p1 (n) + p0 = y (n) Application : Approximer par un polyn ome du 1er , 2eme et 3eme degr es, la fonction f (x) = sin(x) sur ` lintervalle [0, /2]. A chaque fois r epondre aux questions 5a, 5b et 5c. (a) Ecrire les variables A, P et B permettant de r esoudre le syst` eme. (b) R esoudre le syst` eme (c) Acher le r esultat (d) A laide de la fonction subplot acher les r esultats sur une m eme fen etre les trois courbes di erentes.

1.4

Les signaux num eriques

Nous allons voir les fonctions qui permettent de g en erer les signaux num eriques usuels ` a laide de la fonction stem.

1.4.1

Limpulsion unit e

An de g en erer limpulsion unit e on peut ecrire le programme suivant : 11

Y. Mor` ere %impulsion unit e t=-10:10; x=[zeros(1,10),1,zeros(1,10)]; stem(t,x); axis([-10 10 -0.5 1.5]); title(Impulsion unit e); xlabel(n); ylabel(Amplitude);

Initiation Progiciel Matlab

Ecrivez et testez le programme pr ec edent. Expliquez ` a quoi servent les di erentes fonctions.

1.4.2

L echelon unit e

Pour la cas de l echelon unit e, on se contentera dun nombre ni d echantillon. On peut ecrire le programme suivant : %echelon unit e t=-10:10; x=[zeros(1,10),ones(1,11)]; stem(t,x); axis([-10 10 -0.5 1.5]); title(Echelon unit e); xlabel(n); ylabel(Amplitude); Ecrivez et testez le programme pr ec edent.

1.4.3

Sinus et exponentielle d ecroissante

On recommence avec la fonction suivante sin(0, 35 n). On ecrira le programme suivant : %sinus t=-10:10; x=sin(0.35*t); stem(t,x); axis([-10 10 -1.5 1.5]); title(sinus); xlabel(n); ylabel(Amplitude); Ensuite avec une exponentielle d ecroissante e0,2n u[n] avec u l echelon unit e. On a le programme suivant : %exponentielle t=-10:10; u=[zeros(1,10),ones(1,11)]; x=exp(-0.2*t).*u; stem(t,x); axis([-10 10 -1.5 1.5]); title(Exponentielle retard ee); xlabel(n); ylabel(Amplitude); On utilise ici lop erateur de multiplication termes ` a termes .* qui permet de permet deectuer la multiplication terme ` a terme de deux matrices ((A. B )i,j = Ai,j Bi,j ). 12

Y. Mor` ere

Initiation Progiciel Matlab

1.4.4

Scripts Matlab

Les morceaux de programmes ci dessus peuvent etre recopi es dans des chiers texte ` a laide de l editeur de matlab et enregistr es sous des noms repr esentatifs tels que unit.m, echel.m, sinus.m et expo.m. Il sagit alors de chiers de commandes scripts matlab qui penvent etre lanc es directement ` a partir de la console matlab. Les commandes contenues dans le chier sont lanc ees comme si elles etaient tap ees dans la console.

1.5
1.5.1

Op erations sur les signaux


D ecalage et retournement temporelle

Les signaux num eriques sont souvent exprim es comme des combinaisons dautres signaux el ementaires d ecal es ou retourn es dans le temps.Ainsi le signal s[n N ] est egal au signal a[n] d ecal e de N echantillons dans le temps (N entier). On eectue donc une translation de N echantillons vers la droite, si N est positif, et vers la gauche si N est n egatif. On va utiliser l echelon unit e pour illustrer ce concept. Le signal a[n] est la version retourn ee dans le temps de a[n]. Cela signie que le signal est retourn e par rapport au point n = 0. On aura par exemple : t=-10:10; delta=[zeros(1,10),ones(1,11)]; subplot(3,1,1); stem(t,delta); axis([-10 10 -1.5 1.5]); title(\delta[n]); xlabel(n); ylabel(Amplitude); subplot(3,1,2); deltam2=[zeros(1,2),delta(1:length(delta)-2)]; stem(t,deltam2); axis([-10 10 -1.5 1.5]); title(\delta[n-2]); xlabel(n); ylabel(Amplitude); subplot(3,1,3); deltap2=[delta(3:length(delta)),zeros(1,2)]; stem(t,deltap2); axis([-10 10 -1.5 1.5]); title(\delta[n+2]); xlabel(n); ylabel(Amplitude); Ecrivez et testez le programme pr ec edent. Expliquez ` a quoi servent les di erentes fonctions. Puis le programme suivant : t=-10:10; u=[zeros(1,10),ones(1,11)]; x=exp(-0.2*t).*u; subplot(2,1,1); stem(t,x); axis([-10 10 -1.5 1.5]); title(x[n]); 13

Y. Mor` ere xlabel(n); ylabel(Amplitude); subplot(2,1,2); x1=x(length(x):-1:1); stem(t,x1); axis([-10 10 -1.5 1.5]); title(x[-n]); xlabel(n); ylabel(Amplitude); Ecrivez et testez le programme pr ec edent.

Initiation Progiciel Matlab

1.5.2

Fonctions matlab

Il est possible de mettre au point des programmes permettant de r ealiser de mani` ere automatique et g en eral un d ecalage, un retournement sur un signal arbitraire dentr ee. Ce sont des fonctions matlab, rep er ees par un identicateur li e au nom de chier qui les contient. Ainsi le corps de la fonction toto doit se trouver dans le chier toto.m. De plus ce chier doit etre accessible par matlab au moment de son appel (Notion de chemin dacc` es PATH). Par exemple la fonction sigshift : function [xs,ts]=sigshift(x,t,N) %shifting a signal %inputs : % x,t input signal amplitude and instants % N shift value %outputs : % xs,ts shifted signal amplitude and instants xs=x; ts=t-N; Ecrivez et testez le programme pr ec edent sur un exemple (lechelon unit e est une bon point de d epart et noubliez pas dacher le r esultat). Expliquez ` a quoi servent les di erentes mots-cl es. R ealisez les m emes op erations avec les fonctions suivantes : function [xr,tr]=sigrev(x,t) %Time reverting a signal %inputs : % x,t input signal amplitude and instants %outputs : % xr,tr time reversed signal amplitude and instants lx=length(x); tr=-t(lx:-1:1); xr=x(lx:-1:1; function [x,tx]=impseq(n0,n1,n2) %Time shifted unit impulse %inputs : % n0 shifting value % n1 timing begin value % n2 timing end value %outputs : 14

Y. Mor` ere % x,tx shifted unit impulse tx=n1:n2; x=[(tx-n0)==0]; function [x,tx]=stepseq(n0,n1,n2) %Time shifted unit step %inputs : % n0 shifting value % n1 timing begin value % n2 timing end value %outputs : % x,tx shifted unit step tx=n1:n2; x=[(tx-n0)>=0];

Initiation Progiciel Matlab

1.5.3

Addition, soustraction, multiplication et division sur les signaux

On peut maintenant aborder les op erations fondamentales sur les signaux. La fonction suivante permet dajouter deux signaux : function [x,t]=sigadd(x1,t1,x2,t2) %Adding two signals %inputs : % x1,t1 first input signal amplitudes and instants % x2,t2 second input signal amplitudes and instants %outputs : % x,t sum signal amplitudes and instants first=min(t1(1),t2(1)); l1=length(t1); l2=length(t2); last=max(t1(l1),t2(l2)); t=first:last; l=length(t); %search number of preamble ans postamble zeros %needed to extend x1 and x2 preamb1=t1(1)-first; preamb2=t2(1)-first; postamb1=last-t1(l1); postamb2=last-t2(l2); %x1e=[zeros(1,preamb1),x1,zeros(1,postamb1)]; if preamb1==0 x1e=[]; else x1e=[zeros(1,preamb1)]; end %x2e=[zeros(1,preamb2),x2,zeros(1,postamb2)]; if preamb2==0 x2e=[]; else x2e=[zeros(1,preamb2)]; 15

Y. Mor` ere end x1e=[x1e,x1]; x2e=[x2e,x2]; if postamb1~=0 x1e=[x1e,zeros(1,postamb1)]; end if postamb2~=0 x2e=[x2e,zeros(1,postamb2)]; end x=x1e+x2e;

Initiation Progiciel Matlab

Ecrivez et testez la fonction pr ec edente sur un exemple (ajouter un echelon et une sinuso de par exemple). Expliquez ` a quoi servent les di erentes mots-cl es. R ealiser simplement maintenant les fonctions sigdiff, sigmul et sigdiv.

1.5.4

Autres op erations

On peut encore envisager de calculer la somme ou le produit de tous les echantillons dun signal ou encore la puissance dun signal : 1 Px = N
N 1

|x[n]|2
n=0

En guise dexercice r ealiser les fonctions sumsignal, prodsignal et puissancesignal. Puis testez les sur un exemple.

1.6

Spectre des signaux

La repr esentation des signaux dans le domaine temporelle utilise la notion de spectre. Matlab fournit la fonction fft pour calculer la tranform ee de Fourier complexe dun vecteur. Le vecteur signal etant de dimension nie, cest la transform ee discr` ete qui est calcul ee. Si N est la longueur su signal, le spectre sera un vecteur complexe de m eme longueur qui pourra etre repr esent e en coordonn ees cart esiennes (partie r eelle et imaginaire fonctionreal et imag), ou en coordonn ees polaires (module et phase, fonction matlab abs et angle ou unwrap). Prenons la cas dune sinuso de amortie. Les fr equences vont etre gradu ees en Hz en supposant une fr equence d echantillonnage fe de 1Kz les fr equences les fr equences sup erieures ` a 500Hz correspondent au fr equence n egatives du spectre f = f fe . %signal sinuso dal amorti t=-10:1000; u=[t>0]; s=sin(0.35*t); x=exp(-0.2*t).*s.*u; subplot(3,1,1); stem(t,x); axis([-10 30 -0.6 0.6]); title(Sinuso de amortie); xlabel(n); ylabel(Amplitude); %spectre 16

Y. Mor` ere X=fft(x); rX=real(X); iX=imag(X); N=length(t); f=(0:N-1)*1000/N; %r ealisation de la plage de fr equence subplot(3,2,3) plot(f,rX); title(Real(X)); xlabel(f(Hz)); ylabel(Amplitude); grid; subplot(3,2,4); plot(f,iX); title(Imag(X)); xlabel(f(Hz)); ylabel(Amplitude); grid; rho=abs(X); theta=angle(X); %en radians theta1=180*theta/pi; %en degres subplot(3,2,5); plot(f,rho); title(Mag(X)); xlabel(f(Hz)); ylabel(Amplitude); grid; subplot(3,2,6); plot(f,theta1); title(Phase(X)); xlabel(f(Hz)); ylabel(deg.); grid; figure; %nouvelle figure rho1=20*log10(rho); theta2=180*unwrap(theta)/pi; subplot(1,2,1); plot(f,rho1); title(Mag(X)); xlabel(f(Hz)); ylabel(dB.); grid; subplot(1,2,2); plot(f,theta2); title(Phase(X)); xlabel(f(Hz)); ylabel(deg.); grid;

Initiation Progiciel Matlab

La commande subplot permet de r ealiser la mise en page des gures. Il est couratn dutiliser le module en dB et pour la phase de recourir ` a un algorithme de d eballage pour la rendre 17

Y. Mor` ere

Initiation Progiciel Matlab

continue. Ecrivez et testez la fonction. Expliquez ` a quoi servent les di erentes mots-cl es.

1.7
1.7.1

Exemples de signaux
Exemple 1

On consid` ere le signal : x=[1 2 3 4 5 6 7 6 5 4 3 2 1]; t=-2:10; G en erer et tracer les s equences suivantes ` a laide des fonctions pr ec edemment d enies : x1 [n] = 2x[n 5] 3x[n + 4] x2 [n] = x[3 n] x[n]x[n 2] ainsi que leurs spectres.

1.7.2

Exemple 2

On consid` ere le signal complexe : t=-10:10; alpha=-0.1+j*0.3; x=exp(alpha*t); G en erer ce signal et en tracer les parties r eelles et imaginiare ainsi que le module et la phase dans quatres vignettes ind ependantes de la m eme gure. Repr esenter le spectre du signal.

18

Annexe A :
A.1

G en eralit es sur Matlab

Lenvironnement Matlab

Fig. A.1 Fen etre de Matlab Matlab (MatrixLaboratory) est un environnement de calcul num erique matriciel. Apr` es le lancement de Matlab, une fen etre de commande appara t qui permet ` a lutilisateur de taper une commande quelconque ob eissant ` a la syntaxe de Matlab. Le symbole >> apparaissant ` a gauche de la fen etre de Matlab indique que linterpr eteur est pr et ` a recevoir une commande. Voici un exemple de session Matlab : >> A = [ 1 3; 4 2 ] A = 1 3 4 2 >> A*A ans = 13 9 12 16 >> quit 16 flops. 1 3 et lon a calcul e son carr e. Chaque 4 2 ligne dinstructions doit se terminer par un retour chariot (touche Entr ee). La commande pour quitter Matlab est quit. Dans cette session on a d eni la matrice A =

A.1.1

Espace de travail

Comme tout langage de programmation, Matlab permet de d enir des donn ees variables. Les variables sont d enies au fur et ` a mesure que lon donne leurs noms (identicateur) et leurs 19

Y. Mor` ere

Initiation Progiciel Matlab

valeurs num eriques ou leurs expressions math ematiques. Matlab ne n ecessite pas de d eclaration de type ou de dimension pour une variable. Les variables sont stock ees dans lespace de travail (ou workspace) et peuvent etre utilis ees dans les calculs subs equents. Pour obtenir la liste des variables actives de lespace de travail on dispose des commandes who et whos. La commande who ache le nom des variables actives. La commande whos donne plus dinformations : le nom, la taille du tableau (nombre de lignes et de colonnes) associ e, lespace m emoire utilis e (en Bytes) et la classe des donn ees (principalement double array sil sagit dun tableau de valeurs r eelles ou complexes et char sil sagit dun tableau de caract` eres). La commande clear permet de nettoyer lespace de travail : toutes les variables sont d etruites. Il est possible de ne d etruire quune partie des variables en tapant clear nom-var o` u nom-var est le nom de la (ou des) variable(s) ` a d etruire. >> x=2*pi/3; y=sin(x); z=cos(x); >> A = [ 1 3; 4 2 ]; B = A*A; >> t = bonjour; >> who Your variables are : A B t x y >> whos Name Size Bytes Class A 2x2 32 double array B 2x2 32 double array t 1x7 14 char array x 1x1 8 double array y 1x1 8 double array z 1x1 8 double array Grand total is 18 elements using 102 bytes >> clear x y t >> whos Name Size Bytes Class A 2x2 32 double array B 2x2 32 double array z 1x1 8 double array Grand total is 9 elements using 72 bytes >> clear >> who >>

Il est possible de sauvegarder une session Matlab dans un chier pour une utilisation ult erieure. Linstruction save nom-c enregistre toutes les variables de lespace de travail dans le chier nom-fic.mat. Si aucun nom de chier nest pr ecis e, le chier par d efaut est Matlab.mat. Il est possible de ne sauver quune partie des variables (par exemple seulement la variable contenant le r esultat dun calcul) en utilisant linstruction save nom-fic nom-var o` u nom-var est le nom de la (ou des) variable(s) ` a sauvegarder. Attention, seul le contenu des variables est sauvegard e et non pas lensemble des instructions eectu ees durant la session. Pour ramener dans lespace de travail les variables sauvegard ees dans le chier nom-fic.mat, taper load nom-fic. Dans lexemple qui suit on calcule le sinus et le cosinus de 2 pi/3 dans les variables y et z . On sauve ces r esultats dans un chier toto.mat. Apr` es avoir quitt e Matlab on peut v erier que le chier toto.mat existe bien mais quil ne sagit pas dun chier ascii. Si lon relance Matlab et que lon tape load toto, on peut v erier que les variables y et z existent bien et ont les valeurs pr ec edentes. 20

Y. Mor` ere >> x=2*pi/3, y=sin(x), z=cos(x) x = 2.0944 y = 0.8660 z = -0.5000 >> save toto y z >> quit 6 flops. Lancer Matlab: >> load toto >> who Your variables are : y z >> y y = 0.8660 >> z z = -0.5000 >> x ??? Undefined function or variable x. >>

Initiation Progiciel Matlab

La commande diary permet de sauvegarder lensemble dune session dans un chier ascii pour un traitement ult erieur (insertion dans un document, impression, ...). Le chier de sauvegarde par d efaut a pour nom diary. On provoque la sauvegarde dans le chier nom-fic, par linstruction diarynom-fic. Attention, cest la commande diary qui d eclenche le d ebut de sauvegarde; il est impossible de sauvegarder la partie de la session pr ec edent son appel. Pour arr eter la sauvegarde, taper diary off. >> x=2*pi/3; y=sin(x); >> diary toto >> z=cos(x) z = -0.5000 >> diary off >> t = tan(x) t = -1.7321 >> Si vous editez le chier toto, voici ce que vous verrez : >> z=cos(x) z = -0.5000 >> diary off 21

Y. Mor` ere

Initiation Progiciel Matlab

A.1.2

Obtenir de laide

Dans une session Matlab, il est possible dobtenir une aide en ligne sur une commande en tapant help nom-commande. Par exemple, >> help diary DIARY Save text of MATLAB session. DIARY file{\_}name causes a copy of all subsequent terminal input and most of the resulting output to be written on the named file. DIARY OFF suspends it. DIARY ON turns it back on. DIARY, by itself, toggles the diary state. Use the functional form of DIARY, such as DIARY(file), when the file name is stored in a string. >> Attention, les commandes Matlab doivent etre tap ees en minuscules pour etre reconnues, m eme si elles gurent en majuscules dans laide en ligne. On peut egalement obtenir de laide par le biais de la commande doc qui donne acc` es ` a une documentation compl` ete au format HTML. Pour quitter cette documentation, cliquer sur Exit Program dans le menu File du navigateur. La commande lookfor permet de rechercher un mot-cl e parmi les lignes de commentaires en ent ete des fonctions Matlab (ces lignes sont celles ach ees par la commande doc). Linstruction lookfor motcl e recherche le mot-cl e motcl e dans la premi` ere ligne de commentaire de toutes les fonctions Matlab. Linstruction lookfor motcl e -all recherche le mot-cl e dans toutes les lignes de commentaires en ent ete des fonctions. Attention le mot-cl e doit etre en anglais, les commentaires des fonctions Matlab etant r edig es en anglais. On peut utiliser une phrase comme mot-cl e. Il faut alors l ecrire entre guillemets ( ). La commande lookfor retourne le nom la fonction Matlab (ou des fonctions) o` u le mot-cl e gure dans la premi` ere ligne de commentaires. Elle retourne egalement la ligne de commentaires o` u gure le mot-cl e. Si le mot-cl e na et e trouv e dans aucune ligne de commentaires, Matlab rend la main sans rien acher. >> lookfor determinant DET Determinant. >> lookfor tridiagonal matrix LESP Tridiagonal matrix with real, sensitive eigenvalues. POISSON Block tridiagonal matrix from Poissons equation. TRIDIAG Tridiagonal matrix (sparse). TRIDIEIG Find a few eigenvalues of a tridiagonal matrix. TRIDISOLVE Solve A*x = b where A is a square, symmetric tridiagonal matrix. >> lookfor papillon >>

A.1.3

Syntaxe dune ligne dinstructions

Si une instruction Matlab est suivie dun point virgule, le r esultat de cette instruction nest pas ach e. Pour r eacher un r esultat contenu dans une variable, il sut de taper le nom de la variable. Le r esultat de la derni` ere instruction ex ecut ee peut etre rappel e par la commande ans : >> A = [ 8 1 6; 3 5 7; 4 2 9]; >> A A = 22

Y. Mor` ere 8 3 4 >> A*A; >> ans ans = 91 67 67 >> 1 5 9 6 7 2

Initiation Progiciel Matlab

67 91 67

67 67 91

Plusieurs instructions Matlab peuvent gurer sur une m eme ligne. Il faut alors les s eparer par une virgule ou par un point virgule. Dautre part, si une commande est trop longue pour tenir sur une ligne, il est possible de poursuivre sur la ligne suivante en terminant la ligne par 3 points (...). >> B = [ 1 3; 4 2 ]; B*B ans = 13 9 12 16 >> x = 1 + 2 + 3 + 4 + 5 + 6 ... +7 + 8 + 9 + 10 = 55 >> Si la syntaxe de linstruction soumise est erron ee ou si vous demandez ` a Matlab dex ecuter une instruction ill egale (qui na pas de sens math ematique par exemple), vous obtiendrez un message derreur. Ce message vous indique les sources derreurs possibles et doit vous permettre de corriger rapidement votre erreur. >> A + B ??? Error using ==> + Matrix dimensions must agree. >> C = [ 1 2 3; 4 5] ??? Number of elements in each row must be the same. >> whose ??? Undefined function or variable whose. >> Dans la premi` ere instruction, on tente deectuer la somme de deux matrices aux dimensions incompatibles. Dans le second exemple on tente de d enir une matrice dont le nombre d el ements dans chaque ligne di` ere. Enn la troisi` eme instruction est inconnue de Matlab : il ne sagit ny dune fonction ni dune variable incorpor ee ou utilisateur.

A.1.4

Gestion des chiers du r epertoire de travail

Un certain nombre de commandes permettent de g erer les chiers du r epertoire de travail. La commande dir donne la liste des chiers du r epertoire de travail. La commande cd permet de changer de r epertoire de travail. La commande type permet dacher le contenu dun chier. La commande delete permet de d etruire un chier. Ces commandes sutilisent de la m eme 23

Y. Mor` ere

Initiation Progiciel Matlab

mani` ere que les commandes correspondantes du DOS. Enn la commande edit permet douvrir un editeur de texte. Le choix de l editeur a et e eectu e au moment de linstallation de Matlab sur votre machine, il est possible de changer votre editeur favori dans les Preferences de Matlab. Il est egalement possible dex ecuter des commandes DOS ` a partir de Matlab en faisant pr ec eder la commande dun point dexclamation (!). Si vous avez eectu e les exemples du paragraphe pr ec edent, deux chiers toto et toto.mat existent dans votre r epertoire de travail. Voici alors un exemple dutilisation des commandes de gestion des chiers. >> dir . .. toto >> edit toto >> !notepad toto >> toto.mat

A.2

Types de donn ees et variables

Comme tout langage de programmation, Matlab permet de d enir des donn ees variables. Une variable est d esign ee par un identicateur qui est form e dune combinaison de lettres et de chires. Le premier caract` ere de lidenticateur doit n ecessairement etre une lettre. Attention, Matlab di erencie majuscules et minuscules! Ainsi X33 et x33 d esignent deux variables distinctes. Les variables sont d enies au fur et ` a mesure que lon donne leurs noms (identicateur) et leurs valeurs num eriques ou leurs expressions math ematiques. Lutilisation de variables avec Matlab ne n ecessite pas de d eclaration de type ou de dimension. Le type et la dimension dune variable sont d etermin es de mani` ere automatique ` a partir de lexpression math ematique ou de la valeur aect ee ` a la variable. Une variable peut etre de type r eel, complexe, cha ne de caract` eres ou logique. Pour Matlab toute variable est consid er ee comme etant un tableau d el ements dun type donn e. Matlab di erencie trois formes particuli` eres de tableaux. Les scalaires qui sont des tableaux ` a une ligne et une colonne. Les vecteurs qui sont des tableaux ` a une ligne ou ` a une colonne. Les matrices qui sont des tableaux ayant plusieurs lignes et colonnes. Une variable Matlab est donc toujours un tableau que lon appelle variable scalaire, vecteur ou matrice suivant la forme du tableau.

A.2.1
A.2.1.1

Les types de donn ees


Les 4 types de donn ees Matlab

Les trois principaux types de variables utilis es par Matlab sont les types r eel, complexe et cha ne de caract` eres. Il ny a pas de type entier ` a proprement parler. Le type logique est associ e au r esultat de certaines fonctions. Signalons quil est inutile (impossible) de d eclarer le type dune variable. Ce type est etabli automatiquement ` a partir des valeurs aect ees ` a la variable. Par exemple les instructions x = 2; z = 2+i; rep = oui; d enissent une variable x de type r eel, une variable z de type complexe et une variable rep de type cha ne de caract` eres. >> clear >> x = 2; z = 2+i; rep = oui; >> whos Name Size Bytes rep 1x3 6 x 1x1 8 z 1x1 16

Class char array double array double array (complex) 24

Y. Mor` ere Grand total is 5 elements using 30 bytes >>

Initiation Progiciel Matlab

Comme on ne d enit pas de mani` ere explicite le type dune variable, il est parfois utile de pouvoir le d eterminer. Cela est possible gr ace aux commandes ischar, islogical et isreal. ischar(x) retourne 1 si x est de type cha ne de caract` eres et 0 sinon. islogical(x) retourne 1 si x est de type logique et 0 sinon. La commande isreal(x) est ` a utiliser avec discernement : elle retourne 1 si x est r eel ou de type cha ne de caract` eres et 0 sinon (x est complexe ` a partie imaginaire non nulle ou nest pas un tableau de valeurs r eelles ou de caract` eres). >> ischar(rep) ans = 1 >> ischar(x) ans = 0 >> isreal(z) ans = 0 >> isreal(x) ans = 1 >> isreal(rep) ans = 1 >> A.2.1.2 Le type complexe

Lunit e imaginaire est d esign ee par i ou j . Les nombres complexes peuvent etre ecrits sous forme cart esienne a + ib ou sous forme polaire r eit . Les di erentes ecritures possibles sont a+ib, a+i*b, a+b*i, a+bi et r*exp(it) ou r*exp(i*t) avec a, b, r et t des variables de type r eel. Les commandes imag, real, abs, angle permettent de passer ais ement de la forme polaire ` a la forme cart esienne et r eciproquement. Si z est de type complexe, les instructions imag(z) et real(z) retournent la partie imaginaire et la partie r eelle de z . Les instructions abs(z) et angle(z) retournent le module et largument de z . On fera attention au fait que les identicateurs i et j ne sont pas r eserv es. Aussi il est possible que des variables de noms i et j aient et e red enies au cours dun calcul ant erieur et soient toujours actives. Si cest la cas, on peut soit d etruire ces deux variables (clear i j), i et j redeviennent alors lunit e imaginaire, soit r eaecter ` a i ou ` a j la valeur unit e imaginaire par linstruction i = sart(-1). On se m eera donc des boucles dindices i et j dans lesquelles on manipule des variables de type complexe. On fera egalement attention ` a ne pas laisser despace autour de lunit e imaginaire an d eviter de mauvaises interpr etations des donn ees dans certains cas. Comparez par exemple, >> z = [1+i, 2, 3i] z = 1.0000 + 1.0000i >> y = [1+i, 2, 3 i] y = 1.0000 + 1.0000i >>

2.0000

0 + 3.0000i

2.0000

3.0000

0 + 1.0000i

25

Y. Mor` ere A.2.1.3 Le type cha ne de caract` eres

Initiation Progiciel Matlab

Une cha ne de caract` eres est un tableau de caract` eres. Une donn ee de type cha ne de caract` eres (char) est repr esent ee sous la forme dune suite de caract` eres encadr ee dapostrophes simples (). Une variable de type cha ne de caract` eres etant interpr et ee comme un tableau de caract` eres, il est possible de manipuler chaque lettre de la cha ne en faisant r ef erence ` a sa position dans la cha ne. La concat enation de cha nes de caract` eres seectue selon les r` egles de manipulation des tableaux. Lexemple suivant pr esente di erentes manipulations dune cha ne de caract` eres. >> ch1 = bon ch1 = bon >> ch2 = jour ch2 = jour >> whos Name Size Bytes ch1 1x3 6 ch2 1x4 8 Grand total is 7 elements using >> ch = [ch1,ch2] ans = bonjour >> ch(1), ch(7), ch(1 :3) ans = b ans = r ans = bon >> ch3 = soi; >> ch = [ch(1 :3), ch3, ch(7)] ans = bonsoir >>

Class char array char array 14 bytes

Si une cha ne de caract` eres doit contenir le caract` ere apostrophe () celui-ci doit etre doubl e dans la cha ne (ainsi pour aecter le caract` ere apostrophe () ` a une variable on devra ecrire , soit quatre apostrophes. >> rep = aujourdhui ??? rep = aujourdhui Missing operator, comma, or semi-colon. >> rep = aujourdhui rep = aujourdhui >> apos = apos = >> 26

Y. Mor` ere

Initiation Progiciel Matlab

La cha ne de caract` eres vide sobtient par deux apostrophes . La commande isempty permet de tester si une variable de type cha ne de caract` eres est vide ou non. La commande strcmp permet de tester si deux cha nes de caract` eres sont egales ou non. A.2.1.4 Le type logique

Le type logique (logical) poss` ede deux formes : 0 pour faux et 1 pour vrai. Un r esultat de type logique est retourn e par certaines fonctions ou dans le cas de certains tests. Dans lexemple qui suit on consid` ere une variable x contenant la valeur 123 et une variable y d enie par lexpression math ematique y = exp(log (x)). On teste si les variables x et y contiennent les m emes valeurs. La variable tst est une variable de type logique qui vaut 1 (vrai) les valeurs sont egales et 0 (faux) sinon. Suivant la valeur de tst, on ache la phrase x est egal a y ou la phrase x est di erent de y . Dans lexemple propos e, compte tenu des erreurs darrondis lors du calcul de exp(log (123)), la valeur de la variable y ne vaut pas exactement 123. On pourra egalement consid erer le cas o` u x = 12. >> x = 123; y = exp(log(x)); >> tst = ( x==y ); >> if tst, disp(x est egal a y x est different de y >> whos Name Size Bytes tst 1x1 8 x 1x1 8 y 1x1 8 Grand total is 3 elements using >> format long >> x, y, tst x = 123 y = 1.229999999999999e+02 tst = 0 >> format, clear >>

), else disp(x est different de y ), end

Class double array (logical) double array double array 24 bytes

A.2.2
A.2.2.1

Les vecteurs
D enir un vecteur

On d enit un vecteur ligne en donnant la liste de ses el ements entre crochets ([ ]). Les el ements sont s epar es au choix par des espaces ou par des virgules. On d enit un vecteur colonne en donnant la liste de ses el ements s epar es au choix par des points virgules (;) ou par des retours chariots. On peut transformer un vecteur ligne x en un vecteur colonne et r eciproquement en tapant x ( est le symbole de transposition). Il est inutile de d enir la longueur dun vecteur au pr ealable. Cette longueur sera etablie automatiquement ` a partir de lexpression math ematique d enissant le vecteur ou ` a partir des donn ees. On peut obtenir la longueur dun vecteur donn e gr ace ` a la commande length. Un vecteur peut egalement etre d eni par blocs selon la m eme syntaxe. Si par exemple x1 , x2 et x3 sont trois vecteurs (on note x1, x2 et x3 les variables Matlab correspondantes), ond enit le vecteur bloc (x1 | x2 | x3 ) par linstruction X = [x1 x2 x3]. 27

Y. Mor` ere >> x1 = [1 2 3], x2 = [4,5,6,7], x3 = [8; 9; 10] x1 = 1 2 3 x2 = 4 5 6 7 x3 = 8 9 10 >> length(x2), length(x3) ans = 4 ans = 3 >> whos Name Size Bytes Class x1 1x3 24 double array x2 1x4 32 double array x3 3x1 24 double array Grand total is 10 elements using 80 bytes >> x3 ans = 8 9 10 >> X = [x1 x2 x3] X = 1 2 3 4 5 6 7 8 >>

Initiation Progiciel Matlab

10

Les el ements dun vecteur peuvent etre manipul es gr ace ` a leur indice dans le tableau. Le k -ieme el ement du vecteur x est d esign ee par x(k ). Le premier el ement dun vecteur a obligatoirement pour indice 1. En pratique ceci impose de faire des translations dindices si par exemple on souhaite d enir une suite (x0 , x1 , ... , xn ). Le terme x0 de la suite correspondra ` a l el ement x(1) du vecteur et le terme xN ` a l el ement x(N + 1). Il est possible de manipuler plusieurs el ements dun vecteur simultan ement. Ainsi les el ements k ` a l du vecteur x sont d esign es par x(k : l). On peut egalement manipuler facilement les el ements dun vecteur dont les indices sont en progression arithm etique. Ainsi si lon souhaite extraire les el ements k, k +p, k +2p, ..., k +N p = l, on ecrira x(k :p :l). Plus g en eralement, si K est un vecteur de valeurs enti` eres, X (K ) retourne les el ements du vecteur X dont les indices sont les el ements du vecteur K . Reprenons lexemple pr ec edent. >> X(5) ans = 5 >> X(4 :10) ans = 4 5 6 7 >> X(2 :2 :10) ans = 2 4 6 8 >> K = [1 3 4 6]; X(K) ans =

10

10

28

Y. Mor` ere 1 >> 3 4 6

Initiation Progiciel Matlab

Il est tr` es facile de d enir un vecteur dont les composantes forment une suite arithm etique. Pour d enir un vecteur x dont les composantes forment une suite arithm etique de raison h, de premier terme a et de dernier terme b, on ecrira x = a :h :b. Si a b nest pas un multiple de h, le dernier el ement du vecteur x sera a + Ent((a b)/h)h o` u Ent est la fonction partie enti` ere. La commande linspace permet de d enir un vecteur x de longueur N dont les composantes forment une suite arithm etique de premier terme a et de dernier terme b (donc de raison (a b)/N ). Les composantes du vecteur sont donc lin eairement espac ees. La syntaxe est x = linspace(a,b,N). >> x = 1.1 :0.1 :1.9 x = Columns 1 through 7 1.1000 1.2000 1.3000 Columns 8 through 9 1.8000 1.9000 >> x = 1.1 :0.2 :2 x = 1.1000 1.3000 1.5000 >> x = linspace(1.1,1.9,9) ans = Columns 1 through 7 1.1000 1.2000 1.3000 Columns 8 through 9 1.8000 1.9000 >> A.2.2.2 Vecteurs sp eciaux

1.4000

1.5000

1.6000

1.7000

1.7000

1.9000

1.4000

1.5000

1.6000

1.7000

Les commandes ones, zeros et rand permettent de d enir des vecteurs dont les el ements ont respectivement pour valeurs 0, 1 et des nombres g en er es de mani` ere al eatoire. ones(1,n) ones(m,1) zeros(1,n) zeros(m,1) rand(1,n) rand(m,1) : : : : : : vecteur ligne de longueur n dont tous les el ements valent 1 vecteur colonne de longueur m dont tous les el ements valent 1 vecteur ligne de longueur n dont tous les el ements valent 0 vecteur colonne de longueur m dont tous les el ements valent 0 vecteur ligne de longueur n dont les el ements sont g en er ees de mani` ere al eatoire entre 0 et 1 vecteur colonne de longueur m dont les el ements sont g en er es de mani` ere al eatoire entre 0 et 1 Tab. A.1 Les vecteurs sp eciaux

A.2.3
A.2.3.1

Les matrices
D enir une matrice

On a d ej` a vu que lon d enissait la matrice A =

1 3 en tapant A = [ 1 3; 4 2 ]. 4 2 Dune fa con g en erale, on d enit une matrice en donnant la liste de ses el ements entre crochets. 29

Y. Mor` ere

Initiation Progiciel Matlab

Signalons que Matlab admet dautres fa cons d ecrire les matrices. Les el ements dune ligne de la matrice peuvent etre s epar es au choix par un blanc ou bien par une virgule (,). Les lignes quant ` a elles peuvent etre s epar ees au choix par le point-virgule (;) ou par un retour chariot. Par exemple, on peut aussi ecrire la matrice A de la mani` ere suivante : >> A = [1,3;4,2] A = 1 3 4 2 >> A = [1 3 4 2] A = 1 3 4 2 >> A = [1,3 4,2] A = 1 3 4 2 >> Un el ement dune matrice est r ef erenc e par ses num eros de ligne et de colonne. A(i,j) d esigne le i-i` eme el ement de la j -i` eme ligne de la matrice A. Ainsi A(2,1) d esigne le premier el ement de la deuxi` eme ligne de A, >> A(2,1) ans = 4 >> La commande size permet dobtenir les dimensions dune matrice A donn ee. On peut soit obtenir de mani` ere s epar ee le nombre de lignes et de colonnes par les instructions size(A,1) et size(A,2) respectivement, soit obtenir le nombre m de lignes et le nombre n de colonnes par linstruction [m,n] = size(A). On peut construire tr` es simplement une matrice par blocs. Si A, B , C , D d esignent quatre ma1 3 trices (aux dimensions compatibles), on d enit la matrice bloc, A = par linstruction 4 2 K = [A B ; C D]. Voici un exemple de construction par blocs de la matrice 35 1 6 26 19 24 3 32 7 21 23 25 31 9 2 22 27 20 A= 15 8 28 33 17 10 16 30 5 34 12 14 4 36 29 13 18 11 >> A11 >> A12 >> A21 >> A22 >> B11 B11 = = = = = = [35 1 6; 3 [26 19; 21 [ 8 28 33; [17 10; 12 [ A11 A12; 32 7; 31 9 2]; 23; 22 27]; 30 5 34]; 14]; A21 A22 ]

30

Y. Mor` ere 35 3 31 8 30 >> B12 >> B = >> B21 >> B = B = 35 3 31 8 30 4 >> A.2.3.2 1 6 26 19 32 7 21 23 9 2 22 27 28 33 17 10 5 34 12 14 [ 24 25 20 15 16]; B11 B12]; [ 4 36 29 13 18 11]; B ; B21] 1 32 9 28 5 36 6 7 2 33 34 29 26 21 22 17 12 13 19 23 27 10 14 18 24 25 20 15 16 11

Initiation Progiciel Matlab

= [ = [

Matrices sp eciales

Certaines matrices se construisent tr` es simplement gr ace ` a des commandes d edi ees. Citons les plus utilis ees : eye(n) ones(m,n) zeros(m,n) rand(m,n) : : : : la matrice identit e de dimension n la matrice ` a m lignes et n colonnes dont tous les el ements valent 1 la matrice ` a m lignes et n colonnes dont tous les el ements valent 0 une matrice ` a m lignes et n colonnes dont les el ements sont g en er es de mani` ere al eatoire entre 0 et 1

Signalons que si les entiers m et n sont egaux on peut se contenter de ne sp ecier quune seule valeur de dimension : ones(n) est la matrice carr ee de dimension n dont tous les el ements valent 1. Mentionnons enn la commande magic(n) qui permet dobtenir une matrice magique de dimension n. >> eye(3) ans = 1 0 0 1 0 0 >> ones(3,2) ans = 1 1 1 1 1 1 >> zeros(2) ans = 0 0 0 0 >> rand(2,3) ans = 0.4565

0 0 1

0.8214

0.6154 31

Y. Mor` ere 0.0185 >> magic(6) ans = 35 1 3 32 31 9 8 28 30 5 4 36 >> A.2.3.3 0.4447 0.7919

Initiation Progiciel Matlab

6 7 2 33 34 29

26 21 22 17 12 13

19 23 27 10 14 18

24 25 20 15 16 11

Manipuler des matrices

Le symbole deux-points (:) permet dextraire simplement des lignes ou des colonnes dune matrice. Le j -ieme vecteur colonne de la matrice A est d esign e par A( :,j). Cest simple, il sut de traduire le symbole deux-points ( :) par tout. Ainsi A( :,j) d esigne toutes les lignes et la j -ieme colonne de la matrice A. Bien entendu, la i-ieme ligne de la matrice A est d esign ee par A(i, :). >> A = magic(5) A = 17 24 1 23 5 7 4 6 13 10 12 19 11 18 25 >> A(1, :) ans = 17 24 1 >> A( :,2) ans = 24 5 6 12 18 >>

8 14 20 21 2

15 16 22 3 9

15

Si lon souhaite echanger les colonnes 2 et 3 de la matrice A une premi` ere possibilit e consiste ` a ex ecuter : >> v = A( :,2); A = 17 1 23 7 4 13 10 19 11 25 >> A( :,2) = A( :,3); A( :,3) = v; 24 5 6 12 18 8 14 20 21 2 15 16 22 3 9

On peut egalement extraire plusieurs lignes ou colonnes simultan ement. Si J est un vecteur dentiers, A( :,J) est la matrice issue de A dont les colonnes sont les colonnes de la matrice A 32

Y. Mor` ere

Initiation Progiciel Matlab

dindices contenus dans le vecteur J . De m eme A(J, :) est la matrice issue de A dont les lignes sont les lignes de la matrice A dindices contenus dans le vecteur J . Dune fa con plus g en erale, il est possible de nextraire quune partie des el ements des lignes et colonnes dune matrice. Si L et C sont deux vecteurs dindices, A(L,C) d esigne la matrice issue de la matrice A dont les el ements sont les A(i,j) tels que i soit dans L et j soit dans C . >> A = magic(5) A = 17 24 1 8 23 5 7 14 4 6 13 20 10 12 19 21 11 18 25 2 >> L = [1 3 5]; C = [3 4]; >> A(L,C) ans = 1 8 13 20 25 2 >> A(1 :2 :5,3 :4) ans = 1 8 13 20 25 2 >>

15 16 22 3 9

Dans la derni` ere instruction, on a utilis e la forme sp eciale permettant de d enir un vecteur dont les composantes sont en progression arithm etique. Une seconde possibilit e pour echanger les lignes 2 et 3 de la matrice A consiste ` a ex ecuter : >> J = [1 3 2 4]; A = A( :,J) A = 17 1 24 8 15 23 7 5 14 16 4 13 6 20 22 10 19 12 21 3 11 25 18 2 9 >> Il existe des commandes Matlab permettant de manipuler globalement des matrices. La commande diag permet dextraire la diagonale dune matrice : si A est une matrice, v=diag(A) est le vecteur compos e des el ements diagonaux de A. Elle permet aussi de cr eer une matrice de diagonale x ee : si v est un vecteur de dimension n, A=diag(v) est la matrice diagonale dont la diagonale est v . >> A=eye(3); diag(A) ans = 1 1 1 >> v=[1 :3] 33

Y. Mor` ere v = 1 2 3 >> diag(v) ans = 1 0 0 0 2 0 0 0 3

Initiation Progiciel Matlab

On nest pas oblig e de se limiter ` a la diagonale principale. La commande diag admet un second param` etre k pour d esigner la k sur-diagonale (si k > 0) ou la k sous-diagonale (si k < 0). >> A = [4 5 6 7 ; 3 4 5 6 2 3 4 5; 1 2 3 4] A = 4 5 6 7 3 4 5 6 2 3 4 5 1 2 3 4 >> diag(A,1) ans = 5 5 5 >> diag(A,-2) ans = 2 2 >> On construit ` a laide de la commande diag tr` es simplement des matrices tridiagonales. Par exemple la matrice correspondant ` a la discr etisation par di erences nies du probl` eme de Dirichlet en dimension 1 sobtient ainsi >> N=5; >> A=diag(2*ones(N,1)) - diag(ones(N-1,1),1) - diag(ones(N-1,1),-1) A = 2 -1 0 0 0 -1 2 -1 0 0 0 -1 2 -1 0 0 0 -1 2 -1 0 0 0 -1 2 >> On dispose egalement de la commande tril permet dobtenir la partie triangulaire inf erieure (l pour lower) dune matrice. La commande triu permet dobtenir la partie triangulaire sup erieure (u pour upper) dune matrice. >> A = [ 2 1 1 ; -1 2 1 ; -1 -1 2] A = 2 1 1 -1 2 1 34

Y. Mor` ere -1 -1 >> triu(A) ans = 2 1 0 2 0 0 >> tril(A) ans = 2 0 -1 2 -1 -1 >> 2

Initiation Progiciel Matlab

1 1 2

0 0 2

Comme pour la commande diag, les commandes triu et tril admettent un second param` etre k . On peut ainsi obtenir la partie triangulaire sup erieure (ou inf erieure) ` a partir du k diagonal. Ainsi, >> tril(A,-1) ans = 0 0 -1 0 -1 -1 >> tril(A,1) ans = 2 1 -1 2 -1 -1 >>

0 0 0

0 1 2

On obtient la transpos ee de la matrice A ` a coecients r eels en tapant A. Si la matrice est ` a coecients complexes, A retourne la matrice adjointe de A. >> A = [0 1 2; -1 0 1; -2 -1 0] A = 0 1 2 -1 0 1 -2 -1 0 >> A ans = 0 -1 -2 1 0 -1 2 1 0 >>

A.2.4

La structure Sparse

On appelle matrice creuse (le terme anglais est sparse matrix) une matrice comportant une forte proportion de coecients nuls. De nombreux probl` emes issus de la physique conduisent ` a lanalyse de syst` emes lin eaires ` a matrice creuse. Lint er et de telles matrices r esulte non seulement de la r eduction de la place m emoire (on ne stocke pas les z eros) mais aussi de la r eduction du nombre dop erations (on neectuera pas les op erations portant sur les z eros). Par d efaut dans 35

Y. Mor` ere

Initiation Progiciel Matlab

Matlab une matrice est consid er ee comme pleine (ou full en anglais), cest-` a-dire que tous ses coecients sont m emoris es. Si M est une matrice, la commande sparse(M) permet dobtenir la m eme matrice mais stock ee sous la forme sparse. Si lon a une matrice stock ee sous la forme sparse, on peut obtenir la m eme matrice stock ee sous la forme ordinaire par la commande full. Il est possible de visualiser graphiquement la structure dune matrice gr ace ` a la commande spy. Si M est une matrice, la commande spy(M) ouvre une fen etre graphique et ache sous forme de croix les el ements non-nuls de la matrice. Le num ero des lignes est port e sur laxe des ordonn ees, celui des colonnes en abscisse. On obtient egalement le nombre d el ements non-nuls de la matrice. La commande nnz permet dobtenir le nombre d el ements non-nuls dune matrice. Reprenons lexemple de la matrice tridiagonale issue de la discr etisation par di erences nies du probl` eme de Dirichlet en dimension 1. >> N=5; >> A=diag(2*ones(N,1)) - diag(ones(N-1,1),1) - diag(ones(N-1,1),-1) A = 2 -1 0 0 0 -1 2 -1 0 0 0 -1 2 -1 0 0 0 -1 2 -1 0 0 0 -1 2 >> nnz(A) ans = 13 >> B = sparse(A) B = (1,1) 2 (2,1) -1 (1,2) -1 (2,2) 2 (3,2) -1 (2,3) -1 (3,3) 2 (4,3) -1 (3,4) -1 (4,4) 2 (5,4) -1 (4,5) -1 (5,5) 2 >> whos Name Size Bytes Class A 5x5 200 double array B 5x5 180 sparse array N 1x1 8 double array Grand total is 39 elements using 388 bytes >> spy(A)

Pour les tr` es grosses matrices creuses, il nest bien entendu pas souhaitable dutiliser une structure pleine (full) pour d enir la matrice avant de passer en stockage sparse. La commande sparse permet de d enir une matrice creuse directement sous la forme sparse. On lutilise de la 36

Y. Mor` ere

Initiation Progiciel Matlab

3 nz = 13

Fig. A.2 R esultat de la commande spy(B). fa con suivante : A = sparse(is,js,s,n,m) pour d enir une matrice A ` a n lignes et m colonnes dont les coecients sont nuls (et donc non m emoris es) sauf les el ements ais(l),js(l) qui valent s(l) pour l variant de 1 ` a L longueur du tableau s (L = length(s)). >> N=5; >> s =[2*ones(1,N), -ones(1,N-1), -ones(1,N-1)] s = Columns 1 through 12 2 2 2 2 2 -1 -1 -1 Column 13 -1 >> is = [1 :N,1 :N-1,2 :N] is = Columns 1 through 12 1 2 3 4 5 1 2 3 Column 13 5 >> js = [1 :N,2 :N,1 :N-1] js = Columns 1 through 12 1 2 3 4 5 2 3 4 Column 13 4 >> B = sparse(is,js,s,N,N) B = (1,1) 2 (2,1) -1 (1,2) -1 (2,2) 2 (3,2) -1 37

-1

-1

-1

-1

Y. Mor` ere (2,3) (3,3) (4,3) (3,4) (4,4) (5,4) (4,5) (5,5) >> A = full(B) A = 2 -1 -1 2 0 -1 0 0 0 0 >> -1 2 -1 -1 2 -1 -1 2

Initiation Progiciel Matlab

0 -1 2 -1 0

0 0 -1 2 -1

0 0 0 -1 2

Les commandes spdiags, speye et sprand permettent de construire des matrices diagonales, identit es et des matrices dont les el ements sont des nombres al eatoires avec un stockage sparse. Elles sutilisent de la m eme mani` ere que leur equivalent diag, eye et rand pour les matrices pleines.

A.3
A.3.1

Calculer avec Matlab


Les constantes

Les principales constantes sont : pi I J eps realmin realmax inf NaN : : : : : : : : 3.1415926535897 i2 = - 1 j2 = - 1 pr ecision num erique relative plus petit nombre ` a virgule ottante manipulable plus grand nombre ` a virgule ottante manipulable inni. Est obtenu quand on essaie d evaluer une expression dont le r esultat exc` ede realmax not-a-number. Est obtenu quand on essaie deectuer une op eration nond enie comme 0/0

Les valeurs des constantes eps, realmin et realmax d ependent de la machine sur laquelle Matlab est install e. Par exemple sur un PC avec Windows XP on a eps = 2.2204e-16, realmin = 2.2251e-308 et realmax = 1.7977e+308. Les noms des constantes ne sont pas r eserv es, cest-` a-dire quil est possible de d enir des variables de m eme nom. Dans ce cas, lidenticateur fera r ef erence ` a la variable d enie par lutilisateur et non plus ` a la constante Matlab. On fera attention par exemple, si lon utilise le type complexe, ` a ne pas ecrire de boucles ayant i ou j comme indices. Pour que lidenticateur fasse ` a nouvelle r ef erence ` a la constante Matlab, il sut de supprimer la variable de m eme nom de la m emoire par la commande clear. >> pi = 0; cos(pi) ans = 38

Y. Mor` ere 1 >> clear pi >> cos(pi) ans = -1 >>

Initiation Progiciel Matlab

A.3.2

Op erations et fonctions portant sur les scalaires

Il est bien entendu possible dutiliser Matlab pour faire de simples additions (Si x et y sont deux variables scalaires de type r eel, x+y, x-y, x*y et x/y d esignent les quatre op erations usuelles entre les valeurs de x et y dans R. Si x et y sont deux variables scalaires de type complexe, x + y , x y , x y et x/y d esignent les quatre op erations usuelles entre les valeurs de x et y dans C. Lexponentiation sobtient gr ace au symbole ^ (la syntaxe est x^y). La commande rem donne le reste (remainder ) de la division enti` ere de deux entiers (la syntaxe est rem(m,n)). Les commandes lcm(m,n) et gcd(m,n) retournent respectivement le plus petit multiple commun et le plus grand commun diviseur ` a deux entiers m et n. La commande factor(n) permet dobtenir les termes de la d ecomposition en facteurs premiers de lentier n. Les fonctions math ematiques incorpor ees sont : log(x) log10(x) exp(x) sqrt(x) abs(x) sign(x) : : : : : : logarithme n eperien de x, logarithme en base 10 de x, exponentielle de x, racine carr ee de x (sobtient aussi par x. 0.5), valeur absolue de x, fonction valant 1 si x est positif ou nul et 0 sinon.

Lorsque la fonction est d enie sur le corps des nombres complexes largument peut etre de type complexe. On dispose egalement de fonctions sp eciques aux complexes : conj(z) abs(z) angle(z) real(z) imag(z) : : : : : le conjugu e de z, le module de z, argument de z, partie r eelle de z, partie imaginaire de z.

Les fonctions darrondis sont : round(x) floor(x) ceil(x) fix(x) : : : : entier le plus proche de x, arrondi par d efaut, arrondi par exc` es, arrondi par d efaut un r eel positif et par exc` es un r eel n egatif.

Les fonctions trigonom etriques et hyperboliques sont : 39

Y. Mor` ere cos acos sin asin tan atan cosh acosh sinh asinh tanh atanh : : : : : : : : : : : : cosinus, cosinus inverse (arccos), sinus, sinus inverse (arcsin), tangente, tangente inverse (arctan), cosinus hyperbolique (ch), cosinus hyperbolique inverse (argch), sinus hyperbolique (sh), sinus hyperbolique inverse (argsh), tangente hyperbolique (th), tangente hyperbolique inverse (argth).

Initiation Progiciel Matlab

A.3.3

Op erations et fonctions portant sur les vecteurs

Une particularit e de Matlab est de permettre deectuer des op erations de mani` ere globale sur les el ements dun vecteur de type r eel ou complexe sans avoir ` a manipuler directement ses el ements. Si k est une variable scalaire et x un vecteur, linstruction k*x multiplie tous les el ements de x par k . Si x et y sont deux vecteurs de longueur identique, linstruction z = x+y (respectivement x-y) d enit le vecteur z dont les el ements sont z (i) = x(i) + y (i) (respectivement z (i) = x(i) y (i)). On obtient un vecteur z dont la i-eme composante est le produit (respectivement le quotient) de la i-eme composante du vecteur x par la i-eme composante du vecteur y en eectuant linstruction z = x.*y (respectivement z = x./y). Attention ` a ne pas oublier le point! La commande cross(x,y) permet de calculer le produit vectoriel des deux vecteurs x et y . Il ny a pas dans la version 5.1 de commande d edi ee pour calculer le produit scalaire de deux vecteurs. Il sobtient gr ace ` a linstruction sum(x.*y). Dans les versions suivantes, la commande dot(x,y) permet de calculer le produit scalaire des deux vecteurs x et y . Les fonctions math ematiques incorpor ees d ecrites au paragraphe pr ec edent peuvent etre utilis ees avec un argument qui est un vecteur. La fonction est alors appliqu ee ` a tous les el ements du vecteur en m eme temps. >> x = [1 :10 :100]; y=sqrt(x); y = Columns 1 through 7 1.0000 3.3166 4.5826 5.5678 6.4031 7.1414 7.8102 Columns 8 through 10 8.4261 9.0000 9.5394 >> Il existe egalement quelques fonctions sp eciques aux vecteurs : >> x=[3 1 2]; >> sum(x) ans = 6 >> prod(x) ans = 6 40

Y. Mor` ere sum(x) prod(x) max(x) min(x) mean(x) sort(x) : : : : : : somme des el ements du vecteur x, produit des el ements du vecteur x, plus grand el ement du vecteur x, plus petit el ement du vecteur x, moyenne des el ements du vecteur x, ordonne les el ements du vecteur x par ordre croissant, echange la position des el ements du vecteur x.

Initiation Progiciel Matlab

fliplr(x) : >> max(x) ans = 3 >> min(x) ans = 1 >> sort(x) ans = 1 2 >> fliplr(x) ans = 2 1 >>

Citons enn quelques fonctions logiques. Les commandes all et any servent ` a tester si les el ements dun vecteur sont nuls ou non. Si v est un vecteur de valeurs num eriques, all(v) retourne vrai (1) si tous les el ements du vecteur sont di erents de 0 et faux (0) si au moins un el ement vaut 0. any(v) retourne vrai (1) si au moins un el ement du vecteur est di erent de 0 et faux (0) si le vecteur est compos e exclusivement de 0.

A.3.4

Op erations et fonctions portant sur les matrices

Si les op erandes sont des matrices, les op erations + (addition), - (soustraction), * (multiplication), ^ (exponentiation), sont alors les op erations matricielles usuelles. Ainsi A*B d esigne le produit de la matrice A par la matrice B , A+B d esigne la somme de ces deux matrices et A^2 le carr e de la matrice A. >> A=[1 2 3; 4 5 6] A = 1 2 3 4 5 6 >> B = [1 1; 2 2; 3 3] B = 1 1 2 2 3 3 >> C = A*B C = 14 14 32 32 >> C^2 41

Y. Mor` ere ans = 644 644 1472 1472 >>

Initiation Progiciel Matlab

Si les dimensions des matrices A et B sont incompatibles avec lop eration matricielle, Matlab renvoi un message derreur : >> A+B ??? Error using ==> + Matrix dimensions must agree. >> En plus des op erations matricielles usuelles, il est possible deectuer des op erations entre matrices el ement par el ement. Pour cela, il faut faire pr ec eder lop erateur dun point (.). Ainsi si A et B sont deux matrices de m eme dimension, on obtient la matrice dont le terme dindices (i, j ) est le produit des deux termes dindices (i, j ) des matrices A et B par la commande A.*B. De m eme la commande A.^2 fournit la matrice dont les termes sont les carr es des termes de la matrice A. Bien entendu les commandes A.+B et A+B donnent le m eme r esultat. >> A=[1 2 3; 4 5 6] A = 1 2 3 4 5 6 >> B=[1 2 3; 1 2 3] B = 1 2 3 1 2 3 >> A.*B ans = 1 4 9 4 10 18 >> A.^2 ans = 1 4 9 16 25 36 >> Les fonctions matricielles les plus courantes sont : On peut obtenir les di erentes normes dune matrice A gr ace ` a la commande norm. Ces fonctions matricielles incorpor ees de Matlab peuvent etre utilis ees avec un argument qui est une matrice sparse. Les exceptions sont les fonctions rank, expm et norm qui n ecessitent de passer en stockage full (on ex ecutera donc rank(full(B)) par exemple).

A.3.5

R esolution de syst` emes lin eaires

La commande Matlab \ (backslash ) est la commande g en erique pour r esoudre un syst` eme lin eaire. Lalgorithme mis en oeuvre d epend de la structure de la matrice A du syst` eme. Matlab utilise dans lordre les m ethodes suivantes : Si A est une matrice triangulaire, le syst` eme est r esolu par simple substitution. Si la matrice A est sym etrique ou hermitienne, d enie positive, la r esolution est eectu ee par la m ethode de Choleski. 42

Y. Mor` ere det(A) eig(A) : :

Initiation Progiciel Matlab renvoie le d eterminant de la matrice carr ee A. renvoie les valeurs propres (eigenvalues ) de la matrice carr ee A. Si lon souhaite egalement les vecteurs propres on ex ecutera [V,D] = eig(A) qui renvoie une matrice diagonale D form ee des valeurs propres de A et une matrice V dont les vecteurs colonnes sont les vecteurs propres correspondant. renvoie les coecients du polyn ome caract eristique associ e ` a la matrice carr ee A. On sera vigilant ` a lordre dans lequel sont rang es les coefcients : le premier el ement du vecteur est le coecient du mon ome de plus haut degr e. Ainsi dans lexemple suivant il faut lire p(x) = 3 2 x 6x 72x 27 , >> A = [1 2 3 ; 4 5 6 ; 7 8 0]; p = poly(A) p = 1 -6 -72 -27 renvoie linverse de la matrice carr ee A. renvoie le rang de la matrice carr ee A. renvoie la trace de la matrice A. renvoie lexponentielle matricielle de A. : : : : renvoie la norme 2 de la matrice A. m eme chose que norm(A). norme 1 de la matrice A, ||A||1 = max1j n 1in |aij |. norme inni de la matrice A, ||A|| = max1in 1j n |aij |. norme de Frobenius de la matrice A, ||A||f ro =
1i,j n

poly(A)

inv(A) rank(A) trace(A) expm(A)

: : : :

norm(A) norm(A,2) norm(A,1) norm(A,inf)

norm(A,fro):

|aij |2 .

Si A est une matrice carr ee mais nentrant pas dans les deux cas pr ec edents, une factorisation LU est r ealis ee en utilisant la m ethode d elimination de Gauss avec strat egie de pivot partiel. Si A nest pas une matrice carr ee, la m ethode QR est utilis ee. Dans le cas des matrices stock ees sous forme sparse, des algorithmes particuliers sont mis en oeuvre. Chacune des m ethodes pr ec edentes peut etre utilis ee de mani` ere sp ecique gr ace aux commandes chol, lu, qr. Il est egalement possible dutiliser des m ethodes it eratives. Les commandes cgs, bicg, bicgstab mettent par exemple en oeuvre des m ethodes de type gradient conjugu e. >> A=[1 2 ;3 4]; b=[1 1]; >> x= A$\backslash $b x = -1 1 >> A*x ans = 1 1 >>

A.3.6

Les polyn omes

Sous Matlab le polyn ome de degr e n, p(x) = an xn + an1 xn1 + . . . + a1 x + a0 est d eni par un vecteur p de dimension n + 1 contenant les coecients {ai }{i=0,...,n} rang es dans lordre d ecroissant des indices. Cest-` a-dire que lon a p(1) = an , . . . , p(n + 1) = a0 . La commande 43

Y. Mor` ere

Initiation Progiciel Matlab

polyval permet d evaluer le polyn ome p (la fonction polynomiale) en des points donn es. La syntaxe est polyval(p,x) o` u x est une valeur num erique ou un vecteur. Dans le second cas on obtient un vecteur contenant les valeurs de la fonction polynomiale aux di erents points sp eci es dans le vecteur x. Utilis ee avec la commande fplot, la commande polyval permet de tracer le graphe de la fonction polynomiale sur un intervalle [xmin , xmax ] donn e. La syntaxe de linstruction est : fplot(polyval([ a_n, ..., a_0] , x) , [x_min , x_max]). Voici par exemple comment d enir le polyn ome p(x) = x2 1. Le graphe de la fonction polynomiale est pr esent e` a la gure A.3. >> p = [ 1, 0, -1]; >> polyval(p,0) ans = -1 >> polyval(p,[-2,-1,0,1,2]) ans = 3 0 -1 0 3 >> fplot(polyval([ 1, 0, -1] , x) , [-3,3]), grid

8 7 6 5 4 3 2 1 0 1 3

Fig. A.3 Graphe de la fonction polynomiale p(x) = x2 1. On obtient les racines du polyn ome p gr ace ` a linstruction roots(p). Linstruction poly permet dobtenir la repr esentation canonique p(x) = an xn + an1 xn1 + . . . + a1 x + a0 dun polyn ome de degr e n dont on conna t les n +1 racines {xi }{i=0,...,n} . Les coecients {ai }{i=0,...,n} sont obtenus sous forme dun vecteur p et sont rang es dans lordre d ecroissant des indices. Cest-` a-dire que p(1) = an , . . . , p(n + 1) = a0 . >> r = roots(p) r = -1.0000 1.0000 >> poly(r) 44

Y. Mor` ere ans = 1.0000 >>

Initiation Progiciel Matlab

0.0000

-1.0000

A.4
A.4.1

Les entr ees-sorties


Les formes dachage des r eels

Matlab dispose de plusieurs formats dachage des r eels. Par d efaut le format est le format court ` a cinq chires. Les autres principaux formats sont : format long : format short e : format long e : format long ` a 15 chires. format court ` a 5 chires avec notation en virgule ottante. format long ` a 15 chires avec notation en virgule ottante.

Matlab dispose egalement des formats format short g et format long g qui utilise la meilleure des deux ecritures ` a virgule xe ou ` a virgule ottante. On obtiendra tous les formats dachage possibles en tapant help format. On impose un format dachage en tapant linstruction de format correspondante dans la fen etre de contr ole, par exemple format long. Pour revenir au format par d efaut on utilise la commande format ou format short. >> pi ans = 3.1416 >> format long >> pi ans = 3.14159265358979 >> format short e >> pi\ 3 ans = 3.1006e+01 >> format short g >> pi\ 3 ans = 31.006 >> format short >>

A.4.2

Achage simple, la commande disp

La commande disp permet dacher un tableau de valeurs num eriques ou de caract` eres. Lautre fa con dacher un tableau est de taper son nom. La commande disp se contente dacher le tableau sans ecrire le nom de la variable ce qui peut am eliorer certaines pr esentations. >> A = magic(4); >> disp(A) 16 2 3

13 45

Y. Mor` ere 5 9 4 >> A A = 16 5 9 4 >> 2 11 7 14 3 10 6 15 13 8 12 1 11 7 14 10 6 15 8 12 1

Initiation Progiciel Matlab

On utilise fr equemment la commande disp avec un tableau qui est une cha ne de caract` eres pour acher un message. Par exemple disp(Calcul du d eterminant de la matrice A) On utilise egalement la commande disp pour acher un r esultat. Par exemple : disp([Le d eterminant de la matrice A vaut , num2str(det(A))])

On remarque que lusage de la commande disp est alors un peu particulier. En eet un tableau doit etre dun type donn e, les el ements dun m eme tableau ne peuvent donc etre des cha nes de caract` eres et des valeurs num eriques. On a donc recours ` a la commande num2str (number to string ) pour convertir une valeur num erique en une cha ne de caract` eres. Par d efaut la commande num2str ache quatre d ecimales mais il est possible de lui sp ecier le nombre de d ecimales souhait e en second param` etre. De m eme il est possible de lui sp ecier un format dachage particulier de la valeur num erique; on consultera la documentation Matlab pour plus de d etails. Attention, si la cha ne de caract` eres contient une apostrophe il est imp eratif de doubler lapostrophe.

A.4.3

Lecture

La commande input permet de demander ` a lutilisateur dun programme de fournir des donn ees. La syntaxe est var = input( une phrase ). La phrase une phrase est ach ee et Matlab attend que lutilisateur saisisse une donn ee au clavier. Cette donn ee peut etre une valeur num erique ou une instruction Matlab. Un retour chariot provoque la n de la saisie. Une valeur num erique est directement aect ee ` a la variable var tandis quune instruction Matlab est evalu ee et le r esultat est aect e ` a la variable var. Il est possible de provoquer des sauts de ligne pour a erer le pr esentation en utilisant le symbole\n de la mani` ere suivante : var = input(\n une phrase :\n ). Pensez ` a mettre un point virgule (;) ` a la n de linstruction si vous ne souhaitez pas voir sacher var =. Sous cette forme il est impossible davoir une donn ee de type cha ne de caract` eres dans la mesure o` u Matlab essaie dinterpr eter cette cha ne de caract` eres comme une instruction. Si lon souhaite saisir une r eponse de type cha ne de caract` eres on utilise la syntaxe var = input( une phrase ,s). Signalons quun retour chariot (sans autre chose) initialise la variable var au tableau vide []. Voici un exemple dutilisation de la commande input (on suppose que la variable res contient une valeur num erique). rep = input( Affichage du resultat ? o/n [o] ,s); if isempty(rep), rep = o; end if rep == o | rep == y disp([Le resultat vaut , num2str(res)]) end 46

Y. Mor` ere

Initiation Progiciel Matlab

A.4.4

Impressions dirig ees par format

La commande sprintf permet limpression de variables selon un mod` ele donn e. Un mod` ele d edition se pr esente sous la forme du symbole pourcent (%) suivi dindications permettant de composer le contenu du champ ` a imprimer, en particulier sa longueur en nombre de caract` eres. Le mod` ele d edition utilis e par Matlab est le mod` ele d edition du langage C. La syntaxe de la commande sprintf est : sprintf(format, variables) o` u variables est le nom des variables ` a imprimer suivant le mod` ele d edition sp eci e dans format; format est le format d edition. Il sagit dune cha ne de caract` eres contenant les mod` eles d editions des variables ` a imprimer. A.4.4.1 Mod` ele d edition de caract` eres

Un mod` ele d edition de caract` eres est de la forme %Ls o` u % est le symbole de d ebut de format et s le symbole pr ecisant que la donn ee est de type cha ne de caract` eres. L est un entier donnant la longueur total du champ (en nombre de caract` eres). Par d efaut le champ est justi e` a droite (si la longueur de la cha ne de caract` eres est plus petite que la longueur L du champ, des espaces seront ins er es apr` es la cha ne de caract` eres). Le symbole - (moins) juste apr` es le symbole % permet de justier ` a gauche. En labsence de lentier L la longueur totale du champ est egale au nombre de caract` eres de la cha ne. >> sprintf(%s, il fera beau a Metz) ans = il fera beau a Metz >> temps = il fera beau a Metz; sprintf(%s,temps) ans = il fera beau a Metz >> sprintf(%30s, temps) ans = il fera beau a Metz >> sprintf(%-30s, temps) ans = il fera beau a Metz >> sprintf(meteo : %s, temps) ans = meteo : il fera beau a Metz >> A.4.4.2 Mod` ele d edition des r eels

Un mod` ele d edition de r eel est de la forme %+- L.D t, o` u % est le symbole de d ebut de format, L est un entier donnant la longueur total du champ (en nombre de caract` eres, point virgule compris), D est le nombre de d ecimales ` a acher et t sp ecie le type de notation utilis ee. Par d efaut le champ est justi e` a droite (si la longueur de la variable est plus petite que la longueur du champ L, des espaces sont ins er es ` a gauche). Le symbole - (moins) permet de justier ` a gauche. Le symbole + (plus) provoque lachage syst ematique dun signe + devant les r eels positifs. Les principales valeurs possibles pour t sont les suivantes : 47

Y. Mor` ere d e : : pour les entiers pour une notation ` a virgule ottante o` u la partie exposant est d elimit ee par un e minuscule (ex : 3.1415e+00) m eme notation mais E remplace e (ex : 3.1415E+00) pour une notation ` a virgule xe (ex : 3.1415) la notation la plus compacte entre la notation ` a virgule ottante et la notation ` a virgule xe est utilis ee

Initiation Progiciel Matlab

E f g

: : :

>> x = pi/3; y = sin(x); >> sprintf(sin(%8.6f) = %4.2f, x,y) ans = sin(1.047198) = 0.87 >> sprintf(sin(%8.6f) = %4.2E, x,y) ans = exp(1.047198) = 8.66E-01 >> A.4.4.3 Utilisations particuli` eres

La commande sprintf est vectorielle : si la variable nest pas scalaire le format dimpression est r eutilis e pour tous les el ements du tableau, colonne par colonne. >> x = [1 :10]; >> sprintf( %d ,,x) ans = 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , >> Il est possible dutiliser les symboles suivant dans les cha nes de caract` eres \n \t \b \r : : : : provoque le passage ` a une nouvelle ligne ins` ere une tabulation horizontale d ecale limpression du champ suivant dun caract` ere vers la gauche saut horizontal

>> z =[]; x = [1 :10]; for i=1 :length(x), z = [z ,x(i), log(x(i))]; end; >> s = sprintf(%4.1f | %8.6E \n , z ) ans = 1.0 | 0.000000E+00 2.0 | 6.931472E-01 3.0 | 1.098612E+00 4.0 | 1.386294E+00 5.0 | 1.609438E+00 6.0 | 1.791759E+00 7.0 | 1.945910E+00 8.0 | 2.079442E+00 9.0 | 2.197225E+00 10.0 | 2.302585E+00 >> 48

Y. Mor` ere

Initiation Progiciel Matlab

Si lon a besoin dacher le caract` ere % on le doublera %% pour quil ne soit pas interpr et e comme le d ebut dun format. La commande fprintf est lanalogue de sprintf pour imprimer de variables selon un mod` ele donn e dans un chier.

A.5
A.5.1

Programmer sous Matlab


Scripts et fonctions

Il est possible denregistrer une s equence dinstructions dans un chier (appel e un M-le ) et de les faire ex ecuter par Matlab. Un tel chier doit obligatoirement avoir une extension de la forme .m (do` u le nom M-le ) pour etre consid er e par Matlab comme un chier dinstructions. On distingue deux types de M-le, les chiers de scripts et leschiers de fonctions. Un script est un ensemble dinstructions Matlab qui joue le r ole de programme principal. Si le script est ecrit dans le chier de nom nom.m on lex ecute dans la fen etre Matlab en tapant nom. M eme si lon ne souhaite pas ` a proprement parler ecrire de programme, utiliser un script est tr` es utile. Il est en eet beaucoup plus simple de modier des instructions dans un chier ` a laide dun editeur de texte que de retaper un ensemble dinstructions Matlab dans la fen etre de commande. Les chiers de fonctions ont deux r oles. Ils permettent ` a lutilisateur de d enir des fonctions qui ne gurent pas parmi les fonctions incorpor ees de Matlab (built-in functions) et de les utiliser de la m eme mani` ere que ces derni` eres (ces fonctions sont nomm ees fonctions utilisateur). Ils sont egalement un el ement important dans la programmation dapplications o` u les fonctions jouent le r ole des fonctions et proc edures des langages de programmation usuels. On d enit la fonction fonc de la mani` ere suivante: function [vars_1, ..., vars_m] = fonc(vare_1, ..., vare_n) s equence dinstructions o` u vars_1, ..., vars_m sont les variables de sortie de la fonction; vare_1, ..., vare_n sont les variables dentr ee de la fonction; s equence dinstructions est le corps de la fonction. Le chier doit imp erativement commencer par le mot-cl e function. Suit entre crochets les variables de sortie de la fonction, le symbole =, le nom de la fonction et enn les variables dentr ee entre parenth` eses. Si la fonction ne poss` ede quune seule variable de sortie, les crochets sont inutiles. Il est imp eratif que la fonction ayant pour nom fonc soit enregistr ee dans un chier de nom fonc.m sans quoi cette fonction ne sera pas visible par Matlab. Dans lexemple qui suit, on d enit une fonction modulo qui calcule la valeur de a modulo n en prenant pour syst` eme de r esidus {1, 2, . . . , n} au lieu de {0, 1, . . . , n 1} (syst` eme de r esidus consid er e par la fonction incorpor ee mod). Les lignes qui suivent doivent etre enregistr ees dans un chier de nom modulo.m. function [r,q] = modulo(a,n) % Calcule la valeur de a modulo n en prenant pour systeme de residus % 1, ... , n au lieu de 0, ... , n-1. % % appel : [r,q] = modulo(a,n) % % Arguments de sortie : % r : le residu 49

Y. Mor` ere % q : le quotient

Initiation Progiciel Matlab

q = floor(a./n); r = a - n*q; % si le reste de la division entiere vaut 0, le residu vaut par convention n if r == 0, r = n; end Les lignes pr ec ed ees du symbole % sont des lignes de commentaire. Les lignes de commentaire situ ees entre la ligne function et la 1ere ligne dinstructions sont ach ees si lon demande de laide sur la fonction modulo. >> help modulo Calcule la valeur de a modulo n en prenant pour systeme de residus 1, ... , n au lieu de 0, ... , n-1. appel : [r,q] = modulo(a,n) Arguments de sortie : r : le residu q : le quotient >> Lappel dune fonction utilisateur seectue de la m eme fa con que lappel de nimporte quelle fonction Matlab : >> b = 10 ; m = 4; >> [r,q] = modulo(b,m) r = 2 q = 2 >> modulo(10,5) ans = 5 >> Remarques : Il ny a pas de mot-cl e (par exemple end) pour indiquer la n de la fonction. La fonction est suppos ee se terminer ` a la n du chier. Il est toutefois possible de provoquer un retour au programme appelant dans le corps de la fonction gr ace ` a la commande return. On ne peut ecrire quune seule fonction par chier (qui doit porter le nom de cette fonction). Toutefois dans la version 5 de Matlab existe la notion de sous-fonction. Une sous-fonction est une fonction ecrite dans le m eme chier quune autre fonction (dite principale) et qui ne sera utilisable que par cette fonction principale (une sous-fonction ne peut pas etre appel ee par un autre sous-programme que la fonction principale). Si le chier ne commence pas par le mot-cl e function on a tout simplement ecrit un script! La gestion des variables dentr ee et de sortie est tr` es souple sous Matlab. Si lon nest int eress e que par le r esidu et pas par le quotient, on peut se contenter de ne mettre quune seule variable 50

Y. Mor` ere

Initiation Progiciel Matlab

de sortie, v = modulo(10,4). Dans cet appel la variable v contiendra le r esidu (la premi` ere variable de sortie). Par contre, m eme si lon ne souhaite recueillir que le quotient, on est oblig e deectuer un appel de la forme [r,q] = modulo(10,4) et donc de d enir une variable inutile. Aussi, dune mani` ere g en erale, il est bon de ranger les variables de sortie par ordre dimportance. Il est egalement possible dappeler une fonction donn ee avec moins de variables dentr ee que le nombre indiqu e pour la d enition de la fonction (il faut bien entendu que le corps de la fonction soit programm e de sorte de pr evoir cette eventualit e). Il existe deux fonctions Matlab utiles pour g erer cette situation : nargin qui retourne le nombre de variables dentr ee utilis es lors de lappel et nargout qui retourne le nombre de variables de sortie pr evues lors de lappel. Voici un petit exemple venant illustrer ces possibilit es. function [A,r] = matale(T,m,n) % Construit une matrice A de m lignes et n colonnes ayant des elements % entiers generes de maniere aleatoire entre 0 et T. % Calcule le rang de la matrice si lappel est effectue avec 2 arguments % de sortie. % Si la matrice est carree, le parametre n peut etre omis. % % Appels : % [A,r] = Matale(T,m,n) % [A,r] = Matale(T,m) % A = Matale(T,m,n) % A = Matale(T,m) if nargin == 2 A = fix(T*rand(m)); else A = fix(T*rand(m,n)); end if nargout == 2 r = rank(A); end Dans cet exemple, on g` ere les variables dentr ee de la fonction de sorte de ne pas avoir besoin de donner lors de lappel le nombre de lignes et de colonnes si la matrice est carr ee. On g` ere aussi les variables de sortie an de ne pas calculer le rang de la matrice si aucune variable de sortie pour le r esultat nest pr evue lors de lappel. >> [A,r] = matale(20,3,4) A = 16 13 13 10 10 16 7 14 4 0 16 8 r = 3 >> [A,r] = matale(20,3) A = 51

Y. Mor` ere 12 5 3 r = 3 >> A = matale(20,3) A = 8 7 2 17 16 4 1 0 3 >> 0 14 8 18 9 8

Initiation Progiciel Matlab

Un point important concerne la gestion des variables entre le programme principal (ou le workspace) et les fonctions de lutilisateur. Toutes les variables d enies ` a lint erieur dune fonction sont des variables locales ` a cette fonction. La communication avec des variables du programme principal (ou du workspace) ou avec des variables dautres fonctions se fait uniquement par les variables dentr ee et sortie de la fonction. Une alternative existe toutefois : il est possible de d eclarer certaines variables comme des variables globales. Une variable globale peut etre partag ee entre un programme principal et plusieurs fonctions sans quil soit besoin de la sp ecier parmi les variables dentr ee-sortie des di erentes fonctions. On d eclare une variable globale gr ace au mot cl e global. Par exemple pour d eclarer la variable numex globale on ecrit global numex. Attention, la d eclaration global numex doit etre reprise dans chaque fonction utilisant numex comme variable.

A.5.2

Op erateurs de comparaison et op erateurs logiques

Les op erateurs de comparaison sont : == > < >= <= ~= : : : : : : egal ` a (x == y ) strictement plus grand que (x > y ) strictement plus petit que (x < y) plus grand ou egal ` a (x >= y ) plus petit ou egal ` a (x <= y ) di erent de (x = y )

Les op erateurs logiques sont : & | ~ : : : et (x&y ) ou (x|y ) non ( x)

Les op erateurs de comparaison et les op erateurs logiques sont utilis es essentiellement dans les instructions de contr ole.

A.5.3

Instructions de contr ole

Les instructions de contr ole sous Matlab sont tr` es proches de celles existant dans dautres langages de programmation. 52

Y. Mor` ere A.5.3.1 Boucle FOR : parcours dun intervalle

Initiation Progiciel Matlab

Une premi` ere possibilit e pour ex ecuter une s equence dinstructions de mani` ere r ep et ee consiste ` a eectuer une boucle pour les valeurs dun indice, incr ement e` a chaque it eration, variant entre deux bornes donn ees. Ce processus est mis en oeuvre par la boucle for. Syntaxe : for indice=borne_inf :borne_sup s equence dinstructions end o` u indice est une variable appel ee lindice de la boucle; borne_inf et borne_sup sont deux constantes r eelles (appel ees param` etres de la boucle); s equence dinstructions est le traitement ` a eectuer pour les valeurs dindices variant entre borne_inf et borne_sup avec un incr ement de 1. On parle du corps de la boucle. Interpr etation : Si borne_inf est plus petit ou egal ` a borne_sup, le traitement s equence dinstructions est ex ecut e borne_sup - borne_inf fois, pour les valeurs de la variable indice egales ` a borne_inf, borne_inf+1, ..., borne_sup. Si borne inf est strictement plus grand que borne_sup, on passe ` a linstruction qui suit imm ediatement linstruction de n de boucle end. Remarque : Lindice de boucle ne prend pas n ecessairement des valeurs enti` eres. Dautre part il nest pas n ecessaire que lindice de la boucle apparaisse dans le corps de la boucle; par contre il est interdit de modier sa valeur sil appara t. Il est possible dimbriquer des boucles mais elles ne doivent pas se recouvrir. On peut utiliser un incr ement (pas) autre que 1 (valeur par d efaut). La syntaxe est alors borne_inf : pas : borne_sup. Le pas peut etre n egatif. Attention ` a bien g erer la borne sup erieure! Voici un exemple venant illustrer les possibilit es de variations de lindice de la boucle. >> for r=1.1 :-0.1 :0.75 disp([r = , num2str(r)]); end r = 1.1 r = 1 r = 0.9 r = 0.8 >> Voici un exemple dutilisation dune boucle pour calculer n! (le lecteur attentif sait calculer n! plus simplement, par exemple en ex ecutant prod([1 :n])). >> n = 4; >> nfac = 1; >> for k = 1 :n nfac = nfac*k; end >> nfac nfac = 24 >> 53

Y. Mor` ere A.5.3.2 Boucle WHILE : tant que . . . faire

Initiation Progiciel Matlab

Une seconde possibilit e pour ex ecuter une s equence dinstructions de mani` ere r ep et ee consiste ` a eectuer une boucle tant quune condition reste v eri ee. On arr ete de boucler d` es que cette condition nest plus satisfaite. Ce processus est mis en oeuvre par la boucle while. Syntaxe : while expression logique s equence dinstructions end o` u expression logique est une expression dont le r esultat peut etre vrai ou faux; s equence dinstructions est le traitement ` a eectuer tant que expression logique est vraie. Interpr etation : Tant que expression logique est vraie le traitement s equence dinstructions est ex ecut e sous forme dune boucle. Lorsque expression logique devient faux, on passe ` a linstruction qui suit imm ediatement linstruction de n de boucle end. Remarque : expression logique est en g en eral le r esultat dun test (par exemple i < Imax) ou le r esultat dune fonction logique (par exemple all(x)). Il est imp eratif que le traitement de la s equence dinstructions agisse sur le r esultat de expression logique sans quoi on boucle ind eniment. Voici comment calculer n! avec une boucle while : >> n = 4; >> k = 1; nfac = 1; >> while k <= n nfac = nfac*k; k = k+1; end >> nfac nfac = 24 >> A.5.3.3 Linstruction conditionn ee IF

On a parfois besoin dex ecuter une s equence dinstructions seulement dans le cas o` u une condition donn ee est v eri ee au pr ealable. Di erentes formes dinstruction conditionn ee existent sous Matlab. Linstruction conditionn ee la plus simple a la forme suivante : Syntaxe : If expression logique s equence dinstructions end o` u 54

Y. Mor` ere

Initiation Progiciel Matlab

expression logique est une expression dont le r esultat peut etre vrai ou faux; s equence dinstructions est le traitement ` a eectuer si expression logique est vraie. Interpr etation : La s equence dinstructions nest ex ecut ee que si le r esultat de l evaluation de lexpression logique est vraie (cest-` a-dire vaut 1). Dans le cas contraire on ex ecute linstruction qui suit le mot cl e end. Dans le cas o` u lexpression logique est vraie, apr` es ex ecution de la s equence dinstructions on reprend le programme ` a linstruction qui suit le mot cl e end. Remarque : Contrairement ` a certains langages de programmation, il ny a pas de mot cl e then dans cette instruction conditionn ee. Notez egalement que la marque de n de bloc conditionn e est le mot cl e end et non pas endif. Il existe une s equence conditionn ee sous forme dalternatives : Syntaxe : If expression logique s equence dinstructions 1 else s equence dinstructions 2 end o` u expression logique est une expression dont le r esultat peut etre vrai ou faux; s equence dinstructions 1 est la s equence dinstructions ` a ex ecuter dans le cas o` u expression logique est vraie et s equence dinstructions 2 est la s equence dinstructions ` a ex ecuter dans le cas o` u expression logique est faux. Interpr etation : Si expression logique est vraie la s equence dinstructions 1 est ex ecut ee, sinon cest la s equence dinstructions 2 qui est ex ecut ee. Le d eroulement du programme reprend ensuite ` a la premi` ere instruction suivant le mot cl e end. Il est bien entendu possible dimbriquer des s equences dinstructions conditionn ees (au sens o` u la s equence dinstruction conditionn ee contient des s equences dinstructions conditionn ees). Pour une meilleure lisibilit e, il est recommand e dutiliser des indentations an de mettre en evidence limbrication des s equences dinstructions conditionn ees. Il est possible deectuer un choix en cascade : Syntaxe : If expression logique 1 s equence dinstructions 1 elseif expression logique 2 s equence dinstructions 2 ... elseif expression logique N

55

Y. Mor` ere s equence dinstructions N else s equence dinstructions par d efaut end

Initiation Progiciel Matlab

Interpr etation : Si expression logique 1 est vraie la s equence dinstructions 1 est ex ecut ee et le programme reprend ensuite ` a la premi` ere instruction suivant le mot cl e end, sinon si expression logique 2 est vraie la s equence dinstructions 2 est ex ecut ee et le programme reprend ensuite ` a la premi` ere instruction suivant le mot cl e end, etc. Si aucune des expressions logiques 1 ` a N nest vraie alors s equence dinstructions par d efaut est ex ecut ee. Remarque : Attention ` a ne pas laisser despace entre else et if; le mot cl e est elseif. On utilise fr equemment un choix en cascade lors dinitialisation de donn ees. Par exemple, on initialise une matrice A en fonction de la valeur dune variable numex (num ero dexemple) de la mani` ere suivante : if numex == 1 A = ones(n); elseif numex == 2 A = magic(n); elseif numex == 3 | numex == 4 A = rand(n); else error(numero dexemple non prevu ...); end A.5.3.4 Choix ventil e, linstruction switch

Une alternative ` a lutilisation dune s equence dinstructions conditionn ees pour eectuer un choix en cascade existe. Il sagit de linstruction switch. Syntaxe : switch var case cst_1, s equence dinstructions 1 case cst_2, s equence dinstructions 2 ... case cst_N, s equence dinstructions N otherwise 56

Y. Mor` ere

Initiation Progiciel Matlab

s equence dinstructions par d efaut end o` u var est une variable num erique ou une variable cha ne de caract` eres; cst_1, ..., cst_N, sont des constantes num erique ou des constantes cha ne de caract` eres; s equence dinstructions i est la s equence dinstructions ` a ex ecuter si le contenu de la variable var est egal ` a la constante cst_i (var==cst_i). Interpr etation : Si la variable var est egale ` a lune des constantes cst_1, ..., cst_N, (par exemple cst_i) alors la s equence dinstructions correspondante (ici s equence dinstructions i) est ex ecut ee. Le programme reprend ensuite ` a la premi` ere instruction suivant le mot-cl e end. Si la variable var nest egale ` a aucune des constantes la s equence dinstructions par d efaut est ex ecut ee. Remarque : La variable var doit bien entendu etre du m eme type que les constantes cst_1, ..., cst_N. Il nest pas n ecessaire de pr evoir un cas par d efaut (bien que cela soit pr ef erable). Sil ny a pas de cas par d efaut et si la variable var nest egale ` a aucune des constantes, alors le programme continue ` a la premi` ere instruction suivant le mot-cl e end. Il est possible de regrouper plusieurs cas si la s equence dinstructions ` a ex ecuter est la m eme pour ces di erents cas. La syntaxe est alors, case {cst_k , cst_l , ...} s equence dinstructions commune Reprenons lexemple o` u lon souhaite initialiser une matrice A en fonction de la valeur prise par une variable num erique numex (num ero dexemple). En utilisant un choix ventil e on obtient : function A = initA(n,numex)

switch numex case 1, A = ones(n) case 2, A = magic(n); case {\{}3,4{\}}, A = rand(n); otherwise error(numero dexemple non prevu ...); end Voici un exemple de choix ventil e portant sur une variable de type cha ne de caract` eres. rep = input(Votre reponse (oui, non, chepas) :); switch rep case {oui,o}, disp(bravo ...); case {non,n} disp(perdu ...); 57

Y. Mor` ere case chepas disp(cest pourtant facile ...); end A.5.3.5 Interruption dune boucle de contr ole

Initiation Progiciel Matlab

Il est possible de provoquer une sortie pr ematur ee dune boucle de contr ole. Linstruction break permet de sortir dune boucle for ou dune boucle while. Lex ecution se poursuit alors s equentiellement ` a partir de linstruction suivant le mot cl e end fermant la boucle. En cas de boucles imbriqu ees, on interrompt seulement lex ecution de la boucle int erieure contenant linstruction break. Linstruction return provoque un retour au programme appelant (ou au clavier). Les instructions suivant le return ne sont donc pas ex ecut ees. Linstruction return est souvent utilis ee conjointement avec une instruction conditionn ee par exemple pour tester dans le corps dune fonction si les param` etres dentr ee ont les valeurs attendues. Linstruction error permet darr eter un programme et dacher un message derreur. La syntaxe est error( message derreur ). Linstruction warning permet dacher un message de mise en garde sans suspendre lex ecution du programme. La syntaxe est warning( message de mise e Il est possible dindiquer ` a Matlab de ne pas acher les messages de mise en garde dun programme en tapant warning off dans la fen etre de commandes. On r etablit lachage en tapant warning on. On peut ainsi am eliorer la fonction matale de la mani` ere suivante : function [A,rang] = matale(T,m,n) % Construit une matrice A de m lignes et n colonnes ayant des elements % entiers generes de maniere aleatoire entre 0 et T. % Calcule le rang de la matrice si lappel est effectue avec 2 arguments % de sortie. % Si la matrice est carree, le parametre n peut etre omis. % % Appels : % [A,r] = Matale(T,m,n) % [A,r] = Matale(T,m) % A = Matale(T,m,n) % A = Matale(T,m) % si la fonction est appelee avec un nombre darguments dentree % different de 2 ou 3, on arrete tout ... if nargin $\sim $= 2 {\&} nargin $\sim $= 3, error( La fonction matale doit avoir 2 ou 3 arguments dentree ); end if nargin == 2 A = fix(T*rand(m)); else A = fix(T*rand(m,n)); end if nargout == 2 58

Y. Mor` ere

Initiation Progiciel Matlab

rang = rank(A); if nargin == 2, rangx = m; else rangx = min([m,n]); end if rang $\sim $= rangx, warning( Le rang nest pas maximum ); end; end On obtient alors les messages suivants : >> A = matale(3); ??? Error using ==> matale La fonction matale doit avoir 2 ou 3 arguments dentree >> A = matale(20,3) A = 8 18 8 12 14 18 15 3 18 >> [A,r] = matale(20,3) Warning : Le rang nest pas maximum > In /home0/maths/balac/DOCMATLAB/matale.m at line 34 A = 1 4 3 10 15 11 3 12 9 r = 2 >> La commande pause permet dinterrompre lex ecution du programme. Lex ecution normale reprend d` es que lutilisateur enfonce une touche du clavier. Linstruction pause(n) suspend lex ecution du programme pendant n secondes.

A.5.4

Un exemple complet

Une technique de construction de carr es magiques dordre impair a et e propos ee par Manuel Moschopoulos au d ebut du XIV si` ecle. Cette technique est d ecrite dans [Histoire dAlgorithmes, du caillou ` a la puce, J.L. Chabert editeur, Belin 1994]. Notons l(x) le num ero de la ligne et c(x) le num ero de la colonne du carr e sur lequel se trouve lentier x. Partant dun carr e dordre impair n = 2k + 1, la technique de Moschopoulos peut se formuler comme suit : Initialisation de lalgorithme en pla cant lunit e dans la case imm ediatement au dessous de la case centrale, autrement dit ` a lintersection de la (k + 1) eme colonne et de la (k + 2)` eme ligne: l(1) = k + 2 c(1) = k + 1 59

Y. Mor` ere

Initiation Progiciel Matlab

Connaissant la position (l(x), c(x)) de lentier x, on place lentier x + 1 suivant les r` egles suivantes : si x nest pas un multiple de n, alors l(x + 1) = 1 + l(x)modulo(n) c(x + 1) = 1 + c(x)modulo(n) si x est un multiple de n, alors l(x + 1) = 2 + l(x)modulo(n) c(x + 1) = c(x)modulo(n) Dans ces r` egles pour la prise du modulo, le syst` eme de r esidus que lon consid` ere est 1, 2, ..., n et non pas 0, 1, ..., n 1. La fonction magik met en oeuvre la m ethode de Moschopoulos. function M = magik(n) % % Calcule le carre magique dordre n selon la methode % de Moschopoulous. % % Entree : % n : ordre du carre (entier impair) % Sortie : % M : le carre magique % if rem(n,2) == 0, msg = [la methode de Moschopoulous ne construit que des carres ... , dordre impair]; error(msg) end k = (n-1)/2; l(1) = k+2; c(1) = k+1; M(l(1),c(1)) = 1; for x = 2 :n.\ 2 [l(x),c(x)] = pos(x-1,l(x-1),c(x-1),n); M(l(x),c(x)) = x; % ou plus simplement M(pos(x,l(x-1),c(x-1))) = x; end La fonction utilise la fonction pos. Cette derni` ere fonction peut soit etre ecrite ` a la suite de la fonction magik si lon dispose de la version 5 de Matlab (dans ce cas il sagira dune sousfonction qui ne sera visible que de la fonction magik) soit etre sauvegard ee dans un chier pos.m. function [ly,cy] = pos(x,lx,cx,n) % % Retourne la position (indice de ligne ly et indice de colonne cy) 60

Y. Mor` ere

Initiation Progiciel Matlab

% % % % % % % % % % % % %

dans le carre magique dordre n de lentier y = x+1 selon la regle de Moschopoulous. Entree : n : ordre du carre (entier impair) x : lentier considere lx : indice de ligne de lentier x dans le carre magique cx : indice de colonne de lentier x dans le carre magique Sortie : ly : indice de ligne de lentier y=x+1 dans le carre magique cy : indice de colonne de lentier y=x+1 dans le carre magique

if rem(x,n) == 0 ly = modulo(2+lx,n); cy = modulo(cx,n); else ly = modulo(1+lx,n); cy = modulo(1+cx,n); end Voici quelques exemples dutilisation de la fonction magik. On v erie que la somme des el ements des di erentes lignes ainsi que la somme des el ements des di erentes colonnes sont bien constantes. Pour calculer la somme des el ements diagonaux cest un peu plus compliqu e. On remarque que le carr e magique construit di` ere du carr e magique retourn e par la fonction Matlab incorpor ee magic. >> magik(4) ??? Error using ==> magik la methode de Moschopoulous ne construit que des carres dordre impair >> magik(5) ans = 11 24 7 4 12 25 17 5 13 10 18 1 23 6 19 >> sum(magik(5),1) ans = 65 65 65 >> sum(magik(5),2) ans = 65 65 65 65 65

20 8 21 14 2

3 16 9 22 15

65

65

61

Y. Mor` ere >> magic(5) ans = 17 24 23 5 4 6 10 12 11 18

Initiation Progiciel Matlab

1 7 13 19 25

8 14 20 21 2

15 16 22 3 9

A.6
A.6.1

Graphisme
Gestion des fen etres graphiques

Une instruction graphique ouvre une fen etre dans laquelle est ach e le r esultat de cette commande. Par d efaut, une nouvelle instruction graphique sera ach ee dans la m eme fen etre et ecrasera la gure pr ec edente. On peut ouvrir une nouvelle fen etre graphique par la commande figure. Chaque fen etre se voit aecter un num ero n. Ce num ero est visible dans le bandeau de la fen etre sous forme dun titre. Le r esultat dune instruction graphique est par d efaut ach e dans la derni` ere fen etre graphique ouverte qui est la fen etre graphique active. On rend active une fen etre graphique pr ec edemment ouverte en ex ecutant la commande figure(n), o` u n d esigne le num ero de la gure. La commande close permet de fermer la fen etre graphique active. On ferme une fen etre graphique pr ec edemment ouverte en ex ecutant la commande close(n), o` un d esigne le num ero de la gure. Il est egalement possible de fermer toutes les fen etres graphiques en tapant close all. La gure repr esente la fen etre graphique num ero 1 o` u est ach e le graphe de la fonction cosinus entre 0 et2 , r esultat de la commande fplot(cos,[0 2*pi]). Lapparence de la fen etre graphique peut varier l eg` erement suivant le syst` eme informatique utilis e.

1 0.8 0.6 0.4 0.2 0 0.2 0.4 0.6 0.8 1

Fig. A.4 Fen etre graphique et r esultat de la commande fplot(cos,[0 2*pi])

62

Y. Mor` ere

Initiation Progiciel Matlab

A.6.2
A.6.2.1

Graphisme 2D
Tracer le graphe dune fonction ; la commande fplot

La commande fplot permet de tracer le graphe dune fonction sur un intervalle donn e. La syntaxe est : fplot(nomf, [x_min , x_max]) o` u nomf est soit le nom dune fonction Matlab incorpor ee, soit une expression d enissant une fonction de la variable x, soit le nom dune fonction utilisateur. [x_min ,x_max] est lintervalle pour lequel est trac e le graphe de la fonction. Illustrons par des exemples les trois fa cons dutiliser la commande fplot. On obtient le graphe de la fonction incorpor ee sinus entre 2 et 2 par linstruction : fplot(sin,[-2*pi 2*pi]) Pour tracer le graphe de la fonction h(x) = x sin(x) entre 2 et2 , on peut d enir la fonction utilisateur h dans le chier h.m de la mani` ere suivante (attention de bien lire x.*sin(x) et non pas x*sin(x)) : function y=h(x) y=x.*sin(x); On obtient alors le graphe de la fonction h par linstruction : fplot(h, [-2*pi 2*pi]) Lautre fa con de proc eder est dex ecuter linstruction (l` a on a le choix entre ecrire x.*sin(x) ou x*sin(x)) : fplot(x*sin(x), [-2*pi 2*pi]) Dans les deux cas on obtient le dessin repr esent e` a la gure A.5.

Il est possible de tracer plusieurs fonctions sur la m eme gure. Il faut pour cela utiliser la commande fplot de la mani` ere suivante : fplot([nomf_1 , nomf_2 , nomf_3], [x_min , x_max]) o` u nomf_1, nomf_2, nomf_3 est soit le nom dune fonction Matlab incorpor ee, soit une expression d enissant une fonction de la variable x, soit le nom dune fonction utilisateur. Il est egalement possible de g erer les bornes des valeurs en ordonn ees. Pour limiter le graphe aux ordonn ees comprises entre les valeurs y_min et y_max on passera comme second argument de la commande fplot le tableau [x_min, x_max, y_min, y_max]. Une autre possibilit e pour g erer les bornes des valeurs en ordonn ees est dutiliser la commande axis apr` es utilisation de la commande fplot. La syntaxe est axis([x_min, x_max, y_min, y_max]). Voici un exemple dont le r esultat est ach e` a la gure A.6 : >> fplot([sin(x)/x , cos(x)/x], [-5, 5, -1, 1]) On comprend tr` es vite lint er et de g erer les bornes des valeurs en ordonn ees si lon ex ecute la commande fplot(cos(x)/x, [-5, 5]) pour tracer le graphe de la fonction cos(x)/x entre 5 et 5. La gure, qui nest pas vraiment esth etique, nest pas reproduite ici.

63

Y. Mor` ere

Initiation Progiciel Matlab

Fig. A.5 Graphe de la fonction h(x) = xsinx entre 2 et 2

1 0.8 0.6 0.4 0.2 0 0.2 0.4 0.6 0.8 1 5

Fig. A.6 Graphe des fonctions cos(x)/x et sin(x)/x entre 5 et 5.

64

Y. Mor` ere A.6.2.2 La commande plot

Initiation Progiciel Matlab

La commande plot permet de tracer un ensemble de points de coordonn ees (xi , yi ), i = 1, ..., N . La syntaxe est plot(x,y) o` u x est le vecteur contenant les valeurs xi en abscisse et y est le vecteur contenant les valeurs yi en ordonn ee. Bien entendu les vecteurs x et y doivent etre de m eme dimension mais il peut sagir de vecteurs lignes ou colonnes. Par d efaut, les points (xi , yi ) sont reli es entre eux par des segments de droites. Voici par exemple une autre fa con de tracer le graphe de la fonction h(x) = xsin(x) entre 2 et 2 , >> x=[-2*pi :0.01 :2*pi]; y = x.*sin(x); >> plot(x,y) Essayez aussi : >> x=[-2*pi :1 :2*pi]; y = x.*sin(x); >> plot(x,y) Dans cet exemple on a d eni un vecteur x de valeurs equi-r eparties entre 2 et2 (avec un pas de 0.01 dans le premier cas et de 1 dans le deuxi` eme cas) et on a calcul e limage par la fonction h de ces valeurs (vecteur y ). On ache les points de coordonn ees (x(i), y (i)). On peut sp ecier ` a Matlab quelle doit etre la couleur dune courbe, quel doit etre le style de trait et/ou quel doit etre le symbole ` a chaque point (xi , yi ). Pour cela on donne un troisi` eme param` etre dentr ee ` a la commande plot qui est une cha ne de 3 caract` eres de la forme cst avec c d esignant la couleur du trait, s le symbole du point et t le type de trait. Les possibilit es sont les suivantes : y m c r g b w k ^ < > p h jaune magenta cyan rouge vert bleu blanc noir triangle (haut) triangle (gauche) triangle (droit) pentagone hexagone . o x + * s d v point cercle marque x plus etoile carr e losange triangle (bas) : -. trait plein pointill e court pointill e long pointill e mixte

Les valeurs par d efaut sont c = b, s = . et t = - ce qui correspond ` a un trait plein bleu reliant les points entre eux. Il nest pas obligatoire de sp ecier chacun des trois caract` eres. On peut se contenter den sp ecier un ou deux. Les autres seront les valeurs par d efaut. La commande grid permet dobtenir un quadrillage de la gure, voir par exemple la gure A.6. Il est possible de tracer plusieurs courbes sur la m eme gure en sp eciant plusieurs tableaux x1, y1, x2, y2, ..., comme param` etres de la commande plot. Si lon souhaite que les courbes aient une apparence di erente, on utilisera des options de couleurs et/ou de styles de traits distincts apr` es chaque couple de vecteurs x, y . Voici un exemple dont le r esultat est ach e` a la gure A.7. On trace sur lintervalle [5, 5] la fonction x2 cos(x) en trait plein bleu et la fonction x cos(x) en trait pointill e rouge. 65

Y. Mor` ere >> x = [-5 :0.01 :5]; >> y = x.^2.*cos(x); z = x.*cos(x); >> plot(x,y,b-,x,z,r :);

Initiation Progiciel Matlab

8 6 4 2 0 2 4 6 8 10 12 5

Fig. A.7 R esultat de la commande plot(x,y,b-,x,z,r :).

Voici un autre exemple amusant (la commande whitebg permet de passer la fen etre graphique en inverse vid eo). >> N=200; >> x = rand(1,N); y = rand(1,N); >> plot(x,y,bd), whitebg A.6.2.3 La commande loglog

Si x et y sont deux vecteurs de m eme dimension, la commande loglog (x, y ) permet dacher le vecteur log (x) contre le vecteur log (y ). La commande loglog sutilise de la m eme mani` ere que la commande plot. Voici un exemple dont le r esultat est ach e` a la gure A.8. Quelle est la pente de la droite? >> x = [1 :10 :1000]; y = x.^3; >> loglog(x,y)

A.6.3
A.6.3.1

Am eliorer la lisibilit e dune gure


L egender une gure

Il est recommand e de mettre une l egende ` a une gure. La commande xlabel permet de mettre un texte en l egende sous laxe des abscisses. La syntaxe est xlabel( l egende ) pour obtenir le mot l egende en l egende. La commande ylabel fait de m eme pour laxe des ordonn ees. La commande title permet de donner un titre ` a la gure. La syntaxe est title( le titre) pour obtenir comme titre le titre. On peut aussi ecrire un texte donn e` a une position pr ecise 66

Y. Mor` ere

Initiation Progiciel Matlab

10

10

10

10

10

10

10

10

10

10

10

Fig. A.8 R esultat de la commande loglog(x,y). sur la gure gr ace ` a la commande text. La syntaxe est text(posx,posy, un texte ) o` u posx et posy sont les coordonn ees du point (dans le syst` eme associ e au dessin) o` u doit d ebuter l ecriture du texte un texte. La commande gtext permet quant ` a elle de placer le texte ` a une position choisie sur la gure ` a laide de la souris. La syntaxe est gtext( un texte ). Une mire, que lon d eplace en utilisant la souris, appara t. Il sut dun clic-souris pour que le texte apparaisse ` a la position s electionn ee. Il est possible avec ces commandes dacher une valeur contenue dans une variable au milieu de texte. Pour cela on construit un tableau de type cha ne de caract` eres en convertissant la valeur contenue dans la variable en une cha ne de caract` eres gr ace ` a la commande num2str. Par exemple, supposons que la variable numex contienne le num ero de lexemple trait e, disons 5. On obtiendra pour titre de la gure Exemple numero 5 par linstruction : title([Exemple numero , num2str(numex)]). Lexemple suivant dont le r esultat est ach e` a la gure A.9 illustre lutilisation des di erentes commandes permettant de l egender une gure. >> >> >> >> >> >> >> P = 5; t = [0 :.01 :2]; c = 12*exp(-2*t) - 8*exp(-6*t); plot(t,c); grid xlabel(temps en minutes) ylabel(concentation en gramme par litre) title([evolution de la concentration du produit , num2str(P), ... au cours du temps ]) >> gtext(concentration maximale)

A.6.3.2

Acher plusieurs courbes dans une m eme fen etre

Il est possible dacher plusieurs courbes dans une m eme fen etre graphique gr ace ` a la commande hold on. Les r esultats de toutes les instructions graphiques ex ecut ees apr` es appel ` a la commande hold on seront superpos es sur la fen etre graphique active. Pour r etablir la situation 67

Y. Mor` ere

Initiation Progiciel Matlab

evolution de la concentration du produit 5 au cours du temps 6 concentration maximale

5
concentation en gramme par litre

0.2

0.4

0.6

0.8 1 1.2 temps en minutes

1.4

1.6

1.8

Fig. A.9 Exemple de l egende dune gure. ant erieure (le r esultat dune nouvelle instruction graphique remplace dans la fen etre graphique le dessin pr ec edent) on tapera hold off. Voici un exemple dutilisation de la commande hold on. Le r esultat est pr esent e` a la gure A.10. >> >> >> >> >> >> >> >> e = exp(1); figure hold on fplot(exp,[-1 1]) fplot(log,[1/e e]) plot([-1 :0.01 :e],[-1 :0.01 :e]) grid hold off

3 2.5

1.5

0.5

0.5

0.5

1.5

2.5

Fig. A.10 Superposition de plusieurs courbes dans la m eme fen etre graphique.

68

Y. Mor` ere

Initiation Progiciel Matlab

On dispose donc de deux fa cons de superposer plusieurs courbes sur une m eme gure. On peut soit donner plusieurs couples de vecteurs abscisses/ordonn ees comme argument de la commande plot, soit avoir recours ` a la commande hold on. Suivant le contexte on privil egiera lune de ces solutions plut ot que lautre. Il est possible de d ecomposer une fen etre en sous-fen etres et dacher une gure di erente sur chacune de ces sous-fen etres gr ace ` a la commande subplot. La syntaxe est : subplot(m,n,i) o` u m est le nombre de sous-fen etres verticalement; n est le nombre de sous-fen etres horizontalement; i sert ` a sp ecier dans quelle sous-fen etre doit seectuer lachage. Les fen etres sont num erot ees de gauche ` a droite et de haut en bas. Lexemple suivant dont le r esultat appara t ` a la gure A.11 illustre lutilisation de la commande subplot. >> figure >> subplot(2,3,1), >> subplot(2,3,2), >> subplot(2,3,3), >> subplot(2,3,4), >> subplot(2,3,5), >> subplot(2,3,6), grid >> fplot(cos,[0 4*pi]), title(cosinus), grid fplot(sin,[0 4*pi]), title(sinus), grid fplot(tan,[-pi/3 pi/3]), title(tangente), grid fplot(acos,[-1 1]), title(arc-cosinus), grid fplot(asin,[-1 1]), title(arc-sinus), grid fplot(atan,[-sqrt(3) sqrt(3)]), title(arc-tangente),

cosinus 1 0.5 0 0.5 1 1 0.5 0 0.5 1

sinus 2 1 0 1 2 1

tangente

10

5 arcsinus

10

0 arctangente

arccosinus 4 3 2 1 0 1 2 1 0 1 2 1

2 1 0 1 2

Fig. A.11 Fen etre graphique d ecompos ee en sous fen etres.

A.6.3.3

Sauvegarder une gure

La commande print permet de sauvegarder la gure dune fen etre graphique dans un chier sous divers formats dimages. La syntaxe de la commande print est : print -f<num> -d<format> <nomfic> 69

Y. Mor` ere

Initiation Progiciel Matlab

o` u <num> d esigne le num ero de la fen etre graphique. Si ce param` etre nest pas sp eci e, cest la fen etre active qui est prise en compte. <nomfic> est le nom du chier dans lequel est sauvegard ee la gure. Si aucune extension de nom nest donn ee, une extension par d efaut est ajout ee au nom du chier en fonction du format choisi (.ps pour du PostScript, .jpg pour du jpeg, par exemple). <format> est le format de sauvegarde de la gure. Ces formats sont nombreux. On pourra obtenir la liste compl` ete en tapant help plot. Les principaux sont : ps psc eps epsc jpeg tiff : : : : : : PostScript noir et blanc PostScript couleur PostScript Encapsul e noir et blanc PostScript Encapsul e couleur Format dimage JPEG Format dimage TIFF

A.6.4
A.6.4.1

Graphisme 3D
Tracer les lignes de niveau dune fonction de deux variables

La commande contour permet de tracer les lignes de niveau dune fonction de deux variables r eelles. Cette fonction peut etre d enie par une expression Matlab (par exemple x.*exp(-x.^2-y.^2)), ou etre d enie comme une fonction utilisateur. Pour tracer les lignes de niveau de la fonction g (x, y ) pour xmin < x < xmax et ymin < y < ymax on proc` ede de la mani` ere suivante : cr eation dun maillage, de maille de longueur h, du domaine [xmin , xmax ] [ymin , ymax ] gr ace ` a la commande meshgrid : [X,Y] = meshgrid(x_min :h :x_max, y_min :h :y_max) evaluation de la fonction aux noeuds de ce maillage, soit par appel ` a la fonction utilisateur d enissant la fonction : Z = g (X, Y ) soit directement en d enissant la fonction par une expression Matlab. Achage des lignes de niveau gr ace ` a la commande contour : contour(X,Y,Z). Ainsi pour tracer les lignes de niveau de la fonction f (x, y ) = xe(x2+y2) sur le domaine [2, 2] [2, 2] en prenant un maillage de maille de longueur h = 0.2, on ex ecute : >> [X,Y] = meshgrid(-2 :.2 :2, -2 :.2 :2); >> Z = X.*exp(-X.^2-Y.^2); >> contour(X,Y,Z) On peut egalement ecrire une fonction utilisateur g.m, function x3 = g(x1,x2) x3 = x1.*exp(-x1.\ 2-x2.\ 2); et ex ecuter >> [X,Y] = meshgrid(-2 :.2 :2, -2 :.2 :2); >> Z = g(X,Y); >> contour(X,Y,Z) Dans les deux cas on obtient le r esultat pr esent e` a la gure A.12. 70

Y. Mor` ere

Initiation Progiciel Matlab

2 1.5 1

0.5 0

0.5 1

1.5 2 2

1.5

0.5

0.5

1.5

Fig. A.12 Exemple de visualisation des lignes de niveau par la commande contour.

Le nombre de lignes de niveau est d etermin e de mani` ere automatique ` a partir des valeurs extr emes prises par la fonction sur le domaine consid er e. Pour imposer le nombre n de lignes de niveau ` a acher, il sut dappeler la fonction contour avec la valeur n comme quatri` eme param` etre, contour(X,Y,Z,n). Il existe deux mani` eres dacher les valeurs des lignes de niveau sur la gure. Si lon souhaite acher les valeurs pour toutes les lignes de niveau, on utilise la commande clabel de la mani` ere suivante : >> [C,h] = contour(X,Y,Z,n) >> clabel(C,h) Si lon souhaite acher uniquement les valeurs de quelques lignes de niveau, on utilise la commande clabel de la mani` ere suivante : >> [C,h] = contour(X,Y,Z,n) >> clabel(C,h,manual) On peut alors gr ace ` a la souris s electionner les lignes de niveau pour lesquelles on souhaite acher la valeur. Ainsi pour tracer 30 lignes de niveau de la fonction z = (x 1)2 +10(x2 y )2 sur le domaine [1, 1] [1, 1] et pour choisir ` a laide de la souris les lignes de niveau pour lesquelles liso valeur doit etre ach ee, on ex ecute : >> >> >> >> [X,Y] = meshgrid(-2 :.2 :2, -2 :.2 :2); Z = (X-1).^2 + 10*(X.^2-Y).^2; [C,h] = contour(X,Y,Z,30); clabel(C,h,manual)

Le r esultat est pr esent e` a la gure ??.

71

Y. Mor` ere

Initiation Progiciel Matlab

2 1.5 1
12.72 41

0.5 0

0.5

12
1

.7

24

25

1.5 2 2

.44

83

1.5

0.5

0.5

1.5

Fig. A.13 Exemple de visualisation des lignes de niveau par la commande contour. Il est possible de modier la palette des couleurs en utilisant la commande colormap. En tapant help graph3d dans la fen etre de contr ole Matlab, vous obtiendrez toutes les palettes de couleurs disponibles. A vous de les tester pour obtenir le meilleur eet (La commande colormap(gray) permet dutiliser une palette en d egrad e de gris, ce qui est tr` es utile si lon souhaite une impression de la gure sur une imprimante noir et blanc. La commande contourf sutilise de la m eme mani` ere que la commande contour. Elle permet dacher, en plus des lignes de niveau, un d egrad e continu de couleurs qui varie en fonction des valeurs prises par la fonction. La gure A.14 pr esente un exemple dutilisation de la commande contourf obtenu de la mani` ere suivante : >> >> >> >> [X,Y] = meshgrid(-2 :.2 :2, -2 :.2 :2); Z = (X-1).^2 + 10*(X.^2-Y).^2; contourf(X,Y,Z,30); colormap(cool);

A.6.4.2

Repr esenter une surface d equation z = g (x, y )

La commande mesh permet de tracer une surface d equation z = g (x, y ). La fonction g peut etre d enie directement par une expression Matlab ou etre d enie comme une fonction utilisateur. Pour tracer la surface d equation z = g (x, y ) pour xmin < x < xmax et ymin < y < ymax on proc` ede de la mani` ere suivante : cr eation dun maillage, de maille de longueur h, du domaine [xmin , xmax ] [ymin , ymax ] gr ace ` a la commande meshgrid : [X,Y] = meshgrid(x_min :h :x_max, y_min :h :y_max). evaluation de la fonction aux noeuds de ce maillage, soit par appel ` a la fonction utilisateur d enissant la fonction : Z = g (X, Y ) soit directement en d enissant la fonction par dune expression Matlab. Achage de la surface gr ace ` a la commande mesh : mesh(X,Y,Z). 72

Y. Mor` ere

Initiation Progiciel Matlab

2 1.5 1

0.5 0

0.5 1

1.5 2 2

1.5

0.5

0.5

1.5

Fig. A.14 Exemple de visualisation des lignes de niveau par la commande contourf. Ainsi pour tracer la surface d equation z = xe(x2+y2) sur le domaine [2, 2] [2, 2] avec un maillage de maillage de longueur h = 0.2, on ex ecute : >> [X,Y] = meshgrid(-2 :.2 :2, -2 :.2 :2); >> Z = X.*exp(-X.^2-Y.^2); >> mesh(X,Y,Z) Si la fonction est d enie comme une fonction utilisateur dans le chier g.m, function x3 = g(x1,x2) x3 = x1.*exp(-x1.^2-x2.^2); on ex ecute : >> [X,Y] = meshgrid(-2 :.2 :2, -2 :.2 :2); >> Z = g(X,Y); >> contour(X,Y,Z) Dans les deux cas on obtient le r esultat pr esent e gure ??.

Par d efaut les valeurs extr emes en z sont d etermin ees automatiquement ` a partir des extremums de la fonction sur le domaine sp eci e. Il est possible de modier ces valeurs (et egalement les valeurs extr emes en abscisses et ordonn ees) par la commande axis dont la syntaxe est axis(x_min x_max y_min y_max z_min z_max)

Il est egalement possible de modier le point de vision gr ace ` a la commande view. La commande view a deux arguments qui sont langle de vision horizontal et langle de vision vertical en degr e. Par d efaut ces angles ont respectivement les valeurs 37.5 et 30 . La gure A.17 montre par exemple le r esultat de linstruction view(37.5,30). 73

Y. Mor` ere

Initiation Progiciel Matlab

0.5

0.5 2 1 0 1 2 2 0 1 1 2

Fig. A.15 Exemple de visualisation dune surface d equation z = g (x, y ) gr ace ` a la commande mesh.

2 2 1 0 1 2 2 0 1 1 2

Fig. A.16 Exemple dutilisation de la commande axis.

74

Y. Mor` ere

Initiation Progiciel Matlab

0.5

0.5 2 1 0 1 2 2 1 0

2 1

Fig. A.17 Exemple de modication de langle de vision par la commande view.

Les commandes meshc et meshz sutilisent de la m eme mani` ere que la commande mesh. La commande meshc permet dacher des lignes de niveau sous la surface dans le plan z = zmin . La commande meshz permet de tracer une boite sous la surface. Un exemple dutilisation de ces commandes est pr esent e aux gures A.18 et A.19 respectivement.

A.6.4.3

Repr esenter une surface param etr ee

La commande surf permet de tracer une surface param etr ee d equations, x = g1 (u, v ) y = g2 (u, v ) (E ) = z = g3 (u, v ) La fonction G = (g1 , g2 , g3 ) peut etre d enie directement par une expression Matlab ou etre d enie comme une fonction utilisateur. Pour tracer la surface param etr ee d equation (E ) pour umin < u < umax et vmin < v < vmax on proc` ede de la mani` ere suivante : cr eation dun maillage, de maille de longueur h, du domaine [xmin , xmax ] [ymin , ymax ] gr ace ` a la commande meshgrid : [U,V] = meshgrid(u_min :h :u_max, v_min :h :v_max) evaluation de la fonction aux noeuds de ce maillage, soit par appel ` a la fonction utilisateur d enissant la fonction : [X,Y,Z] = G(U,V) soit directement en d enissant la fonction par une expression Matlab. Achage de la surface gr ace ` a la commande surf : surf(X,Y,Z). Ainsi pour tracer la surface param etr ee d equations : x = v cos u y = v sin u (E ) = z = 2u 75

Y. Mor` ere

Initiation Progiciel Matlab

0.5

0.5 2 1 0 1 2 2 0 1 1 2

Fig. A.18 Exemple de visualisation dune surface d equation z = g (x, y ) gr ace au commandes meshc.

0.5

0.5 2 1 0 1 2 2 0 1 1 2

Fig. A.19 Exemple de visualisation dune surface d equation z = g (x, y ) gr ace au commandes meshz.

76

Y. Mor` ere

Initiation Progiciel Matlab

sur le domaine [0, 2 ] [0, 2] avec un maillage de maillage de longueur h = 0.2, on ex ecute : >> >> >> >> >> [U,V] = meshgrid(0 :.2 :2*pi, 0 :.2 :2); X = V.*cos(U); Y = V.*sin(U); Z = 2*U; surf(X,Y,Z)

Si la fonction est d enie comme une fonction utilisateur dans le chier G.m, function [x1, x2, x3] = G(u,v) x1 = v.*cos(u); x2 = v.*sin(u); x3 = 2*u; on ex ecute : >> [U,V] = meshgrid(0 :.2 :2*pi, 0 :.2 :2); >> [X,Y,Z] = G(U,V); >> surf(X,Y,Z) Dans les deux cas on obtient le r esultat pr esent e gure A.20.

14 12 10 8 6 4 2 0 2 1 0 1 2 2 0 1 1 2

Fig. A.20 Exemple de visualisation dune surface param etr ee gr ace ` a la commande surf.

A.7

R ef erences

http://www.mathworks.com/access/helpdesk/help/helpdesk.html http://maths.insa-lyon.fr/~balac/matlab/matlab.html

77

Cette page est laiss ee blanche intentionnellement

Annexe B :
B.1 Introduction

Le progiciel Matlab

Le logiciel Matlab (MATrix LABoratory) est un progiciel de calcul constitu e dun noyau de base extentsible ` a laide de nombreuses bo te ` a outils ocielles et des bo tes ` a outils personnelles. Il utilise un langage de programmatin proche du C, semi compil e. Il pr esente comme avantage la disponibilit e dun grand nombre dalgorithme de calcul num erique tout programm es, de nombreuses fonctions de trac e de graphes 2-D et 3-D, la possibilit e de calcul direct sur les nombres complexes et lexistence dune aide en ligne avec la commande help

B.1.1

Fen etres de Matlab (ou li ees ` a Matlab)

Lorsquon travaille sous Matlab, on rencontre plusieurs types de fen etres : Fen etre commande : cette fen etre est utilis ee pour lentr ee de commandes pour ex ecution imm ediate (caract` ere de sollicitation ou prompt >>)et lon eace la command tap ee par la touche backspace ou encore home ou encore la commande clc; Fen etre graphique : cette fen etre sert ` a lachage de graphiques 2-D ou 3-D et seace par la commande clg; Fen etre de texte : cette fen etre peut etre intern ( editeur int egr e) ou externe. Elle est utilis ee pour l edition de chiers de commandes ou de fonctions.

B.2

Matrices

Matlab comporte six types (ou classes) fondamentaux qui se pr esentent tous sous forme dun tableau multidimensionnel. Ces six classes sont double (nombre ottants en double pr ecision), char (tableau ou chaines de caract` eres)n sparse (matrices creuses), uint8 (nombres entiers non sign es cod es sur 8 bits), cell (tableau de cellules) et struct (tableaux de structures ou enregistrement). Une matrice comportant une seule ligne ou une seule colonne et nomm ee un vecteur. Une matrice ne comportant quune seule et quune seule colonne est nomm ee un scalaire.

B.2.1

Nombres complexes

Le plupart des op erations Matlab connaissent les nombres complexes. Voici deux mani` eres de saisir les nombres complexes dasns une matrice : A = [1 2;3 4] + i*[5 6;7 8]; A = [1+5i 2+6i;3+7i 4+8i]; Lors de l ecriture des nombres complexes, il faut faire attention de ne pas mettre despace entre le nombre et lunit e imaginaire. i et j d esigne indi eremment lunit e imaginaire. 79

Y. Mor` ere

Initiation Progiciel Matlab

B.2.2

Variables

A priori, toutes le variables de Matlab sont des matrices r eelles ou complexes,avec comme cas particuliers les vecteurs ligne et colonne et les scalaires. La d eclaration sp ecique des variables nest pas n ecessaires en Matlab : il se produit une augmentation de taille automatique en cours dex ecution en fonctions des besoins. Matlab neectue pas la distinction entre les entiers et les r eels. La syntaxe pour les noms de variables suit les r` egles standards Fortran, C ou Pascal. Matlab eectue la distinction majuscules/minuscules. Des informations sur les variables sont visualisables par les commandes who et whos. Leacement de variables de la zone de travail est possible avec la commande clear suivi du nom de la ou les variables s epar ees par des espaces. La commande clear all eace toutes les variables de la zone de travail.

B.2.3

Entr ees des matrices

Dans un programme ou la fen etre de commande : >> a=[1 2 3; 4 5 6; 7 8 9] %s eparation par des espaces a = 1 4 7 2 5 8 3 6 9

>> a=[1,2,3; 4,5,6; 7,8,9] %s eparation par des virgules a = 1 4 7 2 5 8 3 6 9

>> b=[1,2,3; 4,5,6; 7,8,9]; %point virgule de fin pour eviter laffichage >> b b = 1 4 7 2 5 8 3 6 9

>> c=[a b] %concat enation en colonnes c = 1 4 7 2 5 8 3 6 9 1 4 7 2 5 8 3 6 9

>> d=[1 2 3 4 5 6] 80

Y. Mor` ere

Initiation Progiciel Matlab

d = 1 2 3 4 5 6

>> e=[c ;d] %concat enation en lignes e = 1 4 7 1 2 5 8 2 3 6 9 3 1 4 7 4 2 5 8 5 3 6 9 6

B.2.4

Indexation - Extraction de sous-matrices

>> f=e(2:3,3:5) %extraction de sous-matrices f = 6 9 >> 4 7 5 8

B.2.5

Initialisations de matrices

Mise ` a z ero : commande zeros : zeros(m,n) est une matrice de z eros comportant m lignes et n colonnes, alors que zeros(A) est une matrice de z eros de taille identique ` a A; Remplissage de 1 : commande ones (syntaxes identiques ` a celles de zeros); Matrice identit e (unit e) : commande eyes : eyes(n) est la matrice unit e de rang n.

B.2.6

Taille

size avec la syntaxe [m,n]=size(x) fournit le nombre de lignes m et de colonnes n de la matrice x. >> size(a) ans = 3 >> Remarque : ans est une variable implicite contenant le r esultat de l evaluation dexpressions sans aectation ` a une variable. legnth fournit la longueur dun vecteur. 3

B.2.7

Op erations matricielles

Addition : X=A+B 81

Y. Mor` ere

Initiation Progiciel Matlab

Soustraction : X=A-B Multiplication : X=A*B (Attention le nombre de colonnes de A doit etre egal au nombre de lignes de B). Division : division ` a droite : X=A/B soit A=X*B division ` a gauche : X=A\B soit A=B*X Remarque : les divisions matricielles sont en g en eral plus pr ecises que la fonction inversion de matrice inv. Elevation ` a la puisance : X=A^B Transposition : A est la transpos ee de A (Attention si A est complexe on obtient en fait la transpos ee conjugu ee). En fait il sagit de transposition-conjugaison (matrice adjointe) Ceci se r eduit ` a la transposition dans la cas dune matrice r eelle. Transposition : . op` ere la transposition simple (matrice r eelle ou complexe); D eterminant : det(A) Inverse : inv(A) Valeurs et vecteurs propres : eig(A) avec la syntaxe [V,D]=eig(A), V est la matrice des vecteurs propres rang es par colonnes et D la matrice diagonale des valeurs propres.

B.2.8

Autres types

Les cha nes de caract` eres (string ) sont repr esent ees ecacement par le type char. On forme une cha ne de caract` ere en ins erant du texte entre 2 apostrophes (single quotes ) : texte = Matlab est puissant; Les matrices creuses sont des matrices dont la plupart des coecients sont nuls. Matlab dispose de fonctions pour travailler ecacement avec les matrices creuses. Se reporter ` a laide en ligne de sparse et full. Les images sont stock ees ` a laide du type uint8. Les tableaux de cellules sont des collections de tableaux qui sobtiennent en pla cant la liste de ces tableaux entre accolades : c = {1:5, Matlab est puissant, rand(1,5)}; Il est possible de fabriquer dautres types de donn ees en utilisant la surcharge (aide sir class).

B.2.9

Vecteurs et polyn omes

G en eration d el ements r eguli` erement espac es : il y a plusieurs formes possibles : >> D=1:4 D = 1 2 3 4

>> E=0:0.1:0.5 E = 0 >> 82 0.1000 0.2000 0.3000 0.4000 0.5000

Y. Mor` ere

Initiation Progiciel Matlab

Boubles implicites avec vecteurs : si V est un vecteur, U=sin(V) est un vecteur dont les el ements sont les sinus de ceux de V; Cas sp ecial : polyn omes La fonction poly (P=poly(A)) fournit le polyn ome caract eristique, repr esent e selon lordre des puissances d ecroissantes. La fonctionroots fournit les racines dun polyn ome. dans le cas ci-dessus roots(P) donne les valeurs propres de A. La fonction conv eectue la multiplication de polyn omes. Par exemple C=conv(A,B).

B.3

Op erations matricielles et el em ent par el ement

Attention les 4 op erations el ementaires, plus l el evation ` a la puissance (op erateur ^, sont des op erations matricielles, cest ` a dire portant sur les matrices dans leur ensemble. C=A*B eectue le produit matriciel. Par contre, si A et B sont des matrices de taille identique, on peut eectuer leur multiplication el ement par el ement (que lon notera C=A.*B). Dans le premier cas : cij = aik bkj alors que dans le second : cij = aij bij . Lop erateur matriciel est donc simplement pr ec ed e par un point, quil faudra ne faudra pas confondre avec le s eparateur d ecimal (toujours ecrire 1.0 et non 1.. Matlab d enit egalement des fonctions matricielles g en erales en parall` eles des fonctions classiques qui op` erent sur les el ements : expm exponentielle matricielle, logm logarithme matriciel, sqrtm racine car e ee matricielle ou funm fonction matricielles g en erale.

B.4

D eclaration, expressions et variables

Matlab pr esente un langage de programation interpr et e. Cela signie que les expression saisie sont imm ediatement interpr et ees et ex ecut ees. Les d eclarations Matlab sont de la forme variable = expression ou simplement expression. Les expressions sont g en eralement compos ees dop erateurs, de fonctions et de noms de variables. L evaluation dune expression conduit ` a une matrice qui est ach ee ` a l ecran ou aect ee ` a une nouvelle variable en vue dune utilisation future. Si lon omet de donner un nom de variable suivi du signe =, le r esultat est automatiquement aect e` a une variable par d efaut nomm ee ans (pour answer ). Une d eclaration est normalement termin ee par la saisie dun retour-chariot (touche entr ee ),. Toutefois une d eclaration peut etre r epartie sur deux ou plusieurs lignes ` a condition de faire pr ec eder le retour-chariot s eparant deux lignes cons ecutives de la d eclaration par au moins trois points (...). On peut aussi placer plusieurs d eclarations sur une m eme ligne ` a condition de les s eparer par des virgules ou des points virgules.

B.4.1

Suppression de lachage des r esultats

Si le dernier caract` ere dune d eclaration est un point virgule, lachage des r esultats est supprim e (mais bien entendu, la d eclaration est ex ecut ee). On peut anisi se d ebarrasser des r esultats interm ediaires fastidieux.

B.4.2

Majuscules et Minuscules

Matlab tient compte de la casse des lettres, cest ` a dire quil fait la distinction entre majuscules et minuscules. Ainsi le variable SolveUT est di erente de Solveut. 83

Y. Mor` ere

Initiation Progiciel Matlab

B.4.3

Liste de variables et de chiers M

La commande who ou whos permet dobtenir la liste des variables d enies dans lespace m emoire de la session courante. De m eme le commande inmem permet de conna tre la liste de chiers M compil es couramment charg es en m emoire. Une variable ou une fonction peut etre eac ee de lespace m emoire avec la commande clear nom_fonction (ou clear nom_variable). Si la commande clear est utilis ee sans etre suivie de nom, on eace de lapces m emoire toutes les variables non permanentes. De la m eme fa con, clear functions eace de lespace m emoire tous les chiers M compil es.

B.4.4

Interruption dun calcul

Sur la plupart des machines un calcul, ou, plus g en eralement, lex ecution dun programme, peut etre interrompu ssns quitter Matlab en pressant simultan ement les touches Ctrl et c.

B.5

Structure de Contr oles

Dans leur forme el ementaire, les structures de contr ole de Matlab fonctionnent de la m eme mani` ere que dans la plupart des autres langages de programmation.

B.5.1

Boucles inconditionnelles for

La forme g en erales dune boucle for est : for i=1:n instructions end Les instructions vont e etre ex ecut ees n fois pour des valeurs de i qui sont succ essivement 1,2,...n. Par exemple, les instructions : x=[]; n=3; for i=1:n x=[x,i^2] end produit [1 4 9] et : x=[]; n=3; for i=n:-1:1 x=[x,i^2] end produit [9 4 1]. On remarque quune matrice peut etre vide []. Lintervalle 1:n qui d enit l evolution du compteur dune boucle for peut etre remplacer par nimporte quelle matrice. Dans ce cas le compteur parcourt les colonnes successives de la matrice en question. Par exemple : s=0; for c=A s= s + sum(c); end permet de calculer la somme des coecient de la matrice A (toutefois sum(sum(A)) est un moyen plus ecace). 84

Y. Mor` ere

Initiation Progiciel Matlab

B.5.2

Boucles conditionnelles while

La forme g en erale dune boucle while est : while condition instructions end Les instructions vont etre ex ecut ees de fa con r ep et ee tant que la condition est satisfaite. Par exemple, etant donn ee un nombre a, la boucle suivante d etermine le plus petit entier positif tel n que 2 > a : n=0; while 2^n < a n=n+1; end n

B.5.3

Branchements conditionnels if

La forme g en erale dune instruction de brachement conditionnel est la suivante : if condition instruction1 else instruction2 end Si la condition est satisfaite, le jeu dinstructions 1 va etre ex ecut e. Dans le cas contraire, cest le jeu dinstructions 2 qui va etre ex ecut e. On peut aussi recourir ` a un branchement multiple ` a laide du mot r eserv e elseif comme le montre lexemple suivant: if n < parit e elseif parit e else parit e end 0 = 0; rem(n,2) == 0 = 2; = 1;

B.5.4

Op erateurs relationnels et op erateurs logiques

On dispose des op erateurs relationnels suivants : < > <= >= == ~= strictement inf erieur strictement sup erieur inf erieur ou egal sup erieur ou egal egal di erent

Il convient de bien distinguer lop erateur daectation = du test d egalit e ==. Les expressions peuvent etre reli ees par les op erateurs logiques suivants : & | ~ Et Ou Non 85

Y. Mor` ere

Initiation Progiciel Matlab

Le r esultat dun test d epend de la nature des objets auxquels il est appliqu e. Si lon eectue un test sur des scalaires, le r esultat est 1 ou 0 selon que la relation est v eri ee ou non. Lorsquun test est eectu e sur des matrices de m emes dimensions, la r eponse est une matrice, de m emes dimensions que les matrices intervenant dans le test, dont les coecients sont des 0 ou des 1 selon le r esultat de la comparaison entre les coecients des matrices concern ees. Un test faisant intervenir des matrice dans la partie condition dune instruction while ou dune instruction if est consid er e comme satisfait lorsque chaque coecient de la matrice r esultat est non nul. De la sorte, si lon veut ex ecuter un jeu dinstructions ` a la condition que le matrices A et B soient egales, on peut ecrire : if A == B <instructions> end Alors que si lon veut ex ecuter les instructions seulement si A etB sont distinctes, on peut ecrire : if any(any(A ~= B)) <instructions> end ou encore plus simplement if A == B else <instructions> end Il convient de faire attention ` a linstructionif A ~= B, <instruction>, end qui nest pas aussi evidente quil y para t : les instructions seront ex ecut ees lorsque chaque coecient de A est distinct du coecient correspondant de B. Les fonction all et any peuvent etre utilis ees astucieusement pour ramener un test sur des matrices ` a un test sur des scalaires.

B.6
B.6.1

Fonctions Matlab pr ed enies


Fonctions scalaires

Certaines fonctions Matlab sont con cues pour sappliquer ` a des scalaires maisvont etre distribu ees sur tous les coecients si elles sont appliqu ees ` a une matrice. On peut citer les fonctions les plus courantes : sin,cos, tan asin,acos, atan abs sqrt floor round ceil sign exp log log10 rem fonctions trigonom etriques circulaires directes fonctions trigonom etriques circulaires reciproques valeur absolue racine carr ee partie enti` ere (plus grand entier inf erieur ou egal) plus proche entier plus petit entier sup erieur ou egal signe exponentielle n ep erienne logarithme n ep erien logarithme en base 10 reste dune division euclidienne 86

Y. Mor` ere

Initiation Progiciel Matlab

B.6.2

Fonctions vectorielles

Dautres fonctions Matlab sont con cues pour sappliquer ` a des vecteurs (lignes ou colonnes) mais vont etre sitribu ees sur les vecteurs colonnes si elles sont appliqu ees ` a une matrice et produire un r esultat sous la forme dun vecteur ligne. On obtient une distribution de la fonction sur les vecteurs lignes en ayant recours ` a la transposition (par exemple, mean(A)) ou en sp eciant la dimension sur laquelle doit sappliquer la fonction (par exemple mean(A,2)). Voici quelques unes de ces fonctions (qui sappliquent toutes aux coecients du vecteur pass e en argument) : max min sum prod median mean std sort any all maximum minimum somme produit m ediane moyenne ecart type tri teste si lun des el ements de la matrice consid er ee est non nul teste si tous les el ements de la matrice consid er ee sont non nuls

B.6.3

Fonctions matricielles

La puissance de Matlab vient des nombreuses fonctions matricielles impl ement ees par le logiciel. Certaines de ces fonctions peuvent fournir une ou plusieurs valeurs en sortie. Par exemple, y=eig(A) ou simplement eig(A) produit un vecteur colonne constitu e des valeurs propres de A tandis que [U,D]=eig(A) produit la matrice U dont les colonnes sont constitu ees de vecteurs propres de A et la matrice diagonale D comportant les valeurs propres correspondantes sur sa diagonale. Parmi dautres, on peut citer : eig chol svd inv lu qr hess schur rref expm sqrtm poly det size norm rank cond valeurs et vecteurs propres factorisation de Cholesky d ecomposition en valeurs singuli` eres inverse factorisation LU factorisation QR mise sous forme de Hessenberg d ecomposition de Schur r eduite echelonn ee par lignes (obtenue par la m ethode de Gauss avec pivot partiel) exponentiation matricielle racine carr ee matricielle polyn ome caract eristique d eterminant dimensions norme-1, norme-2, norme-, norme de Frobenius rang conditionnement 87

Y. Mor` ere

Initiation Progiciel Matlab

B.7

Edition de ligne

La ligne de commande peut etre facilement trait ee sous Matlab. Le curseur peut etre positionn e ` a laide des touches de d eplacement (droite et gauche). Les touches de d eplacement haut et bas permettent de circuler dans la pile des instructions pr ec edemment ex ecut ee.

B.8

Sous-matrices

Les vecteurs et les sous-matrices sont fr equemment utilis es avec Matlab pour accomplir des manipulations relativement complexes sur les donn ees. Le symboles : et lindexation par des vecteurs dentiers sont la cl e dune programmation ecace. Une bonne utilisation de ces techniques permet d eviter le recours ` a des boucles et rend le code simple et lisible.

B.8.1

G en eration de vecteurs

Lexpression 1:5 repr esente le vecteur ligne [1 2 3 4 5]. Il nest pas n ecessaire de prendre des valeurs enti` eres pour les coecients du vecteur ni pour lincr ement. Cest ainsi que 0.2:0.2:1.2 donne [0.2,0.4,0.6,0.8,1.0,1.2] et 5:-1:1 donne [5 4 3 2 1]. Ainsi pour obtenir une tables des sinus on peut faire : x = [0.0:0.1:2.0]; y=sin(x); [x y]

B.8.2

Acc` es aux sous-matrices

La notation : peut etre utilis ee pour d esigner des sous-matrices dune matrice. Par exemple A(1:4,3) d esigne le vecteur colonne constitu e des quatres premiers el ement de la troisi` eme colonne de A. Le symbole : tout seul signie une colonne ou une ligne toute enti` ere : A(:,3) d esigne la troisi` eme colonne de A, A(1:4,:) d esigne les quatre premi` eres lignes de A. On peut aussi utiliser des vecteurs dentiers pour d enir des colonnes. Par exemple A(:,[2 4]) contient la deuxi` eme et quatri` eme colonne de A. Une telle mani` ere dindex e les lignes ou les colonnes peut etre encore utilis ee de la mani` ere suivante : A(:,[2 4 5]) = B(:,1:3); remplace les colonnes 2, 4 et 5 de A par les trois preim` eres colonnes de B. De m eme on peut multiplier (` a droite) les deuxi` eme et quatri` eme colonnes de A par la matrice dordre 2 [1 2;3 4] en ecrivant : A(:,[2,4])=A(:,[2,4])*[1 2;3 4]; Il existe un indice particulier permettant de d esigner le dernier el ement dun vecteur, il sappelle end.

B.9

Fichier M

Matlab peut ex ecuter une suite dinstructions stock ees dans un chier. Un tel chier est appel e un chier M (pour M le ) parce que son nom doit pr esenter lextension .m. Il existe deux types de chiers M : les chiers de commandes ou scripts et les chiers de fonctions. 88

Y. Mor` ere

Initiation Progiciel Matlab

B.9.1

Fichiers de commandes (scripts)

Un chier de commandes consiste en une suite de d eclarations Matlab normales. Si par exemple, le chier est nomm e toto.m, alors linstruction toto provoque lex ecution des instructions contenues dans ce chier. Les variables d enies dans un chier de commandes sont globales et si dans la session, des variables de m eme nom existaient pr ealablement au chargement du chier, ces derni` eres seront modi ees conform ement aux instructions du chier. Un chier de commande peut etre utilis e pour entrer les coecients dune matrice de grande dimension. En proc edant de la sorte, on peut facilement v erier la saisie des coecients. Enn un chier M peut appeller un autre chier M et peut aussi sappeler lui-m eme de mani` ere r ecursive.

B.9.2

Fichiers de fonctions

Les chiers de fonctions permettent d etrebdre Matlab. On peut cr eer de nouvelles fonctions sp eciques ` a un domaine particulier, et attribu e ` a ces fonctions un statut analogue ` a celui des fonctions pr ed enies. Les variables d enies dans un chier de fonction sont; par d efaut, consid er ees comme locales. Toutefois si on le souhaite, une variable peut etre d eclar ee comme globale (se rapporter ` a laide de global. Voici un exemple simple de chier de fonction : function y =y randint(m,n) % G en eration al eatoire dune matrice % ` a coefficients entiers % randint(m,n) renvoie une matrice % de dimension m x n ` a coefficients compris entre 0 et 9 y = floor(10*rand(m,n)); dont une version plus g en erale est : function y =y randint(m,n,a,b) % G en eration al eatoire dune matrice % ` a coefficients entiers % randint(m,n) renvoie une matrice % de dimension m x n ` a coefficients compris entre 0 et 9 % randint(m,n,a,b) renvoie une matrice % de dimension m x n ` a coefficients compris entre a et b if nargin < 3, a=0; b = 9; end y = floor((b-a+1)*rand(m,n))+a; Ces instructions doivent etre plac ees dans un chier appel e randint.m (nom qui correspond au nom de la fonction). La premi` ere ligne du chier consiste en la d eclaration du nom de la fonction, de ses arguments dentr ee et de sortie. En labsence de cette ligne, le chier sera consid er e comme un simple chier de commaned. D` es lors, linstruction Matlab z = randint(4,5) provoque laectation du r esultat de lapplication de la fonction au couple (m,n)=(4,5) ` a la variable z. Signalons lexistence de la variable nargin qui, au moment de lappel ` a une fonction, contient le nombre darguments eectivement transmis ` a la fonction, ce qui permet de donner une valeur par d efaut aux param` etres omis, comme cela est fait pour a etb dans la deuxi` eme version. 89

Y. Mor` ere

Initiation Progiciel Matlab

B.9.3

Sorties multiples

Une fonction peut fournir plusieurs variables en sortie. Voici un exemple de cette situation : function [moy,et]=stat(x) % Calcul de la moyenneet de l ecart type % x d esignat un vecteur, stat(x) % renvoie la moyenne des coefficients de x alors que % [moy,et] = stat(x) renvoie simultan ement % le moyenne et l ecart-type des coefficients de x. % Si x est une matrice, stat(x) sapplique ` a chaque % colonne de x [m n]=size(x); if m ==1 m=n; %traite le cas dun vecteur ligne end moy = sum(x)/m; et = sqrt(sum(x.^2)/m-moy.^2); Lorsque cette fonction a et e sauvegard ee dans la chier stat.m, linstruction Matalab [xm, xe] = stat(x) aecte respectivement ` a xm et xe la moyenne et l ecart type des donn ees contenues dans le vecteur x. On peut aussi ne garder quune sortie dune fonction qui en produit plusieurs. Par exemple xm = stat(x) aecte ` a xm la moyenne des donn ees contenues dans x.

B.9.4

Commentaires et aide en ligne

Le symbole % annonce une ligne de commantaire : tout ce qui suit ce signe est consid er e comme un commentaire et nest pas pris en compte par linterpr eteur. En outre, le premier bloc de lignes de commentaires contigu es constitue de la fonction : si lon prend le chier stat.m donn e en exemple, les lignes en question seront ach ees lors dun appel ` a help stat. Il est clair que lon devrait toujours inclure une telle documentation lors de la r edaction dun chier M.

B.10

Cha nes, messages derreur et entr ees

Une cha nes de caract` eres (string ) doit etre entour ee dapostrophes (singles quotes ) en Matlab. Linstruction : s= Ceci est une cha^ ne de carat` eres aecte le texte mentionn e ` a la variable s. Les cha nes de caract` eres (comme les matrices ` a coecients num eriques) peuvent etre ach ees avec la commande disp. Cest ainsi que disp(s) permettra dacher le contenu de s.

B.10.1

Message derreur

On peut provoquer lachage dun message derreur avec la commande error comme, par exemple : error(D esol e, la matrice doit ^ etre sym etrique); Lorsque Matlab rencontre une instruction de ce genre dans un chier M, lex ecution de ce chier est interrompue. 90

Y. Mor` ere

Initiation Progiciel Matlab

B.10.2

Entr ees

Dans un chier M, on peut demander ` a lutilisateur de saisir interactivement une valeur en ayant recours ` a la commande input. Par exemple, linstruction : iter = input (Indiquer le nombre de lignes :); va provoquer lachage du message et interrompre lex ecution de la fonction de mani` ere ` a ce que lutilisateur puisse saisir la valeur demand ee. Lorsque lutilisateur presse la touche entr ee (signiant quil a termin e sa saisie), la valeur saisie est aect ee ` a la variable iter et lex ecution de la fonction reprend.

B.11

Gestion des chiers M

Au cours dune session Matlab, il peut arriver que lon ait besoin de cr eer ou modier un chier M` a laide dun editeur de texte avant de revenir ` a Matlab alors quon veut eviter de quitter Matlab pour ne pas perdre les variables d ej` a calcul ees.

B.11.1

Ex ecution de commandes syst` emes

On peut lancer lex ecution dune commande syst` eme,sans quitter Matlab, laide de la commande sp eciale ! : il sut de faire pr ec eder la commande syst` eme en question par le symbole !.

B.11.2

Gestion des r epertoires et des chiers

Sous Matlab, la commande upwd permet dobtenir le nom du r epertoire courant et la commande cd permet de changer de r epertoire. La commade dir (ou ls) fournit le catalogue des chiers contenus dans le r epertoire courant tandis que la commande what ne liste que les chiers du r epertoire en rapport avec Matlab en les regroupant par type de chiers. La commande delete permet deecer un chier et type permet dacher ` a l ecran un chier M. Bien entendu toutes ces commandes font double emploi avec une commande syst` eme accessible gr ace ` a !.

B.11.3

Matlab et chemins dacc` es

Les chiers invoqu es doivent se trouver dans un r epertoire accessible ` a Matlab. Tous les chiers M se trouvant dans le r epertoire courant sont toujours accessibles. La plupart des installation de Matlab permettent de d enir un r epertoire nomm e matlab auquel Matlab peut toujours acc eder pour ouvrir les chiers. La liste des chemins dacc` es couramment connus sobtient ` a laide de la commande path. Elle permet aussi dajouter ou denlever des r epertoires ` a la liste (help path). La commande which permet de trouver les chiers dans le chemin dacc` es.

B.12

Mesure de lecacit e dun programme

Le nombre dop erations eectu ees (ops pour oating pont operations ) et le temps de calcul constituent deux moyens pour appr ecier lecacit e dun programme.

B.12.1

Fonction flops

La fonction Matlab flops totalise le nombre dop erations eectu ees au cours dun calcul. Linstruction flops(0) r einitialise ce total ` a 0. Ainsi en lan cant linstruction flops(0) avant lex ecution dun algorithme, puis linstruction flops imm ediatement apr` es cette ex ecution, on obtient le nombre dop erations mises en uvre au cours de lex ecution. Par exemple : 91

Y. Mor` ere flops(0), x=A/B; flops;

Initiation Progiciel Matlab

Permet de savoir combien dop erations a necessist e la r esolution du syst` eme lin eaire Ax = b par la m ethode de Gauss.

B.12.2

Temps de Calcul

Le temps (en secondes) requis par un clacul peut etre mesur e` a laide des commandes tic ettoc. tic permet de d eclencher le chronom` etre tandis que toc permet de conna tre le temps ecoul e depuis la derni` ere ex ecution de tic. Cest ainsi que : tix, x=A/b; toc permet de conna tre le temps n ecessaire ` a la r esolution du syst` eme lin eaire Ax = b.

B.12.3

Proleur

Matlab met ` a disposition de lutilisateur un proleur qui permet de conna tre le temps de calcul requis par chaque ligne dun chier M donn e. Se reporter ` a laide en ligne help profile d etaillant la commande profile.

B.13

Formats de sortie

Bien que tous les calculs soient eectu es en double pr ecision, le format dachage des sorties peut etre contr ol e` a laide des commandes suivantes (entre parenth` eses le nombres de chires signicatifs du format) : format short format long format short e format long e format hex format+ ottant ottant ottant ottant nombre nombre court (4) long (14) court en notation scientique (4) long en notation scientique (15) hexad ecimal sign e (achage dun signe + ou dun signe -)

Le format short est retenu par d efaut. Une fois invoqu e, le format choisi reste actif jusqu` a ce quil soit modi e par un nouvel appel ` a format. Notons que cette commande aecte lachage du nombre consid er e mais na aucun eet sur sa pr ecision. Linstruction format compact conduit ` a la suppression de la plupart des lignes vides dans lafchage, permettant lachage de davantage dinformations ` a l ecran. Inversement linstruction format loose permet de revenir ` a un achage moins dense.

B.14

Repr esentations graphiques

Matlab permet la repr esentation de courbes planes, de courbes gauches, de nappes ` a laides de maillages ou surfaces. On pr ensetera les principales commandes plot, plot3, mesh, surf et light. On peut lancer la commande demo an davoir une id ee des possibilit es de ces commandes. 92

Y. Mor` ere

Initiation Progiciel Matlab

B.14.1

Graphiques en dimension 2

La commande plot sert ` a tracer des courbes planes. Plus pr ecis ement, si x et y d esignent des vecteurs de m eme longueur, lappel ` a plot(x,y) ouvre une fen ete graphique et trace une ligne bris ee joignant les points dont les coordonn ees sont d enies par les listes x et y. Par exemple, une mani` ere dobtenir la repr esentation graphique de la fonction sin sur lintervalle [4, 4] consiste ` a ecrire : x=-4.0:0.01:4; y=sin(x); plot(x,y); La commande zoom permet dagrandir ou de diminuer lechalle dun graphique.

B.14.2

Graphiques multiples

Matlab peut g erer plusieurs repr esentations graphiques simultan ement. Lune delles constitue la gure courante. Cest elle qui re coit les repr esentations graphiques r esultant de lex ecution des commandes. Si lon dispose d ej` a dune premi` ere fen etre graphique avec une gure, alors linstructin figure(2) (ou plus simplement figure) va cr eer une deuxi` eme fen etre graphique qui va devanir la gure courante. Linstruction figure(1) ` a pour eet dacher ` a nouveau le premi` ere gure et den faire la gure courante. La commande gcf permet de conna tre le num ero de gure courante.

B.14.3

Graphe dune fonction

La commande fplot sert ` a obtenir simplement et ecacement la repr esentation graphique x2 dune fonction. Par exemple, on peut repr esenter le graphe de y = e en cr eant un chier M appel e expnormal.m contenant les lignes : function y = expnormal(x) y = exp(-x.^2); et en ex ecutant linstruction : fplot(expnormal,[-1.5,1.5]);

B.14.4

Courbes param etr ees

Matlab permet aussi de repr esenter des courbes param etr ees planes. Voici un exemple montrant comment proc eder : t=0:.001:2*pi; x=cos(3*t); y=sin(2*t); plot(x,y);

B.14.5

Titres, l egendes, textes

Les graphiques peuvent etre agr ement es de titres, de l egendes ou de textes. On utilise dans ce but les fonctions suivantes, qui prennent toutes une cha ne de caract` eres en argument. title xlabel ylabel gtext text titre du graphique l egende associ ee ` a laxe des abscisses l egende associ ee ` a laxe des ordonn ees positionne du texte sur le graphique ` a laide de la souris positionne du texte sur le graphique en un point sp eci e parses coordonn ees 93

Y. Mor` ere Par exemple linstruction : title(La fonction exponentielle);

Initiation Progiciel Matlab

donne un titre ` a la gure courante. Linstruction gtext(un point) permet de positionner interactivement le texte consid er e en cliquant sur lemplacement choisi. La commande grid permet de supersposer un quadrillage au grahique.

B.14.6

Axes et echelles

Par d efaut, les echelles des axes sont ajust ees automatiquement. Lutilisateur peut aussi xer les echelles ` a laide de la commande axis. Voici certaines des options disponibles : axis axis(axis) axis auto v = axis axis square axis equal axis on axis off (appliqu e ` a [xmin , xmax , ymin , ymax ]) etablit une echelle en fonction des bornes sp eci ees g` ele l echelle pour les gures suivantes revient ` a une echelle d etermin ee automatiquement par Matlab place dans le vecteur v la d enition de l echelle courante force les deux axes ` a la m eme longueur (mais leurs echelles ne sont pas n ecessairement les m emes) force la m eme echelle et la m eme graduation sur les deux axes restaure les axes supprime les axes

La commande axis doit etre ex ecut ee apr` es (et non avant) la commande plot qui a cr e e le graphique.

B.14.7

Graphiques multiples

Il existe plusieurs fa cons de placer plusieurs repr esentations graphiques sur la m eme gure. La premi` ere est illustr ee par lexemple suivant : x = 0:0.01:2*pi; y1=sin(x); y2=sin(2*x); y3=sin(4*x); plot(x,y1,x,y2,x,y3); La deuxi` eme consiste ` a former la matrice Y contenant les valeurs fonctionnelles en colonnes : x = 0:0.01:2*pi; Y=[sin(x),sin(2*x),sin(4*x)]; plot(x,Y); La troisi` eme fa con consiste ` a utiliser la commande hold qui permet de geler la fen etre graphique courante de sorte que les repr esentation s suivantes se superposent sur cette m eme gure. Dans ce cas, il peut arriver que les echelles soient r eajust ees. On annule leet de hold par linstructionhold off. La fonction legend permet dassocier une l egende ` a chaque courbe de la gure (help legend). 94

Y. Mor` ere

Initiation Progiciel Matlab

B.14.8

Types de trac es, types de marqueurs, couleurs

Matlab choisit par d efaut les types de trac es, les types de marqueurs et les couleurs mais lutilisateur peut imposer ses propores choix. Par exemple : x = 0:0.01:2*pi; y1=sin(x); y2=sin(2*x); y3=sin(4*x); plot(x,y1,|,x,y2,:,x,y3,+); produit un trac e en tiret es, un autre en pointill es, et un troisi` eme avec des symboles +. Voici les di erents types de trac es et de marqueurs : Types de lignes : solid (-), dashed (|), dotted (:), dashdot (-.) Types de marqueurs : point (.), plus (+), star (*), circle (o), x-mark (x), square (s), diamond (d), triangle-down (v), triangle-up (^ ), triangle-left (<), triangle-right (>), pentagram (p), hexagram (h) Des couleurs peuvent etre pr ecis ees pour les lignes ou les marqueurs : yellow (y), magenta (m), cyan (c), red (r), green (g), blue (b), white (w), black (k) Par exemple, plot(x,y,r|) eectue un trac e en tiret es de couleur rouge.

B.14.9

Autres fonctions sp ecialis ees

La commande subplot permet de partitionner une gure de mani` ere ` a placer plusierus petit graphiques sur la m eme gure (help subplot). Dautres fonctions interressantes sont polar, bar, hist, quiver, compass, feather, rose, stairs ou encore fill.

B.14.10

Impression des graphiques

Une impression de la gure graphique courante sobtient facilement avec la commande print. Utilis ee sans option, cette commande envoie une copie haute r esolution du graphique courant ` a limprimante par d efaut. Le chier M printopt peut etre utilis e pour modier les options par d efaut utilis ees par la commande print (help printopt). Linstruction print nom_fichier peut etre utilis ee pour sauvegarder le graphique courant dans le chier d esign e au format sp eci e par d efaut. Linstruction print figures cr ee un chier Postscript appel e figure.ps contenant la description de la gure consid er ee. Les param` etres par d efaut peuvent etre modi es au moment de lappel. Par exemple : print -deps -f3 graphique place dans un chier Postscript encapsul e de nom graphique.eps une description de la fen etre graphique 3.

B.14.11

Repr esentation des courbes gauches

La commande plot3 est lanalogue de la commande plot pour la dimension 3. Si x, y et z d esignent des vecteurs de m emes dimensions, linstruction plot(x,y,z) produit une vue en perspective de la courbe obtenue en reliant les points dont les coordonn ees sont respectivement el ements de x, y et z. Les vecteurs sont souvent d enis param etriquement comme dans lexemple suivant : t=0:0.01:20*pi; x=cos(t); y=sin(t);z=t.^3; plot3(x,y,z); 95

Y. Mor` ere

Initiation Progiciel Matlab

qui conduit ` a la repr esentation graphique dune h elice. Comme dans le cas des courbes en dimension 2, on peut ajouter un titre et des l egendes aux axes du graphiques. Repr esentation de nappes Linstruction mesh(z) permet de r ealiser une vue en perspective du maillage d eni par la matrice z. Plus pr ecis ement, le maillage est d eni par les cotes z de points r epartis sur un rectangle du plan x-y. Le lecteur peut essayer mesh(eye(20)). Ainsi pour obtenir la repr esentation de la nappe d enie par l equation z = f (x, y ), on commence par d eterminer xx et yy, vecteurs constituant une subdivision de chaquue c ot e du rectangle sur lequel on souhaite eectuer la repr esentation. On vr ee ensuite une matrice x (respectivement y ) comportant autant de lignes (respectivement de colonnes) quil y a d el ements dans yy (respectivement xx ) et dont toutes les lignes (respectivement colonnes) sont egales ` a xx (repsectivement yy ), avec linstruction : [x,y]=meshgrid(xx,yy); cet eet, on On clacule alors une matrice z ` a laquelle on puisse appliquer mesh ou surf. A distribue lapplication de f sur les matrices x et y . 2 2 Ainsi pour repr esenter la nappe z = ex y sur le carr e [2, 2] [2, 2], on proc` ede de la mani` ere suivante : xx = -2:0.2:2; yy=xx; [x,y]=meshgrid(xx,yy); z = exp(-x.^2-y.^2); mesh(z); On peut dailleurs remplacer les trois premi` eres instructions par : [x,y]=meshgrid(-2:0.2:2,-2:0.2:2); Il est instructif de comparer le r esultat obtenu par lutilisation de mesh avec celui obtenu par lutilisation de surf.

B.14.12

Couleurs et ombres port ees

Les eets de couleur et dombre port ee peuvent etre d enis ` a laide de la commande shading. Les trois options possibles, faceted (option par d efaut), interpolated et flat, prennent eet apr` es ex ecution de lune des instructions shading faceted, shading interp ou shading flat. Sur une repr esentation prosuite par surf, les options interpolated et flat font dispara tre les lignes d enissant le maillage. La commande shading doit etre appel ee apr` es la commande surf ayant produit le graphique. Ceci est aussi valable pour les command ecolormap et view. Le coloriage dune gure est d eni par la commande colormap. Un certain nombre doptions de coloriage pr ed enies existent; on peut citer hsv (option par d efaut), hot, cool, jet, pink, copper, flag, gray, bone, prism et white. Par exemple linstruction colormap(cool) d enit un certain prol pour le coloriage de la gure courante. On pourra se reporter ` a la commande help colobar pour plus dinformations.

B.14.13

Perspective dune vue

La commande view permet de d enir en coordonn ees cart esiennes ou en coordonn ees sph eriques le point de vue sur un objet graphique (voir help view). La commande rotate3d permet de d enir ce point de vue interactivement ` a laide de la souris. Il est aussi possible une cam era et des sources de lumi` eres pour visualiser et eclairer une gure. 96

Annexe C : Matlab
C.1

Les fonctions usuelles de

Commandes g en erales
Lancement et arr et de Matlab chier M de d emarrage principal permet de quitter Matlab chier M de d emarrage secondaire Gestion de lenvironnement ajoute un r epertoire ` a la liste des chemins de recherche de Matlab charge la documention hypertexte lance laide en ligne fournit le dernier message derreur lance une recherche par mot-cl e ache la liste des chemins de recherche mesure le temps dex ecution dun chier M enl` eve un r epertoire de la liste des chemins de recherche Matlab liste le contenu dun chier ache la version de Matlab en cours dex ecution donne la liste des chiers M, MEX et MAT pr esents dans le r epertoire courant ache les chiers readme pour Matlab et ses bo tes ` a outils permet de localiser les chiers et les fonctions Gestion des variables et de lespace m emoire eace les variables choisies de la m emoire permet dacher du texte ou des tableaux fournit la dimension (longueur) dun vecteur charge des variables depuis un chier lance la d efragmentation de lespace m emoire de travail sauvegarde des variables dans un chier fournit les dimensions dune matrice liste toutes les variables connues de lespace de travail Gestion de la fen etre de commande ache les commandes du chier M couramment ex ecut e d enit le format dachage des nombres active et d esactive le mode dachage par page 97

matlab.rc quit startup.m addpath doc help lasterr lookfor path profile rmpath type version what whatsnew which clear disp length load pack save size who, whos echo format more

Y. Mor` ere

Initiation Progiciel Matlab

Gestion des chiers. Acc` es au syst` eme dexploitation cd change le r epertoire de travail delete eace des chiers ou des objets graphiques diary permet la sauvegarde dune session sur chier dir fournit le catalogue dun r epertoire edit edite un chier M inmem liste les fonctions en m emoire matlabroot donne le nom du r epertoire temporaire du syst` eme dexploitation tempdir fournit le nom du r epertoire temporaire du syst` eme dexploitation tempname produit un nom unique pour un chier temporaire ! lance lex ecution de la commande syst` eme dont le nom suit

C.2

Op erateurs et caract` eres sp eciaux


Op erateurs et caract` eres sp eciaux addition de r eels ou de matrices soustraction de r eels ou de matrices produit de r eels ou de matrices produit el ement par el ement de matrices division ` a gauche de r eels ou de matrices division ` a droite de r eels ou de matrices division ` a gauche el ement par el ement de matrices division ` a droite el ement par el ement de matrices point d ecimal d esigne le r epertoire parent du r epertoire courant symbole de continuation (pour terminer une instruction ou une expression ` a la ligne suivante) commentaire matrice adjointe (transpos ee + conjug ee) et d elimiteur de cha ne de caract` ere matrice transpos ee lance une commande syst` eme dont le nom suit, tout en restant sous Matlab aectation test d egalit e test de non egalit e op erateurs de comparaison ET logique OU logique NON logique OU EXCLUSIF logique 98

+ * .* \ / .\ ./ . .. ... % . ! = == ~= <, <=, >, >= & | ~ xor

Y. Mor` ere

Initiation Progiciel Matlab Fonctions logiques d etermine si tous les el ements de la matrice consid er ee sont non nuls d etermine si lun des el ements de la matrice consid er ee est non nul d etermine si la variable, la fonction ou le chier consid er e existe d etermine les indices et la valeur des el ements non nuls dun tableau ou dune matrice d etermine un etat d etermine un objet dune classe donn ee convertit une valeur num erique en valeur logique

all any exist find is* isa logical

bitand bitcmd bitor bitmax bitset bitshift bitget bitxor

Fonctions binaires ET logique bit ` a bit compl ement bit ` a bit OU logique bit ` a bit plus grand entier non sign e repr esentable sur la machine mise ` a 1 dun bit ` a un emplacement donn e d ecalage (` a droite ou ` a gauche) valeur dun bit ` a une position donn ee OU EXCLUSIF bit ` a bit

C.3

Langage de programmation
Utilisation de fonctions lance lex ecution dune commande du noyau (fonctionbuilt-in ) interpr` ete et evalue la cha ne de caract` eres (contenant des commandes, des op erations et des noms de variables) pass ee en argument lance l evaluation dune fonction (dont le nom et les arguments sont pass es en arguments) d enit une fonction dans un chier M permet de d eclarer une variable globale v erie le nombre darguments pass es ` a une fonction 99

builtin eval

feval function global nargchk

Y. Mor` ere

Initiation Progiciel Matlab Programmation interrompt lex ecution de la structure de contr ole courante s el ection multiple (se pr esente apr` es un switch; voir aussi otherwise) aiguillage (se pr esente apr` es un if) aiguillage multiple (se pr esente apr` es un if) sert ` a d elimiter la n dune instruction for, if, switch ou while provoque lachage du message derreur pass e en argument et linterruption du programme boucle inconditionnelle branchement conditionnel (voir aussi else et elseif) introduit le traitement par d efaut dun switch (voir aussi case) retour ` a la fonction appelante s election multiple (voir aussi case et otherwise provoque lachage du message dalerte pass e en argument boucle conditionnelle

break case else elseif end error for if otherwise return switch warning while

input keyboard menu pause

Saisie interactive interrompt lex ecution en attente dune saisie de lutilisateur interrompt lex ecution et donne le contr ole au clavier g en` ere un menu de choix ` a destination de lutilisateur interrompt temporairement lex ecution

dbclear dbcont dbdown dbmex dbquit dbstack

dbstatus dbstep dbstop dbtype dbup

Mise au point (d ebogage) supprime les points darr ets relance lex ecution du chier M jusquau prochain point darr et change le contexte de la fonction en cours dex ecution en celui de lespace de travail active le debogage des chiers MEX termine le d ebogage et rend le contr ole ` a linterpr eteur ache le nom de la fonction en cours dex ecution, le num ero de la ligne p` u est x e le point darr et courant, le nom du chier M appelant cette fonction, le num ero de ligne de lappel, etc. donne la liste des num eros de lignes o` u sont plac es les points darr et ex ecute une ou plusieurs lignes de programme en mode mise au point place un point darr et dans un chier M liste un chier M avec des num eros de ligne change le contexte de lespace de travail de base en celui de la fonction en cours dex ecution 100

Y. Mor` ere

Initiation Progiciel Matlab Constantes et variables sp eciales dernier r esultat calcul e identie le type dordinateur sur lequel est ex ecut e Matlab pr ecision relative des calculs men es en virgule ottante compte le nombre dop erations el ementaires unit e imaginaire inni nom de largument en entr ee unit e imaginaire d esigne un r esultat non num erique (not a number ) nombre darguments pass es en entr ee ` a une fonction nombre darguments fournis en sortie par une fonction designe la constante trigonom etrique plus grand nombre ottant positif pouvant etre repr esent e en machine plus petit nombre ottant n egatif pouvant etre repr esent e en machine liste darguments dentr ee contenant les arguments optionnels dappel dune fonction liste darguments de retour contenant les arguments optionnels de retour dune fonction

ans computer eps flops i Inf inputname j NaN nargin nargout pi realmax realmin varargin varargout

calendar clock cputime date datenum datestr datevec

eomday etime

now tic toc weekday

Date et Heure retourne une matrice repr esentatn le calendrier du mois sp eci e retourne la date et lheure courantes sous forme dun vecteur [ann ee mois jour heures minutes secondes] calcule le temps ecoul e entre deux dates retourne la date courante convertit la date sous forme de cha ne en un nombre convertit la date sous forme dun nombre en une cha ne s epare les composantes dune date, donn ee sous forme dune cha ne ou dun nombre, en un vecteur [ann ee mois jour heures minutes secondes] d etermine le jour de n dun mois calcule le temps (en secondes) ecoul e entre deux dates donn ees sous forme de vecteur [ann ee mois jour heures minutes secondes] retourne la date et lheure courantes sous forme dun nombre d eclenche la fonction de chronom etrage arr ete la fonction de chronom etrage retourne le jour de la semaine, sous forme dun nombre ou dune cha ne, dune date donn ee 101

Y. Mor` ere

Initiation Progiciel Matlab

C.4

Matrices particuli` eres et op erations sur les matrices


Matrices et vecteurs remarquables matrice identit e g en` ere un vecteur ligne de valeurs egalement espac ees g en` ere un vecteur ligne de valeurs logarithmiquement espac ees matrices compos ees de 1 matrice (ou nombre) g en er e al eatoirement selon une distribution uniforme matrice (ou nombre) g en er e al eatoirement selon une distribution normale matrice nulle

eye linspace logspace ones rand randn zeros

cat diag fliplr flipud repmat reshape rot90 tril triu

Manipulations sur les matrices permet la concat enation de tableaux permet la d enition de matrices diagonales ou lextraction de la diagonale dune matrice permutation circulaire des colonnes permutation circulaire des lignes permet la r eplication dune valeur dans une matrice permet de transformer et redimenssionner une matrice transformation equivalente ` a lapplication successive de la transposition et de flipud extrait le triangle inf erireur dune matrice extrait le triangle sup erieur dune matrice

compan gallery hadamard hankel hilb invhilb magic pascal toeplitz wilkinson

Matrices sp ecialis ee matrice compagnon matrice de tests matrice de Hadamard matrice de Hankel matrice de Hilbert inverse dune matrice de Hilbert carr e magique matrice de Pascal matrice de Toeplitz matrice de Wilkinson 102

Y. Mor` ere

Initiation Progiciel Matlab

C.5

Fonctions math ematiques usuelles

abs acos, asin, atan, acot acosh, asinh, atanh, acoth acsc, asec acsch, asech angle ceil cos, sin, tan, cot cosh, sinh, tanh, coth csc, sec csch, sech exp fix floor gcd imag lcm log log2 log10 mod real rem round sign sqrt

Fonctions math ematiques usuelles valeur absolue dun r eel ou module dun complexe fonctions circulaires r eciproques fonctions hyperboliques r eciproques fonctions r eciproques de la cos ecante et de la s equante circulaires fonctions r eciproques de la cos ecante et de la s equante hyperboliques argumant dun nombre complexe plus petit entier sup erieur au nombre ottant consid er e fonctions circulaires directes fonctions hyperboliques directes fonctions directes de la cos ecante et de la s equante circulaires fonctions directes de la cos ecante et de la s equante hyperboliques fonction exponentielle n eperienne arrondi entier vers 0 plus grand entier inf erieur zau nombre ottant consid er e (partie enti` ere) plus grand commun diviseur partie imaginaire dun nombre complexe plus petit commun multiple fonction logarithme n ep erien fonction logarithme en base 2 fonction logarithme en base 10 reste (sign e) dune division euclidienne (fonction mudulo) partie r eelle dun nombre complexe reste dune division euclidienne arrondi au plus proche entier signe racine carr ee 103

Y. Mor` ere

Initiation Progiciel Matlab

C.6

Fonctions math ematiques sp ecialis ees

Fonctions math ematiques sp ecialis ees airy fonctions dAiry besselh fonctions de Bessel de troisi` eme esp` ece (fonction de Hankel) besseli, besselk fonctions de Bessel de premi` ere et deuxi` eme esp` eces modi ees besselj, bessely fonctions de Bessel de premi` ere et deuxi` eme esp` eces beta, batainc, fonctions B eta betaln ellipj fonction elliptiques (dites de Jacobi) ellipke int egrales elliptiques compl` etes de premi` ere et deuxi` eme esp` eces erf, erfc, erfcx, fonctions derreur erfinv expint fonction exponentielle int egrale gamma, gammainc, fonctions gamma gammaln legendre fonctions de Legendre associ ees pow2 puissances enti` eres de 2 rat, rats approximation rationnelle

cart2pol cart2sph pol2cart sph2cart

Conversion s entre syst` emes de coordonn ees transforme des coordonn ees cart esiennes en coordonn ees polaires transforme des coordonn ees cart esiennes en coordonn ees sph eriques transforme des coordonn ees polaires en coordonn ees cart esiennes transforme des coordonn ees sph eriques en coordonn ees cart esiennes

C.7

Manipulation de matrices - Alg` ebre lin eaire


Analyse matricielle Conditionnement (pour le calcul de linverse) Conditionnement (pour le calcul des valeurs propres) d eterminant normes matricielles et vectorielles noyau de lapplication lin eaire associ ee image de lapplication lin eaire associ ee rang estimation de linverse du conditionnement r eduite echelonn ee par ligne angle entre deux sous espaces vectoriels trace (some des el ements diagonaux 104

cond condeig det norm null orth rank rcond rref, rrefmovie subspace trace

Y. Mor` ere

Initiation Progiciel Matlab Syst` emes lin eaires factorisation de choleski inversion matricielles r esolution au sens des moindres carr es (la covariance etant connue) factorisation LU m ethodes des moindres carr es pseudo-inverse de Moore-Penrose factorisation QR

chol inv lscov lu nnls pinv qr

balance cdf2rdf eig hess poly qz rsf2csf schur svd

Valeurs propres et valeurs singuli` eres am eliore la pr ecision pour le calcul des valeurs propres conversion dune matrice diagonle complexe en la matrice r eelle digonale par blocs correspondante calcul des valeurs propres forme de Hessenberg associ ee ` a une matrice polyn ome caract eristique factorisation QZ conversion dune matrice r eelle diagonale par blocs en la matrice diagonale complexe correspondante d ecomposition de Schur d ecomposition en valeurs singuli` eres

expm funm logm sqrtm

Fonctions matricielles exponentielle matricielle evaluation de fonctions matricielles logarithme matriciel racine carr ee matricielle

qrdelete qrinsert

Fonctions matricielles de bas niveau eace une colonne dune factorisation QR insert une colonne dans une factorisation QR

cross intersect ismember setdiff setxor union unique

Fonctions vectorielles produit vectoriel d etermine les el ements communs ` a deux vecteurs d etermine si un nombre appara t dans un vecteur eectue la di erence ensembliste entre les el ements de deux vecteurs eectue lop eration OU-EXCLUSIF sur les el ements de deux vecteurs etablit lunion ensembliste des el ements de deux vecteurs d etermine les el ements uniques dun vecteur 105

Y. Mor` ere

Initiation Progiciel Matlab

C.8

Analyse de donn ees


Fonctions el ementaires enveloppe convexe produit cumul e somme cumul ee somme partielles au cours dune int egration num erique par la m ethode des trap` ezes Triangulation de Delaunay recherche du point le plus proche d ecomposition en produit de facteurs premiers el ement maximal dun tableau moyenne des valeurs dun tableau valeur m ediane dun tableau el ement minimal dun tableau liste toutes les permutations possibles Aire dun polygone g en` ere la liste des nombres premiers eectue le produit des el ements dun tableau trie les el ements dun tableau trie les lignes dune matrice par ordre croissant ecart type eectue la somme des el ements dun tableau int egration num erique selon la m ethode des trap` ezes recherche dun triangle de Delaunay englobant le point consid er e Diagramme de Voronoi

convhull cumprod cumsum cumtrapz delaunay dsearch factor max mean median min perms polyarea primes prod sort sortrows std sum trapz tsearch voronoi

del2 diff gradient

Di erences nies Laplacien discret d erivation discr` ete (di erences nies) gradiant num erique

corrcoef cov

Corr elation coecient de corr elation matrice de covariance

conv conv2 deconv filter

filter2

Filtrage et convolution convolution et produit de polyn omes convolution bidimensionnelle d econvolution et division de polyn ome ltrage num erique avec ltre de type RIF (r eponse impulsionnelle nie) et avec ltres de type RII (r eponse impulsionnelle innie) ltrage num erique bidimensionnel 106

Y. Mor` ere

Initiation Progiciel Matlab Transformation de Fourier module dun nombre complexe argument dun nombre complexe associe des nombres complexes par paires de nombres deux ` a deux conjugu es transform ee de Fourier rapide monodimensionnelle transform ee de Fourier rapide bidimensionnelle permet le centrage du spectre dune transform ee de Fourier rapide transform ee de Fourier inverse monodimensionnelle transform ee de Fourier inverse bidimensionnelle d etermine la puisance de 2 imm ediatement sup erieure au nombre pass e en argument corrige les angles des phases

abs angle cplxpair fft fft2 fftshift ifft ifft2 nextpow2 unwrap

C.9

Polyn omes et interpolation


Polyn omes convolution et produit de polyn omes d econvolution et division de polyn ome d etermine un polyn ome ` a partir de ses racines d erivation polynomiale probl` eme polynomial de valeurs propres ajustement polynomial au sens des moindres carr es evaluation dun polyn ome en un point evaluation dun polyn ome de matrice d ecomposition en el ement simples calcul des racines dun polyn omes

conv deconv poly polyder polyeig polyfit polyval polyvalm residue roots

interp1 interp2 interp3 interpft interpn meshgrid ndgrid spline

Interpolation interpolation de donn ees monodimensionnelles interpolation de donn ees bidimensionnelles interpolation de donn ees tridimensionnelles interpolation de donn ees dans le domaine fr equentiel fond ee sur une transform ee de Fourier rapide interpolation de donn ees multidimensionnelles g en` ere des matrices pour l etablissements dun graphique en 3 dimensions g en` ere les tableaux pour une interpolation multidimensionnelle interpolation par des splines cubiques 107

Y. Mor` ere

Initiation Progiciel Matlab

C.10

Int egration num erique


Inr egartion num erique int egration num erique dune int egrale double minimisation dune fonction dune variable minimisation dune fonction de plusieurs variables recherche num erique des z eros dune fonction dune variable solveurs (sch emas dint egration num erique de Runge-Kutta, Adams-Bashforth-Moulton, ...) d equation di erentielle permet de d enir une equation di erentielle en vue dun r esolution num erique permet de conna tre les param` etres dune r esolution num erique d equation di erentielles permet de modier les param` etres dune r esolution num erique d equation di erentielles int egration num erique dune int egrale vectorisation dune expression

dblquad fmin fmins fzero ode45, ode23, ode113, ode15s, ode23s odefile odeget odeset quad, quad8 vectorize

C.11

Fonctions permettant de traiter le son


Fonctions permettant de traiter le son lecture de chiers son au format Next/SUN (chier .au) ecriture de chiers son au format Next/SUN (chier .au) lecture de chiers et de ressources son enregistrement du son conversion des vecteurs en son d etermine les capacit es de traitement du son prononce une chaine de caract` eres lecture de chiers son au format Microsoft WAVE (chier .wav) ecriture de chiers son au format Microsoft WAVE (chier .wav) ecriture de chiers et de ressources son

auread auwrite readsnd recordsound sound soundcap speak wavread wavwrite writesnd

C.12

Repr esentations graphiques

Repr esentation graphique en dimension 2 plot graphique en coordonn ees lin eaires loglog graphique en coordonn ees logarithmiques polar graphique en coordonn ees polaires semilogx, semilogy graphique en coordonn ees semilogarithmique Repr esentation graphique en dimension 3 repr esentation ` a base de polygones repr esentatino dune nappe par maillage repr esentation de segments et de points en dimension 3 repr esentation dune nappe par une surface 108

fill mesh plot3 surf

Y. Mor` ere

Initiation Progiciel Matlab Gestion des axes cr eation daxes en positions arbitraires contr ole de lapparence et de l echelle des axes encadre le graphique avec des axes cr ee un quadrillage superpos e au graphique g` ele la gure graphique courante juxtapose des graphiques dans la m eme gure agrandit ou diminue une gure Annotation dune gure permet de placer du texte sur une gure ` a laide de la souris ajoute une l egende ` a la gure place du texte sur la gure place un titre sur la gure place une etiquette sur laxe correspondant

axes axis box grid hold subplot zoom

gtext legend text title xlabel, zlabel

ylabel,

print printopt orient

Impression impression ou copie dans un chier M dun graphique options dimpression orientation du papier

C.13

Traitement des cha nes de caract` eres


Manipulation de cha nes de caract` eres enl` eve tous les caract` eres blancs susceptibles de se trouver en n dune cha ne provoque linterpr etation et l evaluation du contenu dune cha ne recherche une cha ne dans une cha ne convertit en minuscule tous les caract` eres dune cha ne concat` ene des cha nes compare deux cha nes justie un tableau de caract` eres ltre une cha ne compare le n -i` eme caract` ere de deux cha nes cherche et remplace un motif dans une cha ne recherche une cl e dans une cha ne concat` ete des cha nes verticalement convertit en majuscules tous les caract` eres dune cha ne Conversion entre cha nes et nombres cr ee un tableau de caract` eres (cha ne) convertit un nombre entier en cha ne de caract` eres convertit une matrice en cha ne de caract` eres ecrit des donn ees format ees dans une cha ne lit une cha ne format ee convertit un cha ne de caract` eres en une matrice de nombres 109

deblank eval findstr lower strcat strcmp strjust strmach strncmp strrep strtok strvcat upper

char int2str mat2str sprintf sscanf str2num

Y. Mor` ere

Initiation Progiciel Matlab Autres fonctions de conversion convertit un nombre binaire en nombre entier convertit un nombre entier en nombre binaire convertit un nombre entier en un nombre hexad ecimal ( ecrit sous forme de cha ne de caract` ere) convertit un nombre hexad ecimal ( ecrit sous forme de cha ne de caract` ere) en un nombre entier convertit un nombre hexad ecimal ( ecrit sous forme de cha ne de caract` ere) en un nombre ottant double pr ecision

bin2dec dec2bin dec2hex hex2dec hex2num

C.14

Fonction dentr ees/sortie


Ouverture et fermeture de chiers ferme un ou plusierus chiers ouvre un chier; permet dobtenir des renseignements sur les chiers ouverts

fclose fopen

fread fwrite

Entr ees/sortie non format ees permet la lecture dans un chier binaire permet l ecriture dans un chier binaire

fgetl

fgets

fprintf fscanf feof ferror frewind fseek ftell

Entr ees/sortie format ees retourne la prochaine ligne du chier lu sous forme dune cha ne de caract` eres, le caract` ere de retour ` a la ligne n etant pas inclus dans la cha ne retourne la prochaine ligne du chier lu sous forme dune cha ne de caract` eres, le caract` ere de retour ` a la ligne etant inclus dans la cha ne permet l ecriture format ee dans un chier permet la lecture format ee dans un chier permet la d etection de la n dun chier retourne le message et le num ero derreur de la derni` ere op eration dentr ees/sorties positionne le pointeur du chier donn e sur le premier octet deplace le pointeur du chier donn e pour le positionner ` a lendroit indiqu e indique la position du pointeur du chier donn e

sscanf sprintf

Conversion de cha nes permet lextraction dinformations (sous un format particulier) dune cha ne de caract` eres permet lenvoi de sorties format ees dans une cha ne de caract` eres 110

Y. Mor` ere

Initiation Progiciel Matlab Fonction dentr ees/sortie sp ecialis ees lecture dun chier ASCII d elimit e dans une matrice ecriture dune matrice dans un chier ASCII d elimit e information sur limage stock ee dans un chier graphique lecture dune image dans un chier graphique ecriture dune image dans un chier graphique ecriture dun chier QuickTime lecture dune feuille de calcul au format Lotus dans une matrice ecriture dune matrice dans une feuille de calcul au format Lotus r ecup` ere le contenu de cellules dune feuille de calcul Excel etablit le contenu de cellules dune feuille de calcul Excel

dlmread dlmwrite imfinfo imread imfwrite qtmwrite wk1read wk1write xlgetrange xlsetrange

C.15

Types et structures de donn ees


Conversion de cha nes convertit en un nombre ottant double pr ecision cr ee une matrice creuse cr ee un tableau de caract` eres (cha ne) cr ee un tableau de cellules cr ee (ou convertit) en tableau de structures convertit en un entier non sign e cod e sur 8 bits

double sparse char cell struct uint8

cat flipdim ipermute ndgrid ndims permute shiftdim squeeze

Fonctions sur les tableaux concat` ene deux tableaux eectue une permutation circulaire sur un tableau selon une dimension sp eci ee inverse la fonction permute g en` ere des tableaux pour des repr esentations graphiques nombre de dimensions dun tableau echange des dimensions dun tableau d ecale les dimensions dun tableau compacte un tableau en supprimant les dimensions r eduites ` a un el ement

cell cellstr cellstruct celldisp num2cell cellplot

Fonctions sur les tableaux de cellules cr ee un tableau de cellules cr ee un tableau de cellules de cha nes ` a partir dun tableau de caract` eres convertit un tableau de cellules en un tableau de structures ache le contenu des cellules dun tableau convertit un tableau de nombres en un tableau de cellules repr esente graphiquement la structure dun tableau de cellules 111

Y. Mor` ere

Initiation Progiciel Matlab Fonctions sur les structures (enregistrements) noms des champs dune structures acc` ede au contenu dun champ dune structure supprime des champs dune structure etablit la valeur dun champ dune structure cr ee une structure (enregistrements) transforme un tableau de structures en un tableau de cellules

fieldnames getfield rmfield setfield struct struct2cell

112

You might also like