Vous êtes sur la page 1sur 71

Universit Sidi Mohammed Ben Abdallah Facult Des Sciences et Techniques Fs Dpartement Gnie Electrique

LICENCE ETI Electronique, Tlcommunications et Informatique

Introduction MATLAB et Simulink

Pr. Abdellah MECHAQRANE


Anne Universitaire 2007-2008

Introduction MATLAB (abrviation de MATrix LABoratory) est un langage de haute performance. Il intgre calcul, visualisation (graphiques) et programmation dans un environnement facile utiliser et o les problmes et les solutions sont exprims en notation mathmatique familire. MATLAB est un systme interactif dont les variables ou lments de la base de donnes ne ncessitent pas de dimensionnement. Cela vous permet de rsoudre beaucoup de problmes techniques, notamment ceux formulations vectorielle ou matricielle, en une fraction du temps qu'il ne faudrait pour crire un programme dans un langage non-interactif tels que C ou Fortran. MATLAB dispose de nombreuses Toolboxes (Botes outils) qui sont des collections compltes des fonctions MATLAB (M-files) spcifiques un domaine dapplications donn : Traitement du signal, Traitement dimages, Tlcommunications, Statistiques, Optimisation, Identification, Contrle de systmes, Il existe deux modes de fonctionnement: 1. mode interactif : MATLAB excute les instructions au fur et mesure qu'elles sont donnes par l'usager. 2. mode excutif : MATLAB excute ligne par ligne un M-file (programme en langage MATLAB). Avertissement : Ce document a pour but de vous initier Matlab et de vous montrer lintrt et la facilit de son utilisation. Cependant, un tel document ne peut en aucun cas prsenter toutes les fonctionnalits de ce puissant logiciel. Il vous est donc vivement conseill de consulter sa documentation disponible ligne au site web :
http://www.mathworks.com/access/helpdesk/help/techdoc/matlab.shtml

en

I. Le systme MATLAB Le systme MATLAB se compose de cinq parties principales: Environment Development : Il s'agit dun ensemble doutils qui vous aident utiliser les fonctions et fichiers MATLAB. Beaucoup de ces outils sont des interfaces graphiques. Les principaux outils sont : la fentre de commande (Command Window), un historique des commandes (Command History), un diteur et un dbogueur et les navigateurs pour visualiser l'aide, l'espace de travail, des fichiers, et le chemin de recherche (Search path).

Lapparence de la fentre principale peut tre change en utilisant la commande View de la barre doutils :

La bibliothque de fonctions mathmatiques MATLAB : Il s'agit d'une vaste collection d'algorithmes de calcul allant des fonctions lmentaires comme la somme (sum), sinus (sin), cosinus (cos), , des fonctions plus sophistiques comme linversion des matrices (inv), le calcul des valeurs propres et des vecteurs propres dune matrice (eig), fonctions de Bessel (bessel), transformes de Fourier rapides (fft), . Le langage MATLAB : Il s'agit d'un langage matriciel de haut avec des dclarations de contrle de boucles, des fonctions, des structures de donnes, des entres / sorties et des fonctionnalits de programmation oriente objet. Et le plus important est que Matlab est un langage interprt : toute commande tape dans la fentre de commande est immdiatement excute (aprs la frappe de return). Il nest pas ncessaire de compiler un programme avant de lexcuter : >> 2+2 ans = 4 >> 5^2 ans = 25

Quand vous ne spcifiez pas une variable de sortie, MATLAB utilise la variable ans (abrviation de answer (rponse)) pour stocker les rsultats pour un ventuel calcul. Graphiques : MATLAB possde une facilit extensive permettant d'afficher des vecteurs et des matrices sous forme de graphique. Il comprend des fonctions de haut-niveau pour la visualisation bidimensionnelles et tridimensionnelles de donnes, d'images, danimations. Il comprend galement des fonctions de bas niveau, ce qui vous permet de personnaliser entirement l'apparence des graphiques ainsi que de construire des interfaces graphiques compltes pour vos applications MATLAB. I.1 Les Expressions Comme la plupart des autres langages de programmation, MATLAB fournit des expressions mathmatiques, mais contrairement la plupart des langages de programmation, la totalit de ces expressions impliquent des matrices. Les lments constitutifs sont des expressions : Nombres Oprateurs Fonctions Variables Exemples d'expressions : rho = sqrt(x)/2

fonction

variable oprateur nombres

I.2 Nombre MATLAB utilise la notation dcimale classique : un point pour sparer la partie entire de la partie dcimale et un signe moins pour les nombres ngatifs; labsence du signe indique que le nombre est positif. Il utilise la lettre e pour spcifier une puissance de dix. Pour les nombres imaginaires MATLAB utilise indiffremment les suffixes i ou j. Exemples de nombres : 3 9.6397238 1i -99 1.60210e-20 -3.14159j 0.0001 6.02252e23 3e5i

Tous les chiffres sont stocks en utilisant le format long spcifi par l'IEEE en virgule flottante standard. Les nombres en virgule flottante ont une prcision finie de 16 chiffres dcimaux significatifs et un intervalle de variation d'environ 10-308 10+308. Vous trouvez la fin de lannexe 3 linventaire des diffrents formats utiliss par MATLAB. I.3 Oprateurs MATLAB utilise les oprateurs usuels suivants pour manipuler les expressions : Fonctions + * ^ / \ Dfinition Addition Soustraction Multiplication Puissance Division Division gauche Transpos conjugu

Il utilise aussi des oprateurs logiques et relationnels : Fonctions <> <= == ~= & | ~ xor >= Dfinition diffrent de infrieur (suprieur) ou gal gal diffrent et logique ou complment logique (not) ou exclusif

I.4 Fonctions MATLAB fournit un grand nombre de fonctions mathmatiques lmentaires standard, y compris sin (sinus), cos (cosinus), tan (tangente), abs (valeur absolue ou module), sqrt (racine carre), exp (exponentiel), . La plupart de ces fonctions acceptent des arguments complexes. Pour obtenir une liste des fonctions mathmatiques lmentaires, tapez : >> help elfun MATLAB fournit galement de nombreuses fonctions mathmatiques plus avances, y compris les fonctions de Bessel et gamma. Pour obtenir une liste de ces fonctions, tapez : >> help specfun Plusieurs fonctions spciales fournissent des valeurs de constantes utiles :

Fonctions pi i j

Dfinition 3.14159265 Nombre imaginaire Comme i Prcision relative des nombres rels (distance entre 1.0 et le nombre rel flottant le plus proche), 2- 5 2

eps

realmin realmax inf NaN date I.5 Variables

Le plus petit nombre rel, 2- 1 0 2 2 Le plus grand nombre rel, (2-eps)1 0 2 3 Infinie Not-a-Number (ce nest pas un nombre) : 0/0=NaN Date

Matlab travaille essentiellement avec un seul type dobjet : une matrice (de dimension NxM). Une matrice 11 est interprte comme un scalaire, celle ayant une seule ligne (1xN) ou une seule colonne (Nx1) comme un vecteur. Ainsi, dans Matlab, il n'est pas ncessaire de dclarer le type (relle, complexe, ) ou la dimension (scalaire, matrice) de la variable que l'on manipule, y compris les tableaux. Lorsque MATLAB rencontre un nouveau nom de variable, il cre automatiquement la variable et alloue la capacit approprie de stockage. Si la variable existe dj, MATLAB modifie son contenu et, si ncessaire, il alloue une nouvelle capacit stockage. Les noms des variables sont composs d'une lettre, suivie d'un nombre quelconque de lettres, chiffres ou de sous-tirets. MATLAB utilise seulement les 31 premiers caractres d'un nom de variable et tablit une distinction entre majuscules et minuscules : A et a ne sont pas la mme variable. Pour visualiser la matrice affecte une variable, il suffit d'entrer le nom de la variable.

Aussi, il faut viter de mettre dans le nom des variables des oprateurs Matlab tels que -, +, *, /, \ , &, |, . I.5.1 Variables relles En Matlab, chaque nombre rel est reprsent en virgule flottante avec une double prcision, cest--dire 8 octets. Par exemple, >> num_students = 25 cre une variable (matrice 1x1) nomme num_students et stocke la valeur 25 dans le seul lment. >> x = pi/4 assigne la variable x la valeur pi/4. Remarques : Un point virgule ; la fin de la ligne permet de ne pas afficher ce rsultat. Ceci est trs utile surtout lorsquon excutera des programmes importants : laffichage des rsultats des instructions dans la fentre de commande retarde lexcution des programmes. On peut taper plusieurs commandes par ligne, spares par une virgule ou un point virgule. >> x = pi/2 ; y = sin(x) ; Lorsquune ligne de commande est trop longue on peut linterrompre par trois points ... et la poursuivre la ligne suivante. On peut aussi mettre des commentaires dans une ligne de commande laide du signe "

% ".

I.5.2 Variables complexes Matlab travaille indiffremment avec des nombres rels ou complexes. Par dfaut, les variables i et j sont assignes la valeur complexe. Naturellement, si vous redfinissez la variable i ou j avec une autre valeur elle naura plus la mme signification. >> j = 3 + 2*i j = 3.0000 + 2.0000i Les fonctions usuelles de manipulation des nombres complexes sont prdfinies dans Matlab : real, imag, abs, angle (en radian), conj. >> r = abs(j) ; >> theta = angle(j) ; >> y = r*exp(i*theta) ; I.5.3. Vecteurs Les vecteurs et matrices sont souvent utiliss dans Matlab pour reprsenter les donnes. Rapelons que dans Matlab, toute variable est une matrice (scalaire : matrice 1x1, vecteur : matrice 1xN ou Nx1). I.5.3.1 Vecteurs Un vecteur ligne peut tre cr de la faon suivante : >> vl=[1, 2, 3] ou >> vl=[1 2 3]

10

Cest--dire que, dans un vecteur ligne, les lments sont spars par une virgule ou un espace. Un vecteur colonne peut tre cr de la faon suivante : >> vc=[1 ; 2 ; 3] Cest--dire que, dans un vecteur colonne, les lments sont spars par un point virgule. Remarque : Les lments dun vecteur (ou plus gnralement dune matrice) peuvent tre des expressions mathmatiques de Matlab : >> x = [ -1.3, sqrt(3), (1+2+3)*4/5, 2*exp(i) ] Les lments dun vecteur peuvent tre rfrencs par leurs indices : >>x(2) ans = 1.7321 >> x(4) ans = 1.0806 + 1.6829i On peut avoir des informations sur la longueur dun vecteur laide de commande length : >> length(x) On peut avoir le transpos ou le transpos conjugu dun vecteur : >> x % Transpose conjugue de x >> x. % Transpose de x

11

I.5.4 Matrices Pour crer une matrice dans MATLAB, on doit suivre les conventions de base suivantes : sparer les lments d'une ligne avec des espaces ou des virgules. Utilisez un point-virgule ; pour indiquer la fin de chaque ligne. Entourez l'intgralit de la liste des lments avec des crochets [ ]. Exercice : Crer dans la fentre de commande MATLAB, la matrice suivante : 16 3 2 13 5 10 11 8 A= 9 6 7 12 4 15 14 1 Une fois que vous avez crit la matrice A (en respectant les consignes cidessus), et valider en appuyant sur la touche Entr du clavier. Aussitt, la matrice A est mmorise automatiquement dans lespace de travail MATLAB (MATLAB workspace). I.5.4.1 Quelques oprations sur les matrices On peut se rfrer la matrice ci-dessus simplement par la lettre A. Essayer alors les commandes suivantes : >> sum(A) La commande sum(A) permet de calculer un vecteur ligne contenant la somme des colonnes de A. Quen est-il de la somme des lignes ? Puisque MATLAB a une prfrence pour le travail avec les colonnes d'une matrice, donc la faon la plus simple pour obtenir la somme des lignes est de transposer la matrice, puis calculer la somme comme ci-dessus et de transposer ensuite le rsultat. Lopration de transposition est ralise par une apostrophe, ' . Cette

12

opration inverse la matrice sur sa diagonale principale et transforme un vecteur ligne en un vecteur colonne. Exercice : a) Calculer la somme des lignes de la matrice A. b) Calculer la somme de la diagonale de A (diag(A)). L'autre diagonale, la soi-disant antidiagonale, n'est pas si importante mathmatiquement, de sorte que MATLAB ne dispose pas d'une fonction prprogramme pour elle. Mais une fonction initialement destine tre utilises dans les graphiques, fliplr, renverse une matrice de gauche droite. Exercice : Calculer la somme de lantidiagonale de la matrice A. Conclure. Savez-vous quel nom est donn une matrice telle que A ? Les sections suivantes continueront utiliser la matrice A pour illustrer les capacits supplmentaires MATLAB. I.5.4.2 Indexation des lments dune matrice L'lment dans la ligne i et la colonne j de A est not A(i, j). Par exemple, A(4,2) est le nombre de la quatrime range et de la deuxime colonne. Pour notre carr magique, A(4,2) est 15. Ainsi, pour calculer la somme des lments dans la quatrime colonne de A, on peut crire : >> A(1,4) + A(2,4) + A(3,4) + A(4,4) Mais ceci n'est pas la faon la plus lgante pour calculer la somme dune colonne unique (imaginer le cas dune trs grande matrice. Nous allons voir ci-dessous comment calculer la somme dune colonne (ou dune ligne) dune matrice dune faon plus simple. Il est galement possible de se rfrer des lments d'une matrice avec un seul indice, A (k). Dans ce cas la matrice est considre comme un long vecteur colonne form de colonnes de la matrice originelle. Donc, pour notre

13

carr magique, A (8) est une autre manire de se rfrer la valeur stocke dans A (4,2). En rsum, on a deux faon dindexer une matrice, soit pour la matrice A :
A (1,1) A ( 2,1) A ( ligne, colonne ) = A ( 3,1) A ( 4,1) A (1, 2 ) A ( 2, 2 ) A (1,3) A ( 2,3) A (1, 4 ) A (1, ) A ( 2, 4 ) A ( 2) ou A ( indice ) = A ( 3) A ( 3, 4 ) A ( 4, 4 ) A ( 4) A ( 5) A (6) A (9) A (10 ) A (13) A (14 ) A (15 ) A (16 )

A ( 3, 2 ) A ( 4, 2 )

A ( 3,3) A ( 4,3)

A(7) A (8)

A (11) A (12 )

Exercice : Crer une matrice B contenant uniquement les lments centraux de A, cest- dire :

16 3 2 13 5 10 11 8 B= 9 6 7 12 4 15 14 1
Si vous essayez d'utiliser un lment extrieur la matrice, Matlab vous envoie une erreur. Exemple : >> t = A(4,5) ??? Index exceeds matrix dimensions. En revanche, si vous stockez une valeur dans un lment en dehors de la matrice, la taille augmente pour accueillir le nouveau venu. Exercice : Appliquer et commenter les commandes suivantes : >> X = A; >> X(4,5) = 17 I.5.4.3 L'oprateur : : est l'un des plus importants oprateurs de MATLAB. Il se produit dans plusieurs formes diffrentes. Sa syntaxe est :

14

Xin : pas : Xfin

Valeur initiale

Le pas

Valeur finale

Exercice : Appliquer et commenter les commandes suivantes : >> 1:10 >> 0:pi/4:pi >> 100:-7:50 Une autre fonction MATLAB permet de gnrer des valeurs rgulirement espaces dans un intervalle donn, cest la fonction linspace : linspace(x,y) : gnre 10 valeurs rgulirement espaces entre x et y. linspace(x,y,N) : gnre N valeurs rgulirement espaces entre x et y. Loprateur : est souvent utilis pour se rfrer des parties dune matrice. Ainsi : >> y = A(1:k, j) reprsenterait un vecteur colonne contenant les lments de la 1re kime ligne de la jme colonne. Remarque : lorsquon veut utiliser tous les lments dune ligne ou dune colonne, il suffit dcrire : >> y = A( : , j ) est le vecteur colonne constitu par tous les lments de la colonne j de la matrice A >> y = A( j , : ) est le vecteur ligne constitu par tous les lments de la ligne j de la matrice A Exercice : a) Calculer la somme des lments dans la quatrime colonne de la matrice A.

15

Le dernier lment d'une ligne ou d'une colonne peut tre index par la variable end. Essayer les commandes suivantes : >> A(:,end) >> A(end,end-1) I.5.4.4 Suppression de lignes et de colonnes Vous pouvez supprimer des lignes et des colonnes d'une matrice en utilisant juste une paire de crochets. Pour conserver notre matrice A dorigine, on effectuera les calculs sur une matrice X, telle que : >> X=A ; Pour supprimer la 2me colonne de la matrice X, il suffit dexcuter la commande suivante : >> X(:,2) = [] Exercice : a) Supprimer la 3me colonne de la matrice X. b) supprimer les 1re et 2me colonnes de la matrice X=A. c) supprimer les 3me et 4me lignes de la matrice X=A. Si vous supprimez un lment unique partir d'une matrice, le rsultat n'est plus une matrice. Ainsi, une expression telle que : >> X(1,2) = [] Entranera une erreur. I.5.4.5 Oprations sur les matrices Le tableau ci-dessous reprsente les principales oprations mathmatiques que lon peut raliser laide de MATLAB :

16

Oprations

Forme dans Matlab

Commentaires

Addition Soustraction Multiplication de

A+B A-B

Dimensions doivent tre les mmes Dimensions doivent tre les mmes La multiplication se fait lment par lment. Les deux matrices doivent tre de mmes

matrices (lment par lment)

A.*B dimensions, ou l'une d'elles peut tre un scalaire.

Multiplication de A*B matrices

Le nombre de colonnes dans "a" doit tre le mme que le nombre de ranges dans "b" La division se fait lment par lment. Les

Division de matrices A./B (lment par lment)

deux matrices doivent tre de mmes dimensions, ou l'une d'elles peut tre un scalaire.

Division de matrices Exposant sur matrices

A/B A.^B

quivalent "a * inv(b)" Se fait lment par lment

Exercice : a) Calculer le produit de la matrice A par elle mme. b) Calculer le produit lment par lment de la matrice A. b) Multiplier la 3me colonne de A par 2.

I.5.4.6 Matrices particulires Le tableau ci-dessous dcrit quelques fonctions MATLAB permettant de gnrer quelques matrices particulires :

17

Fonctions

Dfinition

zeros(n) zeros(n,m) ones(n) ones(n,m) eye(n) eye(n,m) rand(n,m) randn(n,m) magic(n)

Gnre une matrice de zros de grandeur nxn Gnre une matrice de zros de grandeur nxm Gnre une matrice de "1" de grandeur nxn Gnre une matrice de "1" de grandeur nxm Gnre une matrice identit de grandeur nxn Gnre une matrice identit de grandeur nxm Matrice nxm forme dlments alatoires uniformment distribus Matrice nxm forme dlments alatoires normalement distribus Cre un carr magique de dimension n

Exercice : Essayer les commandes suivantes : >> Z = zeros(2,4) >> F = 5*ones(3,3) >> R = randn(4,4) R-excuter la dernire instruction (R=). Comparer la nouvelle matrice avec lancienne. Quest ce que vous constatez ? Pouvez-vous justifier cette diffrence ? Pour connatre les dimensions (lignes, colonnes) dune matrice, on utilise la commande MATLAB : size (exemple : size(R)) I.5.4.7 Concatnation La concatnation est le processus d'assemblage de petites matrices pour en faire une plus grande. Exercice : Utiliser la matrice A et construisez la matrice B dfinie par : B = [A A+32; A+48 A+16]

Quelles sont les dimensions de la matrice B ?

18

I.5.4.8 Algbre linaire Les oprations mathmatiques sur les matrices font l'objet de l'algbre linaire. Le symbole de multiplication, * , dsigne la multiplication matricielle, cest-dire les produits entre les lignes de la premire matrice et les colonnes de la deuxime. Exercice : Soit la matrice : K=A*A Quelle est la particularit de la multiplication dune matrice par son transpos ?

Exercice : Calculer le dterminant de la matrice A : d=det(A) Lorsque le dterminant dune matrice est nul, cette matrice est dite singulire et elle nadmet pas de matrice inverse. Si vous essayez de calculer l'inverse avec : >> X = inv(A) vous obtiendrez le message d'avertissement :
Warning: Matrix is close to singular or badly scaled.

Lannexe 1 prsente quelques oprations mathmatiques intressantes sur les matrices.

19

I.6 Manipulation des donnes I.6.1 Construction de tableaux - Donnes Multidimensionnelles Supposons que n est le vecteur colonne : >> n=(0:9) Alors >> pows = [n n.^2 2.^n]

Retourne un tableau contenant n dans la 1re colonne, le carr de n (n2) dans la 2me colonne et 2 la puissance n (2n) dans la 3me colonne. Les fonctions mathmatiques lmentaires agissent sur des tableaux lment par lment. Ainsi : >> pows1 = pows + 1 ajoute 1 chacun des lments du tableau pows, et : >> log(pows1) Calcule le logarithme nprien de chacun des lments du tableau pows1. I.6.2 Analyse statistique MATLAB effectue lanalyse statistique des donnes suivant les colonnes. Chaque colonne d'un jeu de donnes reprsente une variable, et chaque ligne une observation. Le (i, j)me lment est la ime observation de la jme variable. Comme exemple, considrons un ensemble de donnes avec trois variables:

La frquence des battements cardiaques Poids Nombre dheures d'exercice par semaine

20

Pour cinq observations, on a le tableau suivant : D = [ 72 81 69 82 75 134 201 156 148 170 3.2 3.5 7.1 2.4 1.2 ]

La premire ligne contient la frquence cardiaque, le poids et le nombre dheures d'exercice pour le patient 1, la deuxime range contient les donnes du patient 2, et ainsi de suite. Maintenant, vous pouvez appliquer de nombreuses fonctions d'analyse de donnes MATLAB cet ensemble de donnes. Par exemple, pour obtenir la moyenne et l'cart-type de chaque colonne, utilisez les fonctions : >> mu = mean(D), >> sigma = std(D) Pour obtenir la liste des fonctions d'analyse des donnes disponibles dans MATLAB, tapez : >> help datafun Pour obtenir la liste des fonctions d'analyse statistique, tapez : >> help stats I.6.3 Enregistrement et rappel des donnes Pour enregistrer des donnes laide de Matlab, on utilise la commande save dont la syntaxe est la suivante :

21

save nomfichier var1 var2 var3

Nom que vous voulez donner Nom des variables que vous au fichier dans lequel vous voulez enregistrer et qui allez enregistrer vos donnes doivent se trouver dans lespace de travail.
Les donnes var1, var2 et var3 seront enregistres dans le fichier nomfichier qui aura une extension .mat qui est lextension des fichiers de donnes enregistrs sous Matlab. Remarque : Avant de procder lenregistrement, on vrifier dabord que les variables sont dans lespace de travail. Ceci peut se faire laide des commandes : >> who qui renvoie le nom des variables contenues dans lespace de travail ou >> whos qui renvoie le nom de ces variables, leur taille, leur occupation en mmoire et leur classe. Exercice : Enregistrer les matrices A et D dans un fichier appel myfirstmat . La commande : >> clear X Permet deffacer la variable X de lespace de travail. La commande : >> clear Efface quant- elle toutes les variables contenues dans lespace de travail.

22

Exercice : Effacer ensuite A de lespace de travail. Vrifier quelle est bien efface. (Calculer m=mean(D), sd=std(D) et d=det(D)). Quelles sont les variables prsentes dans lespace de travail ? Effacer toutes ces variables de lespace de travail. Lorsque vous aurez besoin des donnes enregistres dans un fichier .mat, il suffit dutiliser la commande load suivie du nom du fichier de donnes pour les recharger dans lespace de travail. La syntaxe est la suivante : load nomdufichier Pour les fichiers .mat, il nest pas ncessaire de prciser lextension .mat. Exercice : Recharger les donnes enregistres dans le fichier myfirstmat dans lespace de travail. Quelles sont alors les variables prsentes dans lespace de travail ? Remarque : Matlab peut lire plusieurs formats de donnes: load nomfichier.dat ; % donnes enregistres sous le format .dat load nomfichier.txt ; % donnes enregistres sous le format .txt Pour les fichiers .dat et .txt, il faut prciser lextension. xlsread('nomfichier') ;% lecture de donnes dans un fichier Excel. imread('nomfichier', format) ;% lecture dune image de format donne. Taper le help de ces fonctions pour connatre leur fonctionnement dtaill.

23

I.6.4 Matrices et scalaires Matrices et scalaires peuvent tre combins de plusieurs faons diffrentes. Par exemple, un scalaire est soustrait une matrice en le soustrayant de chaque lment. Il en est du mme pour laddition et pour la multiplication. Exercice : Pour centrer des donnes statistiques, il suffit den soustraire la valeur moyenne. A partir de notre matrice A, crer une matrice M dont la moyenne de chaque colonne est nulle. On peut attribuer un scalaire l'ensemble des indices dans une gamme. Par exemple, la commande : >> M(1:2,2:3) = 0 attribuera un zro aux lments compris entre les lignes 1 et 2 et les colonnes 2 et 3 de la matrice M. I.6.5 Elments rpondant une condition donne Dans la manipulation des donnes, on est parfois contraint de choisir uniquement des donnes particulires rpondant un critre (ou condition) donn. Dans MATLAB, ceci peut se faire laide de la fonction find. Cette fonction dtermine les indices (les positions dans la matrice) des lments qui rpondent une mme condition logique donne. Dans sa forme la plus simple, find retourne un vecteur colonne. Transposer ce vecteur pour obtenir un vecteur ligne. Par exemple, >> k = find(isprime(A))' donne les indices des nombres premiers contenus dans la matrice A. Pour trouver les valeurs des lments associs ces indices, il suffit de taper : >> A(k)

24

Cette fonction utilise souvent les oprateurs logiques ( I.3). Exercice : a) Trouver les lments de A qui sont infrieurs 7. b) trouver lindice de llment de A qui est gal 7. c) Trouver les lments de A qui sont infrieurs ou gal 3 ou suprieurs ou gal 13. I.7 Chane de caractres Matlab traite toutes les donnes sous forme matricielle, c'est--dire soit comme un tableau de nombres, soit comme un tableau de caractres. Par exemple, une phrase sans saut de ligne sera un vecteur de caractres. Les chanes de caractres sont dlimites par des apostrophes ' : >> txt1 = 'Bonjour les amis' >> txt1(1:8) Pour rcuprer une chane entre par l'utilisateur au clavier, on utilise la fonction input avec l'argument 's' signifiant string. La commande input est utilisable en mode caractre (prsence de l'argument 's') ou numrique (absence de l'argument 's'). >> txt2 = input('Tapez votre texte : ','s')

Lexcution de linstruction ci-dessus nest accomplie quune fois la chane de caractres est crite et valide par la touche Entre . L'affichage du texte est possible par les commandes disp et sprintf : disp permet d'afficher une variable ou une chane de caractres, ou toute combinaison licite des 2. >> disp(A) >> disp(txt2)

25

>> disp('Ceci est un texte') Le mlange de variables numriques et de caractres se fait grce la fonction num2str (number to string) qui convertit un nombre en chane : >> disp(['l''lment A(3,3) vaut : 'num2str(A(3,3))]) >> disp(['La matrice A vaut :' num2str(A)]) Cette dernire ligne nest pas valide car la chaine de caractre est un vecteur ligne alors que la partie numrique est une matrice. Pour rsoudre ce problme, on utilise soit linstruction : >> disp( strvcat('La matrice A vaut :', num2str(A)) ) soit linstruction : >> disp('La matrice A vaut : '), disp(A) La fonction sprintf est une fonction similaire la fonction printf du langage C. Par rapport la fonction disp, elle permet d'inclure plus facilement des rsultats numriques au milieu de texte, et de choisir la prcision d'affichage : >> sprintf('A est une \nmatrice %dx%d',size(A,1),size(A,2)) Pour plus de dtails sur cette fonction, consulter son help. I.8 Contrle de la fentre de commande et des entres et sorties Jusqu'ici, vous avez utilis la ligne de commande MATLAB, tap des fonctions et expressions et vous avez vu les rsultats imprims dans la fentre de commande. Cette section dcrit : Les fonctions de format, pour contrler l'apparence des valeurs affiches Suppression de laffichage de la Sortie

26

Entrer de longues dclarations Modification de la ligne de commande I.8.1 La Fonction format La fonction format contrle le format daffichage des valeurs numriques affiches par MATLAB. La fonction affecte seulement la faon dont les valeurs sont affiches, et non la faon dont MATLAB calcule ou enregistre ces valeurs. Pour contempler les diffrents formats ainsi que le rsultat produit, on va considrer un vecteur x avec deux composantes de diffrentes amplitudes, soit : >> x = [4/3 1.2345e-6]; pour voir laffichage produit par le format short, il suffit de taper : >> format short,x Contempler leffet des formats suivants : format short e format short g format long format long e format long g format bank format rat format hex I.8.2 Suppression de la rponse Si vous tapez simplement une dclaration et appuyez sur la touche Retour ou Entre, MATLAB affiche automatiquement les rsultats l'cran. Toutefois, si vous terminez la ligne par un point-virgule ; , MATLAB effectue le calcul mais n'affiche aucune sortie. Cela est particulirement utile lorsque vous gnrez de grandes matrices ou lorsquon utilise de longs

27

programmes (laffichage des rsultats dans la fentre de commande ralenti ldexcution des programmes). Par exemple, >> A1 = magic(6); Matlab naffiche pas A1, mais cette matrice est mmorise dans lespace de travail et elle peut tre utilise dans des calculs. Aussi, si vous voulez afficher A1, il suffit de taper son nom dans la ligne de commande et valider : >> A1 I.8.3 Saisie dune longue dclaration Si une dclaration ne tient pas sur une seule ligne, utilisez trois points de suspension, ..., suivi de Retour ou Entre pour indiquer que la dclaration continue sur la ligne suivante. Par exemple, >> s = 1 -1/2 + 1/3 -1/4 + 1/5 - 1/6 + 1/7 ... - 1/8 + 1/9 - 1/10 + 1/11 - 1/12; Les espaces vides autour de =, + et - sont facultatifs, mais ils amliorent la lisibilit. I.8.4 Touches de raccourci Le tableau ci-dessous donne quelques raccourcis clavier qui facilitent la manipulation des instructions dans la fentre de commande. En particulier, pour revenir une commande prcdente sans la rcrire, il suffit dappuyer une seule fois (sil sagit de la commande prcdente) ou plusieurs fois (sil sagit dune commande plus antrieure) sur la touche clavier (flche) de dplacement vers le haut .

28

29

II. Scripts et fonctions MATLAB est un langage de programmation puissant aussi bien qu'un environnement de calcul interactif. Les fichiers qui contiennent un programme dans le langage MATLAB ont lextension .m (en anglais, on les appellent les M-files). On cre des M-files en utilisant un diteur de texte. Matlab possde son propre diteur de texte quon ouvre : partir de la barre doutils en cliquant sur licne en tapant la commande >> edit, ou partir du menu fichier en cliquant sur FileNew M-file (figure cidessous). , ou

Il y a deux types de fichiers Matlab : les

scripts et les fonctions.

Avant de continuer, il est signaler que pour que Matlab puisse excuter un script ou une fonction, il faut quil connaisse son On vous demande alors de : crer un rpertoire D:\ETI (ou dans votre cl USB) ajouter ce rpertoire au path de Matlab en procdant de la manire suivante : aller dans le menu File Set Path puis dans la fentre qui saffiche cliquer sur Add Folder et choisissez le chemin de votre rpertoire. Vous pouvez aussi indiquer Matlab le chemin de votre rpertoire en le plaant dans la fentre Current directory , ou en tapant linstruction : >> cd D:\ETI

chemin.

30

Remarques : La commande dir retourne la liste des fichiers contenus dans le rpertoire courant. La commande pwd permet de connatre le nom du rpertoire courant. II.1 Scripts Un script est un ensemble d'instructions MATLAB qui joue le rle de programme principal. Si le script est crit dans le fichier de nom myscript.m on l'excute dans la fentre MATLAB en tapant son nom dans la fentre de commande (>> myscript et valider). Mme si Matlab est interactif et permet de faire beaucoup de chose en tapant les instructions directement dans la fentre de commande, il est toutefois utile dutiliser un script. Il est en effet beaucoup plus simple de modifier des instructions dans un fichier l'aide d'un diteur de texte que de retaper un ensemble d'instructions MATLAB dans la fentre de commande. Exercice : Ouvrez lditeur de texte (ou de script) de Matlab. Reproduire alors le script ci-dessous.

Enregistrer le dans votre rpertoire sous le nom firstscript . Excuter le. Afficher alors les rsultats obtenus, c--d les valeurs des SC, SL, SD et SAD.

31

Remarque : Il est important de commencer un programme par linstruction clear. Cette instruction effacera toutes les variables se trouvant dans lespace. Ainsi, toutes les variables seront cres par le prsent programme. Il est important de commenter abondamment un programme. Ceci permet de comprendre le programme lorsquon a besoin de le rutiliser aprs une longue priode. Dans Matlab, une ligne commentaire commence par % . II.2 Fonctions Une fonction y = f(x) est une procdure mathmatique qui reoit en entre la variable x et lutilise pour calculer la sortie y suivant une (ou plusieurs) relation(s) bien dfinie(s). Une fonction Matlab est un M-file qui calcule des variables de sorties (arguments) en utilisant des arguments dentre. La syntaxe gnrale est la suivante: function [y1, ..., ym] = mafonction (x1, ..., xn) % y1, ..., ym sont les variables de sortie de la fonction;

h e l p

% x1, ..., xn sont les variables d'entre de la fonction % Les commentaires se trouvant juste aprs la dclaration % function et avant le corps de la fonction seront affichs quand % on tapera la commande >> help mafonction. Corps de la fonction contenant les instructions et les

commandes Le fichier doit imprativement commencer par la dclaration function. Suit entre crochets les variables de sortie de la fonction, le symbole =, le nom de

32

la fonction et enfin les variables d'entre entre parenthses. Si la fonction ne possde qu'une seule variable de sortie, les crochets sont inutiles. Il est impratif que la fonction ayant pour nom fonc soit enregistre dans un fichier du mme nom fonc.m sans quoi cette fonction ne sera pas reconnue par MATLAB. Exemple : La programmation de la fonction mathmatique f (x ) = x 2 peut se faire par le M-file suivant :

Enregistrer cette fonction. Tapez ensuite dans la fentre de commande : fonc(2) On peut aussi placer le rsultat dans une autre variable: b = fonc(5) ou encore puisque l'on peut utiliser des vecteurs: v = [1 2 3]; r = fonc(v) Pour utiliser cette fonction, il n'est pas ncessaire d'utiliser les mmes noms de variables dentre et de sortie que ceux utiliss dans le fichier FUNCTION lui-mme.

33

la diffrence des fichiers SCRIPT, les variables l'intrieur d'un fichier FUNCTION ne sont pas disponibles l'extrieur. On dit qu'elles sont locales. Si on essaie d'obtenir la valeur des variables locales x et y : x ??? Undefined function or variable x. y ??? Undefined function or variable y. Matlab ne les reconnatra pas. On peut aussi utiliser notre fonction dans un script. % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Fichier tracer.m %

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Partition de l'intervalle [0,5] x = 0 : 0.01 : 5.0 ; % Evaluation de la fonction sur tout le vecteur x y = fonc(x); % Graphique de la fonction plot(x,y, '-')

Exercice : Transformer le script firstscript en une fonction nomme statmagic recevant comme argument un nombre entier x, cre un carr magic de dimension x et retourne come argument de sortie SC, SL, SD et SAD.

34

Remarques : a) Fonction comme argument d'une fonction : Mentionnons lexistence de commandes permettant dvaluer une chane de caractres comme une commande Matlab. La commande eval sutilise ainsi : >> comd=s1=sin(pi/2) >> eval(comd) b) Arguments dentre et de sortie : Il n'est pas obligatoire de fournir tous les arguments d'entre et de sortie lors de l'appel d'une fonction, mais ceux que l'on omet doivent tre les derniers des listes d'entre ou de sortie. Ainsi, supposons que mafonction soit une fonction 2 arguments d'entre et 2 arguments de sortie, on peut alors effectuer l'appel suivant : [vars1]= mafonction(vare1) mais pas l'appel : [vars2]= nomfonction(vare2). Bien entendu, il faut grer l'omission des arguments d'entre. Matlab met votre disposition la variable nargin qui indique le nombre d'arguments en entre lors de l'appel de la fonction. Voici un exemple de calcul d'un produit scalaire ou d'une norme au carre, illustrant son emploi : function r = psnorm2(a,b) (a,b sont des vecteurs colonnes) if (nargin==1) r=a'*a; elseif (nargin==2) r=a'*b; end

35

psnorm2(u,v) renvoie le produit scalaire et psnorm2(u) renvoie la norme au carre de u. Remarquer que psnorm2(u,u) renvoie galement la norme au carr de u. Bien qu'il soit parfois dangereux d'utiliser cette possibilit, il est important de la connatre car de nombreuses fonctions natives de Matlab en font usage. c) Obtenir la description dune fonction La commande help permet dobtenir de laide sur une fonction. Par exemple pour obtenir laide sur la fonction sum (somme) tapez : >> help sum Quand on ne connat pas le nom de la fonction utiliser, la commande lookfor permet de faire une recherche par mot cl. Par exemple : >> lookfor Fourier affiche le nom de toutes les fonctions qui sont en rapport avec le mot Fourier . Le mot aprs lookfor doit tre en anglais. d) Editer un script ou une fonction La commande type permet dafficher le contenu dun M-file dans la fentre de travail. Par exemple, tapez: >> type firstscript La commande edit permet dafficher le contenu dun M-file dans lditeur de texte Matlab. Par exemple, tapez: >> edit firstscript La commande delete permet de dtruire fichier et objet graphique.

36

II.3 Boucles & Contrle de flux II.3.1 Boucles de contrle II.3.1.1 BOUCLE FOR On peut crer une boucle en utilisant for ... end. On peut aussi raliser des boucles FOR imbriques. Exemples : Boucle FOR simple : for i=1:100 wt = 24*i*0.01; x(i)=12.5*cos(wt+pi/6); end Deux boucles FOR : for i=1:5 for j=1:20 amp=i*1.2; wt=j*0.05; v(i,j)=amp*sin(wt); end end

37

II.3.1.2 BOUCLE WHILE On peut crer une boucle en utilisant while ... end. Syntaxe : while condition oprations excuter si la condition est vraie end Exemple : n=1; while n<100 x=n*0.05; y(n)=5.75*cos(x); z(n)=-3.4*sin(x); n=n+1; end II.3.2 Contrle conditionnel : if, else, elseif, switch II.3.2.1 if, else et elseif L'instruction IF ... ELSEIF ... ELSE permet de choisir plusieurs options. if condition oprations elseif condition

38

oprations else oprations end La dclaration if value une condition logique et excute un groupe doprations lorsque la condition est vraie. La commande elseif donne une autre condition vrifier lorsque la condition de if nest pas remplie. La commande else donne les oprations excuter lorsque les conditions prcdentes (de if et de elseif (lorsquelle existe)) ne sont pas vrifies. Un end doit terminer le groupe de commandes (un if doit obligatoirement tre termin par un end). Exemple : n=input('Donner un nombre positif if rem(n,3)==0 disp('Ce nombre est divisible par 3') elseif rem(n,5)==0 disp('Ce nombre est divisible par 5') else disp('Ce nombre n''est pas divisible par 3 ou par 5') end ');

39

II.3.2.2 switch et case Un test conditionnel peut aussi tre ralis laide de Les commandes switch et case permettent de vrifier un certain nombre de conditions suivant la valeur dune variable donne. synthaxe : switch variable, case valeur1, instruction1; ... case valeurn, instructionn; end Exemple : n=input('Donner un nombre positif switch n case 1, case 2, case 3, disp('Method is linear'); disp('Method is quadratic'); disp('Method is cubic'); ');

otherwise disp('Unknown method.') end II.3.3 BREAK et CONTINUE Les dclarations "break" et "continue" permettent un contrle plus stricte de la boucle. La dclaration break provoque la sortie prmature dune boucle. Lexcution continue la ligne se trouvant juste aprs la fin de la boucle contenant break. Dans le cas de boucles imbriques, break interrompt la

40

boucle qui la contient. La syntaxe est simplement d'crire le mot break dans la boucle l o vous souhaitez la briser. Contrairement break, la dclaration continue donne le contrle litration suivante dans une boucle FOR ou WHILE. La dclaration continue impose au programme de continuer la boucle sans excuter le code se trouvant aprs elle. Dans le cas des boucles imbriques, continue donne le contrle litration suivante de la boucle qui la contient. II.3.4 Autres dclarations return o provoque un retour au programme appelant (ou au clavier) o ignore toutes les instructions qui suivent linstruction return error(message) o provoque un retour au programme appelant (ou au clavier) et affiche un message derreur. warning(message de mise en garde) o permet dafficher un message de mise en garde sans suspendre lexcution du programme


pause

warning off : ne pas afficher les messages de mise en garde warning on : rtablir laffichage des messages de mise en garde

o permet de suspendre lexcution du programme o reprend lexcution du programme ds que lutilisateur enfonce une touche du clavier pause(n) permet de suspendre lexcution de programme pendant n secondes.

41

II.4 LES POLYNOMES (voir annexe 4) Matlab reprsente un polynme comme un vecteur ligne qui contient les coefficients des termes rangs selon les puissances dcroissantes. >> p = [ 1 -12 0 5 0] % reprsente x -12x + 5x. II.4.1 Racines dun polynme. >> r = roots(p) % fournit les racines du polynme donn ci-dessus. >> p = poly(r) % est l'opration inverse qui redonne les coefficients rangs %selon les puissances dcroissantes. II.4.2 Addition. On additionne les polynmes a et b en crivant d = a+b sils sont de mme degr. Sinon il faut complter celui qui a le degr le plus faible avec des zros. II.4.3 Multiplication. La fonction conv(a,b) ralise le produit des polynmes a et b. On renvoie le rsultat dans c en crivant c = conv(a,b). Ce produit est obtenu par convolution des vecteurs a et b. II.4.4 Division. La fonction deconv( ) permet la division. >> [q,r] = deconv(c,b) % divise c par b. q est le quotient et r le reste. II.4.5 Drivation. La fonction polyder( ) fournit la drive dun polynme. >> h = polyder(g) % donne h drive de g. II.4.6 Evaluation. La valeur prise par le polynme pour une valeur de la variable est fournie par la fonction polyval( ).
4 3

42

II.5 Intgration. Les fonctions trapz, quad et quad8 calculent laire comprise entre la courbe et laxe horizontal. Exemple : Dfinir la fonction g1.m : function y=g1(x); y=x.*x; puis crire le programme: clear all x=0:0.1:1; y=g1(x); aire1=trapz(x,y) aire2=quad('g1',0,1)

II.6 Drivation. On vitera autant que possible la fonction diff qui drive en faisant la diffrence entre lments voisins dans le tableau des valeurs exprimentales, toujours fausses par le bruit. Il est plus astucieux de remplacer la courbe par une bonne approximation polynomiale avec polyfit et de driver celle-ci avec polyder. II.7 Equations diffrentielles. De nombreux systmes physiques sont dcrits par des quations

diffrentielles, linaires ou non. Pour intgrer une quation diffrentielle dordre n, on se ramne un systme de n quations du premier ordre, ce qui permettra dutiliser les fonctions ode23, ode45 (ordinary differential equations) qui fourniront la solution cherche.

43

III. Graphiques
MATLAB fournit une grande varit de techniques pour donnes sous forme graphique. Des outils interactifs vous permettent de manipuler les graphiques et rvler la plupart des informations contenues dans vos donnes. Le processus de visualisation des donnes implique une srie doprations. Cette section fournit une vue gnrale sur les possibilits que fournit Matlab pour la reprsentation graphiques. III.1 Graphiques 2D III.1.1 Fonction plot Cest la fonction la plus utilise dans la reprsentation graphique 2D. La commande plot(x,y) permet de tracer le vecteur y en fonction du vecteur x. En toute rigueur, il faut dfinir auparavant les vecteurs x et y qui doivent tre de mme dimension. Exercice : Ecrire et commenter les lignes du script suivant : x=0:0.05:(2*pi); y=exp(-x).*sin(x); plot(x,y); Lenregistrer et lexcuter. Au graphe obtenu, on peut ajouter la lgende des axes en excutant les commandes (ou en lajoutant dans le script) : >> xlabel('abscisse'); >> ylabel('ordonnee'); l'affichage des

44

On peut aussi donner un titre la courbe laide de la commande : >> title ('Exemple de graphique'); Et on peut aussi ajouter un quadrillage : >> grid on On peut utiliser la commande grid on ou tout simplement grid. Pour enlever le quadrillage, on utilise la commande : >> grid off Dans certains cas, on est amen tracer plusieurs courbes dans une mme figure. Dans MATLAB, ceci peut se faire des deux manires suivantes. La premire est dutiliser une seule instruction plot. Modifier le script prcdent en introduisant les instructions suivantes : y1 = exp(-2*x).*sin(x); y2 = exp(-3*x).*sin(x); y3 = exp(-4*x).*sin(x); plot(x,y,'-',x,y1,'-.',x,y2,'*',x,y3,'o'); Remarque : On peut ajouter une lgende cette courbe, en utilisant la commande suivante : >> legend('courbe y', 'courbe y1', 'courbe y2', 'courbe y3') La deuxime manire de tracer plusieurs courbes dans une mme figure consiste tracer les figures une par une. Mais dans ce cas un problme se pose : lorsquon utilise la commande plot pour la premire fois cette commande cre automatiquement une fentre graphique dans laquelle la courbe sera trace. Lutilisation de la commande plot une 2me fois va utiliser cette mme fentre et va effacer lancienne courbe pour tracer la rcente. Pour grader lancienne courbe et tracer dessus la nouvelle courbe, il faut utiliser la commande MATLAB hold on (leffet de cette commande est

45

annul laide de la commande hold off). Ainsi, on peut obtenir la mme figure quauparavant en utilisant les commandes (vous pouvez renregistrer le script prcdent sous un autre nom et remplacer les instructions prcdentes par celles qui suivent) : >> plot(x,y,'-') ; >> hold on >> plot(x,y1,'-.') >> plot(x,y2,'*') >> plot(x,y3,'o'); >> hold off Mais ici, vous remarquez que toutes les courbes sont traces en bleu (couleur choisie par dfaut pour le traage des courbes). Pour utiliser des couleurs diffrentes on peut utiliser la syntaxe gnrale de la fonction plot : plot(x,y,'c+:') motif Style de la ligne

couleur par la commande plot : Couleur y m c r g b w k jaune magenta cyan rouge vert bleu blanc noire . o x + * s d v ^ > Marqueurs

Le tableau suivant donne les diffrents styles, motifs et couleurs supports

Styles de lignes : -. -Ligne solide pointille Trait d'union-point coupe

point cercle x plus toile carr diamant Triangle (bas) Triangle (haut) Triangle (droite)

46

Signalons aussi que lon peut tracer les courbes sur des fentres graphiques spares condition de crer ces fentres laide de la commande figure : >> figure(1), plot(x,y), title('y'); >> figure(2), plot(x,y1), title('y1'); >> figure(3), plot(x,y2), title('y2'); >> figure(4), plot(x,y3), title('y3'); Si vous prfrez tracer plusieurs courbes, dans la mme fentre, mais dans des cadres spars, alors on utilise la fonction MATLAB subplot : >> subplot(2,2,1), plot(x,y), title('y'); >> subplot(2,2,2), plot(x,y1), title('y1'); >> subplot(2,2,3), plot(x,y2), title('y2'); >> subplot(2,2,4), plot(x,y3), title('y3'); Remarquons que les chelles des axes des ordonnes sont diffrentes pour les 4 courbes. Ceci ne facilite pas linterprtation physique et il souvent prfrable de reprsenter les courbes sur les mmes chelles. Ceci peut se raliser en utilisant la commande axis dont la syntaxe est : axis([Xmin Xmax Ymin Ymax])

o Xmin, Xmax : les graduations minimales et maximales de laxe des x Ymin, Ymax : les graduations minimales et maximales de laxe des y
Exercice : Tracer sur une mme chelle les courbes tudies ci-dessus. axis(square) prsente le graphe dans un carr au lieu du rectangle habituel.

47

On peut aussi utiliser la fonction fplot: >> g = 2*exp(-x).*sin(x); >> fplot(g,[0 8]) Remarque : La fonction subplot(m,n,p) ou subplot(mnp) subdivise la fentre

graphique en mxn (m lignes et n colonnes) cadres spars. Le pme cadre est choisi de telle sorte que p=1 correspond (m=1,n=1), p=2 (m=1,n=2), .

subplot(2,3,1) subplot(2,3,2) subplot(2,3,3)

subplot(2,3,4) subplot(2,3,5) subplot(2,3,6)

II.1.2 Autres fonctions de reprsentation 2D Parmi les fonctions de reprsentation 2D, on peut citer : o Fonction polar : permet de reprsenter des fonctions en

coordonnes polaires. Ceci prsente un grand intrt pour les diagrammes de directivit. Par exemple, ici un diagramme de directivit de type cardiode. >> theta = 0:.1:2*pi; >> r = 1 + cos(theta); >> polar(theta,r) o Fonction stem : stem(x,y) permet de reprsenter les ordonnes y comme des barres termines par un cercle. Essayer les commandes >> stem (x,y) et

48

>> stem (theta,r) o Fonction hist : hist(x,N) prsente un histogramme de N barres de la variable x. Par dfaut, N=10. Essayer les commandes suivantes : >> y=randn(50000,1); >> hist(y) >> hist(y,20) Les fonctions graphiques 2D sont donnes sur la figure ci-dessous :

49

Utiliser le help de la fonction crite sur limage pour connatre son effet et la faon dont elle est utilises. La commade close all permet de fermer toutes les fentres graphiques. La commade close(n) permet de fermer la fentre graphique n.

Pour obtenir la liste des fonctions de reprsentation graphique 2D disponibles dans MATLAB, tapez : >> help graph2d

50

II.2 Graphes 3D La figure ci-dessous illustre les fonctions graphiques 3D de MATLAB.

51

Dans les paragraphes qui suivent nous contemplerons quelques une des fonctions de la figure ci-dessus. a) plot3 Excuter les instructions suivantes : >> t = linspace(0, 10*pi); >> plot3(sin(t), cos(t), t) >> xlabel(sin(t)), ylabel(cos(t)), zlabel(t) >> grid on b) mesh ("mesh" (maillage) Pour tracer une fonction g(x,y) pour x[xmin, xmax] et y[ymin, ymax], on procde de la manire suivante : 1) Dfinition des vecteurs x et y, >> x=-2:.2:2 ; y= -2:.2:2 ;

2) Cration dun maillage du domaine [xmin, xmax] [ymin, ymax] par la commande meshgrid : >> [X,Y] = meshgrid(x, y); 3) Evaluation de la fonction aux nuds de ce maillage : >> Z = X .* exp(-X.^2 - Y.^2); 4) Affichage de la surface grce la commande mesh : >> mesh(X, Y, Z) La fonction mesh affiche les surfaces laide de lignes en couleur.

52

La commande meshc permet dafficher les lignes de niveau sous la surface dans le plan Z=Zmin : >> meshc(X,Y,Z) La commande contour permet de tracer les lignes de niveau de la fonction : >> contour(X,Y,Z) On peut imposer le nombre de lignes de niveau N en utilisant la commande contour(X,Y,Z,N) : >> contour(X,Y,Z,20) c) surfl (Surface avec illumination) >> clf >> surfl(X,Y,Z)
% graphique avec illumination

>> shading interp

% meilleure interpolation

>> colormap pink %choix dune palette de couleurs prdfinie >> view(-37.5+60,30)% N.B : o view(0,90); o colorbar o axis equal; o axis tight; en x,y, et z o caxis([-0.1 0.1]); colorbar; % Dfinit les plages de la colormap et ractualise la colormap o caxis auto; colorbar; % Retour aux valeurs par dfaut % Met le graphe 3D " plat", par dfaut view(-37.5,30). % Ajoute l'chelle des couleurs % chelles isomtriques % Ajuste les limites des axes aux valeurs des donnes
changement point de vision: view(azimut, elevation)

o axis([xmin xmax ymin ymax zmin zmax]) % Impose les limites du trac

53

IV. Introduction

Simulink

Simulink est l'extension graphique de MATLAB permettant de reprsenter les fonctions mathmatiques et les systmes sous forme de diagramme en blocs, et de simuler le fonctionnement de ces systmes. IV.1 Lancement de Simulink Dans la fentre de commande de Matlab:

Cliquez sur cette icne pour dmarrer Simulink

Vous verrez alors apparatre la fentre suivante :

54

Remarque : Lapparence des fentres varie selon la version du logiciel Matlab utilise.

Pour ouvrir une nouvelle fentre de travail Simulink, cliquez sur licne

(de la dernire

fentre ci-dessus) ou ouvrez FileNewModel ou utilisez le raccourci Ctrl+N.


IV.2 Construction d'un modle dans la fentre de travail IV.2.1 Mthode de placement d'un composant Ouvrez une nouvelle fentre de travail Simulink comme cest indiqu cidessus. Dans la fentre Simulink Library Browser cliquez sur la librairie Simulink puis sur la sous-librairie Sources , slectionnez alors le composant Sine Wave et en maintenant l'appui sur le bouton gauche de la souris, faite glisser l'lment dans la fentre de travail et relchez le bouton. Vous obtenez alors le rsultat :

Glissez ensuite dans la mme fentre de travail, le composant Scope se trouvant dans la sous-librairie Simulink\Sinks . IV.2.2 Ralisation des connexions Nous allons maintenant connecter la source sinusodale au scope. Pour raliser la connexion entre des composants on procde de la manire suivante: On slectionne avec la souris, le symbole > situ sur un composant, on maintient l'appui sur le bouton et on tire le lien vers le symbole > de lautre composant.

55

On peut aussi le faire de la manire la plus simple suivante : cliquer sur le composant de dpart (de symbole >) et en maintenant la touche Ctrl du clavier enfonce, cliquer sur le composant destination (de symbole <) Raliser alors la connexion suivante :

Si les deux composants ne sont pas aligns, la connexion entre eux nest pas une droite. Ceci se fait automatiquement, toutefois on peut le raliser nous mme car il suffit de relcher le bouton de la sourie, de maintenir nouveau appuy tout en se dplaant dans la nouvelle direction :

Remarque : Il faut toujours vrifier que la connexion est bien tablie :

Connexion bien tablie

Connexion mal tablie

Vous pouvez cliquez deux fois en importe quel point de la fentre de travail pour ajouter du texte. Pour changer le nom dun composant, il suffit de cliquer une seule fois sur son nom dorigine puis entrer le nouveau nom.

56

IV.2.3 Paramtrage des composants En double cliquant sur un composant, on ouvre sa fentre de paramtrage. Cette fentre contient souvent une description du fonctionnement du composant. IV.2.4 Simulation IV.2.4.1 Paramtrage de la simulation Pour ouvrir la fentre de paramtrage de la simulation vous pouvez cliquer sur Simulation dans la barre de menus de la fentre de travail puis sur Simulation parameters ou cliquer simplement sur le raccourci Ctrl+E.

IV.2.4.2 Lancement de la simulation Une fois le modle construit, vous pouvez lancer la simulation partir du menu Simulation Start ou par le raccourci Ctrl+T, ou encore en cliquant licne de la barre doutils.

Un bip indique la fin de la simulation. IV.2.4.3 Paramtres du Scope Les principaux paramtres du Scope sont dcrits sur la figure ci-dessous :

57

Impression Zoom X Zoom Zoom Y Autoscal Paramtres

Licne Autoscal permet de marier la courbe la fentre de lcran. Les icnes du Zoom permettent ensuite de zoomer soit sur les deux axes ou sur chacun dentre eux. Pour les paramtres du scope, on utilise surtout le paramtre Number of axes qui nous permet de subdiviser lcran en plusieurs fentres. Exercice : Double cliquez sur le composant Signe Wave . Rgler alors son amplitude 2 et sa frquence 0.5 Hz. Laisser les autres paramtres leurs valeurs par dfaut. Dans la fentre Simulation parameters laisser linstant de dpart Start time sa valeur par dfaut (0) et rgler linstant darrt Stop time 5s puis valider en cliquant sur Ok. Simuler et consulter le Scope.

Exercice : Pour trouver un composant, on peut introduire son nom dans la barre de recherche de la fentre Simulink Library Browser et valider. Raliser alors le modle Simulink suivant :

58

Laisser tous les paramtres fixs par dfaut et simuler. (Pour raliser un nud dans un circuit, slectionner la connexion dans laquelle vous voulez placer le nud, placer le curseur dans lendroit du nud, maintenir la touche Ctrl du clavier enfonce et maintenant l'appui sur le bouton gauche de la sourie tirer le lien vers le symbole > de lautre composant).

Exercice : Raliser le modle Simulink suivant :

Les paramtres des diffrents composants sont les suivants :

Source Signal : Amplitude=1 ; Frquence=10rad/sec ; Sample time=0.001. Source Porteuse : Amplitude = 1 ; Frquence = 1000 rad/sec ; Sample
time= 0.001.

Spectrum Scope : Buffer size = 128; Buffer overlap = 64; Frequency units =
Hertz; Frequency range = [-Fs/2 Fs/2]; Amplitude scaling = Magnitude. Choisissez un temps de simulation de 10s. Simuler et consulter les Scopes.

59

Exercice : Raliser le modle Simulink suivant :

Garder tous les paramtres de lexercice prcdent. Simuler.

60

Annexe 1 Oprations sur les matrices

Les Matrices

>> A % Transpose conjugue de A >> A. % Transpose de A >> 2*A % Produit par un scalaire >> A*B % Produit de deux matrices (de dimensions % cohrentes) >> A^p % Elve la matrice carre A la puissance p >> inv(A) % Inversion d'une matrice carre inversible (message d'alerte ventuel) >> A.*B % Produit lment par lment de deux matrices Attention : A*A est diffrent de A.*A. >> X = A\B % Donne la solution de A*X = B >> X = B/A % Donne la solution de X*A = B >> X = A./B % Division lments par lments >> inv(A) % Inversion d'une matrice carre inversible (message d'alerte ventuel) >> poly(A) % Polynme caractristique de A >> det(A) % Dterminant de A >> flipud(A) % Retournement vertical de A >> fliplr(A) % Retournement horizontal de A >> rot90(A) % Rotation de A de 90 degrs >> B = reshape(B,L,C) % Remise en forme de B avec L lignes et C colonnes Exemple : >> B = [ 1 2 3 4 5 6 ]; B = reshape(B,2,3)
B = 1 3 5 2 4 6

>> [V, D] = eig(A) % Renvoie les valeurs propres et les vecteurs propres de A
% (eigenvalues, eigenvectors)

Construction de matrices particulires


toeplitz permet de construire des matrices de Toeplitz : >> c = [ 1 2 3 4 5 ]; >> l = [ 1.5 2.5 3.5 4.5 5.5 ]; >> toeplitz(c,l) vander permet de construire des matrices de Vandermonde : >> x = 2:5; >> vander(x)

Dcomposition de matrices
>> [U, S, V] = svd(X); % dcomposition en valeurs singulires
Elle produit une matrice diagonale S de mme dimension que X, avec les lments diagonaux non nuls rangs en ordre dcroissant, et des matrices unitaires U et V telles que X = U*S*V'. 61

>> R = chol(X); % ralis la factorisation de Cholesky


Elle utilise uniquement la partie triangulaire suprieure de X (et considre que la partie triangulaire infrieure de X est la transpose conjugue de la prcdente). Elle produit un message d'erreur si X n'est pas dfinie positive, sinon elle produit la matrice triangulaire suprieure R telle que R'*R=X.

>> [Q,R] = qr(X); % ralise la factorisation QR


produit une matrice triangulaire suprieure Q de mme dimension que X et une matrice unitaire R telle que X = Q*R.

>> [L, U] = lu(X); % ralise une factorisation LU (Lower, Upper)


exprime une matrice carre X sous forme d'une matrice triangulaire suprieure U et d'une permutation d'une matrice triangulaire infrieure L, telles que X = L*U.

Matrices particulires
Fonctions zeros(n) zeros(n,m) ones(n) ones(n,m) eye(n) eye(n,m) length(X) size(X) Dfinition Gnre une matrice de zros de grandeur nxn Gnre une matrice de zros de grandeur nxm Gnre une matrice de "1" de grandeur nxn Gnre une matrice de "1" de grandeur nxm Gnre une matrice identit de grandeur nxn Gnre une matrice identit de grandeur nxm Retourne la longueur du vecteur X Retourne les dimensions (lignes, colonnes) du vecteur X

Matrices creuses (help sparfun)


Fonctions sparse full issparse speye Dfinition cration dune matrice creuse conversion dune matrice creuse retourne 1 si la matrice est creuse matrice identit creuse

Informations sur les matrices


det Fonctions norm trace cond dterminant Dfinition normes 1, 2 etc. de la matrice trace de la matrice conditionnement 62

rank triu tril sort

rang partie triangulaire suprieure partie triangulaire infrieure arrangement par ordre croissant

63

Annexe 2 Gnration alatoire

Signaux Alatoires

La gnration de processus alatoires est possible sous Matlab avec les deux fonctions qui suivent :
Fonctions rand Dfinition Gnration de valeurs alatoires : distribution uniforme Gnration de valeurs alatoires : distribution gaussienne

randn

Analyse des donnes


Fonctions median max min std mean corrcoef prod sum Dfinition valeur mdiane maximum minimum cart type (standard deviation) moyenne coefficient de corrlation produit des lments somme des lments

64

Annexe 3
Fonctions

Mathmatiques, gomtrie
Dfinition valeur absolue ou module dun nombre complexe fonction inverse du cosinus hyperbolique fonction inverse du sinus fonction inverse du sinus hyperbolique fonction inverse de la tangente fonction inverse de la tangent hyperbolique complexe conjugu cosinus cosinus hyperbolique fonction exponentielle partie entire dans le cas dun rel positif partie imaginaire fonction logarithme nprien fonction logarithme en base 10 partie relle fonction signe sinus sinus hyperbolique racine carre tangente tangente hyperbolique

abs(x) acosh(x) asin(x) asinh(x) atan(x) atanh(x) conj(x) cos(x) cosh(x) exp(x) floor(x) imag(x) log(x) log10(x) real(x) sign(x) sin(x) sinh(x) sqrt(x) tan(x) tanh(x)

Les fonctions darrondis


Fonctions round(x) ceil(x) floor(x) fix(x) Dfinition entier le plus proche de x arrondi par excs arrondi par dfaut arrondi par dfaut un rel positif et par excs un rel ngatif

Valeurs spciales prdtermines dans Matlab Fonctions Inf Dfinition Ceci reprsente causepar une division par zro "Not-a-Number", caus par une opration mathmatique indtermine. Par exemple, "0/0" Gnre la date et le temps dans la forme d'un vecteur-ligne de 6 lments correspondant : anne, mois, jour, heure, minute et secondes. Variable gnre par Matlab pour sauvegarder un rsultat si l'utilisateur n'en a pas cr une dans le programme

NaN clock ans

65

Prcision des rsultats affichs


Format format short format long format short e format short g format long e format long g Rsultat 4 chiffres aprs la virgule (par dfaut) 14 chiffres aprs la virgule 4 chiffres aprs virgule + exposant 5 chiffres en tout avec ou sans exposant 15 chiffres aprs virgule + exposant 15 chiffres aprs virgule au total, avec ou sans exposant "dollars et sous" format affiche les bits en format hexadcimal seulement les signes sont affichs Exemple 1.1234 1.12345678910111 1.1234e+001 12.126 1.233333333333333e+043 1.23333333333333e+043

format bank format hex format +

9.75 4028b0fcd32f707a +

66

Annexe 4

Fonctions de filtrage et de convolution

>> Y = filter(B,A,X);
Elle construit le vecteur Y tel que : y(n) = b(1)*x(n) + b(2)*x(n-1) + ... + b(nb+1)*x(n-nb) - a(2)*y(n-1) - ... - a(na+1)*y(n-na) Cela correspond donc un filtrage par un filtre ARMA. La fonction roots qui calcule les zeros d'un polynme, peut lui tre associe afin de trouver les zros et les ples d'un ARMA ; Par exemple le polynme P(z)=z3-6z2-72z27 est reprsent par le vecteur :

>> p=[1 -6 -72 -27];


dont les racines sont donnes par :

>> r=roots(p) r = 12.1229 -5.7345 -0.3884


Pour calculer la valeur du polynme en certains points on utilise la fonction polyval :

>> polyval(p,[1,exp(j*pi/4),exp(j*pi/2)]) ans = 1.0e+002 * -1.0400 -0.7862 - 0.5620i -0.2100 - 0.7300i


La fonction poly effectue l'opration inverse de roots : tant donn un polynme unitaire dfini par ses racines, poly le dveloppe en donnant les coefficient de ses monmes en puissance dcroissante.

>> p=poly(r) p = 1.000 -6.000 -72.000 -27.000


D'autre part, si l'argument de poly est une matrice, la fonction renvoie les coefficients du polynme caractristique de cette matrice. La fonction conv effectue elle la convolution de deux vecteurs :

>> Z = conv(X,Y);
Cette convolution est complte dans le sens o la longueur de Z est la somme des longueurs de X et Y moins 1. Elle peut aussi tre interprte comme le dveloppement du produit de deux polynmes. 67

En dimension 2 les fonctions correspondant filter et conv sont filter2 et conv2. Une fonction fournie mais dont l'utilisation doit vous sembler dlicate est la fonction deconv. Elle est sense effectuer une dconvolution, ce qui peut sembler ambitieux (pour ceux qui ont suivi un cours sur les problmes inverses). Nanmoins cette fonction est utile pour la division de polynmes.

Oprations sur les Polynmes


Fonctions roots poly polyval polyfit Dfinition Calcul des racines connaissant les coefficients Calcul des coefficients connaissant les racines Calcul de P(x) Identification des coefficients dun polynme laide des moindres carrs Produit de deux polynmes Division de deux polynmes

conv deconv

Fonctions pour les nombres complexes


Fonctions Description Calcule le complexe conjugu de x. Si x=a+b*i alors conj(x)=a-b*i Retourne la partie relle de x Retourne la partie imaginaire de x Retourne vrai(1) si aucun lment du vecteur "x" n'a une partie imaginaire. Retourne la magnitude de x |x|= a b2 2+ Retourne l'angle du nombre complexe "x" calcul par l'expression atan2(imag(x),real(x))

conj(x) real(x) imag(x) isreal(x) abs(x) angle(x)

Fonctions pour Sries et Transformes de Fourier


Fonctions Description Dans Matlab

fft

ifft

"Fast Fourier Transform", (similaire la srie de Fourier en temps discret, aussi utilise pour valuer la transforme de Fourier en temps discret) "Inverse Fast Fourier Transform"

X = fft(x)

x = ifft(X);

68

fftshift

Dplace les composantes frquence nulle au milieu du spectre. S'il s'agit d'un vecteur, la fonction interchange la moiti droite avec la moiti gauche de X. Pour les matrices, la fonction interchange le 1er et le 3 me quadrants avec le 2 me et 4 me.

fftshift(X)

Fonctions d'optimisation
Fonctions d'optimisation Description

fsolve fzero fmin fmins

Rsolution d'un systme d'quations nonlinaires Trouve les zros d'une fonction une variable Minimisation d'une fonction une variable Minimisation d'une fonction plusieurs variables

Analyse de systme temps discret


Commandes Description Convolution de deux signaux en temps discret x[n]*h[n] "Step response", rponse l'chelon pour un systme en temps discret, pour N points "Impulse Response", rponse impulsionnelle d'un systme en temps discret, pour N points Filtre digital dcrit par les vecteurs A (den) et B (num). Filtre les donnes dans le vecteur X . Retourne la rponse en frquence aux frquences "w" Matlab

conv dstep dimpulse filter freqz

y=conv(x,h) dstep(num,den,N) dimpulse(num,den,N) Y=filter(B,A,X) [H,omega]=freqz(num,den,w)

69

Annexe 5 Affichage des courbes 2D


Fonctions lmentaires plot loglog semilogx semilogy line Outils polar bar hist fplot Outils title xlabel ylabel grid text axis subplot hold

GRAPHISME

Dfinition Affichage linaire Echelle log-log Echelle semilog sur x Echelle semilog sur y Dfinition dune ligne Dfinition Affi. en coordonnes polaires Affi. en mode escalier Affi. dun histogramme Affi. dune fonction donne Dfinition Cration dun titre Commentaire sur x Commentaire sur y Cration dune grille Commentaire sur graphe Gestion des axes (zoom) Multi-graphe sur mme figure Mode surimpression

Couleur y jaune m magenta c cyan

. o x

Marqueurs point cercle x

r g b w k

rouge vert bleu blanc noire

+ * s d v ^ >

plus toile carr diamant Triangle (bas) Triangle (haut) Triangle (droite)

Styles de lignes Ligne solide pointille : Trait d'union-. point -coupe

70

Affichage des courbes 3D


Visualisation 2D des donnes 3D contour image imagesc mesh meshc Dfinition Courbes de niveaux Visualisation par niveau de gris Idem mais non normalis Dformation d'une grille 3D. Combinaison de mesh et de contour. Combinaison de mesh plus projection sur le plan z=0. Idem que mesh, mais avec surface colore. Visualisation de type plot, mais avec 3 vecteurs dfinition Changement de palette de couleurs Orientation de la vue 3D Dfinition des matrices reprsentant la grille

meshz surf plot3

Outils colormap view

meshgrid

Graphes spcialiss
Fonctions bar barh bar3 bar3h area Dfinition Barres verticales Barres horizontales Barres verticales 3d Barres horizontales 3d Surfaces

Image
Fonctions image imagesc Dfinition Affichage dune image Affichage dune image avec son intensit Lecture dun fichier image un format donn Ecriture dun fichier image un format donn lecture des informations dun fichier image

imread imwrite iminfo

71