Vous êtes sur la page 1sur 46

Introduction Matlab

prpar par Richard Youmaran et Martin Bouchard

dans le cadre du cours


ELG 3520 "Analyse de signaux et de systmes"

Automne 2003

____________________________________________________________________ Introduction Matlab ELG 3520

INTRODUCTION MATLAB
1.1 ESPACE DE TRAVAIL DANS MATLAB Matlab est un outil trs efficace qui est largement utilis pour le calcul numrique et la visualisation graphique. Dans Matlab, les variables et les scalaires sont manipuls comme des matrices de "n" colonnes par "m" ranges. Par exemple, un scalaire serait une matrice de 1 x 1. l'excution, Matlab affiche plusieurs fentres sur l'cran. Les trois types de fentres les plus importants sont: "Command window", o toutes les commandes sont entres

"Figure Windows", dans lesquelles des figures et des graphiques sont dessins

____________________________________________________________________ Introduction Matlab ELG 3520

"Edit Windows", o l'utilisateur peut modifier ou crer des programmes Matlab ("M-files")

1.1.1 Fentre de Commande Une fois que Matlab est parti, une fentre appele "Command Window" apparat sur l'cran. L'utilisateur peut entrer multiples commandes ou quations mathmatiques aprs le signe ">>" qui apparat au ct gauche de la fentre. Pour excuter une opration, il faut toujours appuyer sur la touche "enter" du clavier. De plus, il faut terminer l'opration par un point-virgule ";"sinon, toutes les tapes du calcul seront affiches sur l'cran. Exemple: Dans la fentre de commande, tapez: >>a = 4*5; cause du point-virgule la fin de l'expression, la rponse n'a pas t affiche sur l'cran. Pour obtenir le rsultat, utilisez: >>disp(a); Ceci affichera "20" dans la fentre. Maintenant, tapez: >>a = 4*5 Vous voyez que le rsultat est automatiquement affich sur l'cran. Pour effacer la fentre, tapez: >>clc Ceci effacera toute la fentre de commande mais pas les variables cres dans la fentre "workspace". noter que la variable "a" est sauvegarde comme une matrice 1x1.

____________________________________________________________________ Introduction Matlab ELG 3520

De plus, il est possible de voir le rsultat de l'opration ("a = 4*5") en double-cliquant sur " " dans la fentre. Pour compltement effacer le "workspace" et toutes les variables en mmoire, tapez dans la fentre de commande: >> clear Maintenant, supposons que l'quation excuter dans Matlab est trs longue. Pour pouvoir l'insrer dans la fentre de commande, il faut utiliser "" Exemple: Tapez: >>x = 3+4+4+6+7 vous voyez le rsultat. Maintenant, tapez: >>x = 3+4+4+ +6+7 vous remarquerez que la mme rponse est affiche nouveau. Ceci vous permettra d'crire de longues quations dans Matlab.

1.1.2

"Edit Window"

Au lieu de tapez les commandes individuellement et directement dans la fentre de commande, il est possible de crer un fichier appel "m-file" qui contient toutes les fonctions et commandes ncessaires et qui peut tre rapidement excut en tapant le nom du fichier dans la fentre de commande. Ces fichiers sont appels "script files" et se terminent avec l'extension ".m". La fentre "Edit Window" est utilise pour crer ou modifier les "m-files". Pour crer un nouveau fichier, allez dans le menu de slection :

____________________________________________________________________ Introduction Matlab ELG 3520

"File/New/M-file" Pour ouvrir un fichier dj cr, allez : "File/Open" et choisissez le nom du fichier en question. La fentre "Edit Window" peut tre vue comme un diteur de texte o: Les commentaires sont crits en vert et dbutent par "%"

Les variables et quations apparaissent en noir

Les caractres apparaissent en rouge

Les mot-cls dans Matlab comme les boucles apparaissent en bleu

____________________________________________________________________ Introduction Matlab ELG 3520

noter que les "m-files" sont excuts en tapant le nom du fichier dans la fentre de commande. ATTENTION: Il faut toujours s'assurer que vous travaillez dans le bon rpertoire, l o votre fichier est sauvegard, sinon vous obtiendrez des erreurs.

Dans cet exemple, le fichier Matlab excuter est mis dans le rpertoire "c:\matlabR12\work".

1.1.3 Fentre pour figures ("Figure Window") Cette fentre est utilise pour afficher des graphiques en deux ou trois dimensions, des images ou des "graphical user interface (GUI)". Exemple: Crez un fichier Matlab comme dcrit auparavant. Tapez: x=1:0.01:10; y=sin(x); plot(x, y); Ensuite sauvegardez le fichier sous le nom"exemple.m". Assurez vous que le rpertoire dans lequel il est mis apparat dans "Current Directory" au haut de l'cran. Maintenant, tapez dans la fentre de commande: >>exemple Une sinusode s'affichera dans une fentre part:

____________________________________________________________________ Introduction Matlab ELG 3520

Dans cet exemple, l'expression x = 1:0.01:10 veut dire que le vecteur x dbute la valeur "1" et se termine "10" avec un incrment de "0.01", ce qui permet d'obtenir une plus grande prcision. Le vecteur contient 901 valeurs. La commande "plot" est utilise pour afficher le dessin sur l'cran. Vrifiez en tapant dans la fentre de commande: >>length(x) ceci affichera la longueur de vecteur. Maintenant, tapez: >>size(x) ceci indiquera que la variable "x" est sauvegard dans une matrice de 1 range et 901 colonnes.

____________________________________________________________________ Introduction Matlab ELG 3520

1.1.4

Obtenir de l'aide dans Matlab

Il y a plusieurs manires d'obtenir de l'aide dans Matlab. i) La premire option est de taper dans la fentre de commande "help" suivi par le nom de la fonction que vous recherchez. Exemple: Tapez: >>help cos

Ceci vous dcrit la fonction "cos". Si vous ne connaissez pas le nom exact de la fonction utilise par Matlab, il faut trouver un autre moyen pour obtenir de l'aide. Par exemple, "helpwin" (ci-dessous) ii) La deuxime option est de taper "helpwin" dans la fentre de commande. Ceci, vous affichera toutes les librairies de Matlab incluant les fonctions de chacune d'elles. Exemple: Tapez: >>helpwin Ensuite, choisissez la section "signal processing toolbox"

____________________________________________________________________ Introduction Matlab ELG 3520

Ceci vous affichera toutes les fonctions disponibles dans cette catgorie:

____________________________________________________________________ Introduction Matlab ELG 3520

Une fois que vous trouvez le nom de la fonction qui vous intresse, vous pouvez cliquez dessus pour obtenir de plus amples informations. Par exemple, cliquez sur "abs":

Ceci vous expliquera comment utiliser la fonction "abs" et vous donnera des fonctions qui sont similaires ou de mme catgorie. iii) La troisime option est d'utiliser la commande "lookfor". Celle-ci diffre de la commande "help" parce qu'elle ne cherche pas avoir le nom exact de la fonction rechercher. Exemple: Tapez dans la fentre de commande: >>lookfor fourier ceci affichera toutes les fonctions relies fourier.

____________________________________________________________________ Introduction Matlab ELG 3520

10

Ensuite, utilisez "help" suivi du nom de la fonction qui vous intresse pour avoir plus d'informations. ATTENTION: Si vous tapez une commande dans "Command window" et que par la suite Matlab n'arrte plus de s'xcuter, ceci est probablement reli au fait que vous venez de causer une boucle infinie (ou une opration demandant trop de mmoire). Pour arrter la procdure, pesez sur: "CTRL C" iv) La quatrime manire d'obtenir de l'aide est d'utiliser le "help bar" du menu sur l'cran. Ensuite, vous pouvez faire la recherche des fonctions en tapant des mot-cls dans l'espace assign.

____________________________________________________________________ Introduction Matlab ELG 3520

11

2. Variables, Vecteurs et Matrices


2.1 Variables Pour assigner une valeur ou une expression une variable dans Matlab, il faut utiliser l'oprateur "=". noter que le signe "= =" veut dire "gal", qui est surtout utilis dans les instructions "if " pour poser une condition. Par exemple: "Nom_de_la_variable = expression;" Ici "expression" pourrait tre une constante, une autre variable, une matrice, un vecteur, etc. Exemple: Pour comprendre comment assigner et crer des variables, tapez: >> var_imaginaire=10*i % i est la racine carre de -1, pour les nombres complexes >>var_complexe = var_imaginaire +4 >>var_vecteur = [1,2,3,4] >>var_constante =12

2.2 Variables complexes Initialisation des variables complexes Les variables complexes sont de la forme suivante: c = a + bi Exemple: Tapez: >>clc >>clear >>com1 =3+ i*4 >>com2 =3+j*4 Rsultat:

____________________________________________________________________ Introduction Matlab ELG 3520

12

On voit que ceci donne le mme rsultat.

Tableau des fonctions pour les nombres complexes noter que "x" est un nombre complexe x=a+b*i Fonctions conj(x) real(x) imag(x) isreal(x) abs(x) angle(x) 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 2 + b 2 Retourne l'angle du nombre complexe "x" calcul par l'expression atan2(imag(x),real(x))

2.3 Vecteurs Les vecteurs sont des tableaux d'une dimension. Il existe des vecteurs-ranges et vecteurs-colonnes. Exemple: Tapez dans la fentre de commande: >>a1=[1 2 3 4] >>a2=[1,2,3,4]

____________________________________________________________________ Introduction Matlab ELG 3520

13

Rsultats Ceux-ci sont deux diffrentes manires d'crire des vecteursranges dans Matlab. Pour accder le deuxime lment du vecteur, tapez: >>a1(2) Ceci retourne la deuxime valeur contenue dans le vecteur. Pour les vecteurs colonnes 4x1, tapez: >>a3=[1;2;3;4] >>a4=[1 "enter" 2 "enter" 3 "enter" 4] "enter" Pour accder le deuxime lment du vecteur, tapez: >>a3(2) %mme chose qu'auparavant

2.2.1 Cration de grand vecteurs Comme mentionn ci-haut, un vecteur est facilement construit dans Matlab en ajoutant tous ses lments un aprs l'autre. Si le vecteur est trs grand, cette mthode devient inefficace parce qu'elle prend normment de temps pour inscrire les lments un par un. Ceci dit, on pourrait utiliser un raccourci pour crer des vecteurs, condition que les lments soient spars par un mme intervalle ou incrment. Ceci est la forme que prendrait cette mthode: Vecteur = valeur_initiale : incrment : valeur_finale; Exemple: Tapez dans la fentre de commande: >>x =1:2:19 vous voyez que cette commande construit un vecteur de 10 lments commenant "1" et se terminant "19", o chaque tape les valeurs sont incrmentes de "2". Rsultats:

____________________________________________________________________ Introduction Matlab ELG 3520

14

2.2.2 "Transpose operator" Pour obtenir la transpose d'un vecteur ou d'une matrice, utilisez le symbole ('). Exemple: Tapez: >>a=1:2:9 >>a' Maintenant, crez une matrice de vecteurs-colonnes en tapant: >>b=11:2:19; >>c=[a' b'] ou une matrice de vecteurs-ranges: >> c = [a;b] Rsultats:

2.4 Matrices Les matrices sont des tableaux de deux ou plusieurs dimensions. Elles sont cres d'une faon similaire aux vecteurs. Exemple: Tapez:

____________________________________________________________________ Introduction Matlab ELG 3520

15

>>clear %pour effacer la mmoire >>clc %pour nettoyer l'espace de travail >> >>a1=[1,2;3,4;5,6] ceci crera une matrice 3x2 de 6 lments. Pour accder au chiffre 4, tapez: >>a1(2,2) ce qui donne l'lment de la range 2 et colonne 2 Rsultats:

Pour obtenir la premire range de la matrice "a1", tapez: >>a1(1,:) Rsultat:

Pour obtenir la premire colonne de la matrice "a1", tapez: >>a1(:,1)

____________________________________________________________________ Introduction Matlab ELG 3520

16

Rsultat:

Pour modifier les lments d'une matrice, par exemple changer la valeur "4" dans "a1" pour un "10", tapez: >>a1(2,2)=10; >>disp(a1) Rsultat:

2.4.1 Oprations sur Matrices Ici "a" et "b" peuvent tre des matrices ou des vecteurs Oprations Forme dans Commentaires Matlab Addition a+b Dimensions doivent tre les mmes Soustraction a-b Dimensions doivent tre les mmes Multiplication de a.*b La multiplication se fait lment par lment. matrices (lment par Les deux matrices doivent tre de mmes lment) dimensions, ou l'une d'elles peut tre un scalaire. Multiplication de a*b Le nombre de colonnes dans "a" doit tre le matrices mme que le nombre de ranges dans "b" Division de matrices a./b La division se fait lment par lment. Les (lment par lment) deux matrices doivent tre de mmes dimensions, ou l'une d'elles peut tre un scalaire. Division de matrices a/b quivalent "a * inv(b)" Exposant sur matrices a.^b Se fait lment par lment

____________________________________________________________________ Introduction Matlab ELG 3520

17

2.4.2 Matrices Complexes Plusieurs commandes sont utiles lorsqu'on travaille avec des matrices nombres complexes. Par exemple, la commande "abs" pour trouver la magnitude d'un nombre complexe, "angle" pour la phase, "conj" pour le conjugu, "inv" pour prendre l'inverse de la matrice, "imag" pour les parties imaginaires et "real" pour les parties relles. Il est aussi important de noter que l'opration de transposition (') sur des matrices avec valeurs complexes produira aussi une opration de conjugaison complexe sur les donnes. La matrice transpose est donc une matrice appel Hermitienne dans les ouvrages mathmatiques. Pour effectuer une transposition sans l'opration de conjugaison complexe, il faut utiliser (.') comme oprateur plutt que ('). Pour plus d'informations sur les oprateurs, vous pouvez consulter: help ops Exemple: Par exemple, tapez: >>clear >>clc >>A=[1+j, 3+j*4; 1+j*2, 7+j*9]; >>disp(A) >>parties_imag=imag(A); >>disp(parties_imag) >>parties_reelles=real(A); >>disp(parties_reelles) >>matrice_angles=angle(A); %en radians >>disp(matrice_angles) >>disp(conj(A)) >>disp(inv(A)) >>magnitude=abs(A); >>disp(magnitude) Rsultats:

____________________________________________________________________ Introduction Matlab ELG 3520

18

2.5 Oprations sur scalaires Ici, "a" et "b" sont des scalaires Oprations Addition Soustraction Multiplication Division Exposant Forme algbrique a+b a-b axb a b ab Forme dans Matlab a+b a-b a*b a/b a^b

____________________________________________________________________ Introduction Matlab ELG 3520

19

2.6 Fonctions utiles pour initialiser des variables dans Matlab Fonctions zeros(n) zeros(n,m) ones(n) ones(n,m) eye(n) eye(n,m) length(var) size(var) But 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 var Retourne les dimensions (ranges, colonnes) du vecteur var

2.7 Fonctions utiles pour diverses oprations mathmatiques Fonctions abs(x) acos(x) angle(x) asin(x) atan(x) atan2(y,x) Description Calcule |x| Calcule cos 1 x en radians Retourne l'angle (phase) du nombre complexe "x" en radians Calcule sin 1 x en radians Calcule tan 1 x en radians y Calcule tan 1 sur les quatre quadrants du cercle x y ( tan 1 ) x Calcule cosinus de x en radians Calcule sinus de x en radians Calcule ex Calcule le logarithme naturel "logex" Calcule "log10 x" Retourne la valeur maximale dans le vecteur x, et sa position Retourne la valeur minimale dans le vecteur x, et sa position La racine carre de x Tangente de x retourne la premire valeur entire suprieure x, dans la direction de + ceil(2.3)=3 et ceil(-2.3) = -2 retourne le premier entier infrieur |x|, dans la direction de

cos(x) sin(x) exp(x) log(x) log10(x) [value,index]=max(x); [value,index]=min(x); sqrt (x) tan(x) ceil(x)

fix(x)

____________________________________________________________________ Introduction Matlab ELG 3520

20

floor(x)

round(x) std(x) mean(x) median(x) sort(x) sum(x) prod(x)

zro. fix(2.3)=2 et fix(-2.3) = -2 retourne la premire valeur entire infrieure x, dans la direction de - floor(2.3)=2 et floor(-2.3) =-3 Arrondi x un entier prs round(2.3)=2 , round(-2.3)= -2 et round(2.5)=3 cart type Valeur moyenne Valeur mdiane Tri en ordre croissant Fait la somme de tous les lments prsents dans le vecteur x Fait le produit des lments dans le vecteur x

2.8 Initialisation de variables partir du clavier Il galement possible d'assigner une valeur provenant du clavier une variable en utilisant la commande "input". Ceci veut dire que l'utilisateur doit manuellement initialiser les variables une fois que le programme est excut. Exemple: Tapez: >>clear >>clc >>test= input('S.V.P entrer un chiffre\n'); >>2 >>test Rsultat:

Vous voyez que la variable "test" est maintenant gale "2", qui a t entr par l'utilisateur une fois que le code a t excut. Notez aussi que le symbole "\n" veut dire ____________________________________________________________________ Introduction Matlab ELG 3520

21

nouvelle ligne. De plus, il est possible de crer des tableaux de caractres en utilisant le symbole 's'.

Exemple: Tapez: >>clear >>clc >>test_string= input('Entrer un mot:\n', 's'); >>signaux >>test_string Rsultats:

2.9 Valeurs spciales prdtermines dans Matlab Fonctions pi "i"ou "j" Inf NaN clock But La valeur de La valeur de ( 1 ) ou valeur imaginaire 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-range 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

ans

____________________________________________________________________ Introduction Matlab ELG 3520

22

2.10

Prcision des rsultats affichs

Par dfaut, Matlab utilise une prcision de 4 chiffres aprs la virgule pour l'affichage de rsultats. L'utilisateur peut changer la prcision des nombres en choisissant parmi les options suivantes : Format format short format long format short e format short g format long e format long g format bank format hex format + 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 9.75 4028b0fcd32f707a +

2.11

Affichage de graphiques en Matlab

Pour afficher un graphique dans Matlab, il faut utiliser la fonction "plot". Exemple: Tapez: >>clear >>clc >>x=-20:2:20; >>y=x.^2-3.*x+10; >>plot(x, y)

Rsultat:

____________________________________________________________________ Introduction Matlab ELG 3520

23

Pour ajouter de l'information sur le graphique, il faut utiliser les fonctions suivantes: - title - xlabel - ylabel - grid on - axis Exemple: Tapez: >>clear >>clc >>x=-20:2:20; >>y=x.^2-3.*x+10; >>plot(x,y) >>title('Titre de dessin'); >>xlabel('x'); >>ylabel('amplitude'); >>grid on; Rsultat:

La commande "axis" permet de limiter l'axe des x et des y un intervalle prdtermin par l'utilisateur. Par exemple, axis([0 10 0 20]) limite l'axe des x aux valeurs de "0" "10 et celui des y de "0" "20".

____________________________________________________________________ Introduction Matlab ELG 3520

24

Exemple: (suite l'exemple prcdent) Assurez vous que la fentre du graphique du dernier exemple n'est pas ferme, sinon, recommencez les tapes prcdentes et ensuite tapez : >> axis([-5 5 0 100]) Rsultat:

On peut voir que les axes sont maintenant limits de 5 5 pour les "x" et de 0 100 pour les "y". Il est galement possible de modifier les options graphiques en utilisant le menu se situant au haut de la fentre de cette figure. Pour insrer plusieurs graphiques dans une seule fentre, il faudrait utiliser la fonction "subplot". Exemple: Tapez: >>clear >>clc >>x =1:0.1:10; >>y1 =sin(x); >>y2=cos(x); >>y3=x.^2; >>y4=tan(x); >>subplot(221) >>plot(x,y1) >>subplot(222) ____________________________________________________________________ Introduction Matlab ELG 3520

25

>>plot(x,y2) >>subplot(223) >>plot(x,y3) >>subplot(224) >>plot(x,y4) Rsultat:

Pour changer la couleur des lignes ou la forme des marqueurs, il faut crire ceci: >>plot(x,y1,'g*',x,y2,'bx') Ici, on a dessin des 'x' en bleu et des "*" en vert Rsultat:

____________________________________________________________________ Introduction Matlab ELG 3520

26

Pour plus de dtails consultez la table suivante:

Table des marqueurs et couleurs: Couleur y jaune m magenta c cyan r g b w k rouge vert bleu blanc noire Marqueurs point cercle x plus toile carr diamant Triangle (bas) Triangle (haut) Triangle (droite) Styles de lignes Ligne solide pointille : Trait d'union-. point -coupe

. o x + * s d v ^ >

2.12

Commandes pour afficher

Il existe d'autres commandes pour afficher des graphiques dans Matlab. Par exemple: - stem - stairs - bar - pie - compass ____________________________________________________________________ Introduction Matlab ELG 3520

27

2.12.1 Affichage de signaux temps continu Les signaux temps continu sont en fait manipuls et sauvegards en valeurs discrtes dans Matlab. La commande utilise pour l'affichage est "plot". Exemple: Pour afficher le signal y (t ) = e t +1u(t 1) , tapez: >>clc >>clear >>t = 0:0.01:10; >>temps=find(t>=1); %vecteur temps commenant 1 p.c.q u(t-1) >>y=zeros(size(t)); %initialize y un vecteur zero >>y(temps)=exp(-t(temps)+1); %value le signal partir de t=1 >>plot(t, y)

Rsultats:

____________________________________________________________________ Introduction Matlab ELG 3520

28

2.12.2 Affichage de signaux temps discret Exemple: Pour dessiner le signal temps discret suivant x[n] = (0.5 ) + u[n + 3] , tapez: >>clear >>clc >>n=-30:30; %vecteur de points >>range=find(n>=-3); %intervalle qui nous intresse >>x=zeros(size(n)); >>x(range)=0.5.^(n(range)+2); >>stem(n, x)
n+ 2

Rsultat:

____________________________________________________________________ Introduction Matlab ELG 3520

29

Tableau dcrivant certaines commandes d'affichage: Note: x et y sont des vecteurs Commandes bar(x, y) barh(x,y) stairs(x,y) stem(x,y) loglog(x,y) semilogx(x,y) semilogy(x,y) polar(teta,rho) fplot Description Dessine des barres verticales pour les diffrentes valeurs de "x" diffrentes hauteur "y" Mme chose sauf que les barres sont horizontales Dessine un graphique chelons, o chaque chelon est centr un point (x,y) Ressemble de multiples impulsions centres au point (x,y) (voir graphique ci-haut) Mme chose que "plot" sauf que c'est sur une chelle logarithmique Graphique semi-log en x Graphique semi-log en y Dessine en coordonnes polaires Dessine le graphique d'une fonction

____________________________________________________________________ Introduction Matlab ELG 3520

30

3. Les Boucles
3.1 La boucle "while" Dans Matlab, la boucle "while" s'crit de la faon suivante: while expression end Le code dans la boucle est excut aussi longtemps que la condition de dpart est "vrai". Exemple: >>clear >>clc >>x=1; >>while x<10 >>x = x+1; >>end >>disp(x)

3.2 La boucle "for" La boucle "for" s'crit de la manire suivante: for index = expression end o "expression" prend gnralement la forme suivante: dbut:incr:fin Exemple: >>clear >>clc >>for x=1:2:9 >>y=x; >> disp(x); ____________________________________________________________________ Introduction Matlab ELG 3520

31

>>end 3.3 "if" et "if-else" "if" et "if else" sont utiliss pour imposer des conditions. Si la condition est respecte, alors le code qu'elle contient est excut. A noter qu'il faut toujours terminer le "if" par un "end" en Matlab. Forme: if "expression" ----elseif "expression" ----else ----end Exemple: >>clc >>clf >>clear >>for x=1:10 >> if (x<5) >> low(x)=x; >> else if x= =5 >> cinq=x; >> else >> high(x)=x; >> end >>end >> >>disp(low) >>disp(high) >>disp(cinq) Rsultat:

____________________________________________________________________ Introduction Matlab ELG 3520

32

On peut voir dans cet exemple comment les valeurs de "x" plus petites que 5 ont t sauvegardes dans le tableau "low" chaque fois que la condition est respecte; autrement, les valeurs plus grandes que 5 ont t sauvegardes dans "high", et la valeur "5" dans le tableau nomm "cinq". 3.4 instruction "switch" Dans Matlab, l'instruction "switch" prend la forme suivante: SWITCH switch_expr CASE case_expr, statement, ..., statement CASE {case_expr1, case_expr2, case_expr3,...} statement, ..., statement ... OTHERWISE, statement, ..., statement END Dans Matlab, il n'est pas ncessaire d'inclure le "break" la fin de chaque case de l'instruction "switch ". Une fois qu'une case est "vrai", l'instruction "switch " est automatiquement termine.

____________________________________________________________________ Introduction Matlab ELG 3520

33

4. Fonctions construites par l'utilisateur


Il est possible de crer des fonctions dans Matlab, en utilisant la commande "function". Une fois qu'une fonction est cre dans un "M-file", elle peut tre excute tout moment partir de la fentre de commande en crivant le nom de cette fonction. Ceci est un exemple dmontrant une fonction simple calculant l'aire d'un triangle: Exemple: Pour commencer, ouvrez un nouveau "M-file" en allant dans "File/new/M-file". Maintenant, crivez dans le fichier Matlab ceci: function aire = aire_triangle(b,h) base=b; hauteur=h; aire=(base*hauteur)/2; end Une fois ceci complt, sauvegardez le fichier en slectionnant dans le menu: "File/save" Vous verrez automatiquement le nom de la fonction apparaissant au bas de votre cran. "aire_triangle.m" Pesez sur "save". Maintenant, vous pouvez appeler cette fonction partir de la fentre de commande quand vous voulez calculer l'aire d'un triangle. Notez qu'en appelant cette fonction, il faudrait y passer deux arguments comme paramtres: 5. la longueur de la base du triangle 6. la hauteur Exemple: Tapez dans la fentre de commande: >>essai=aire_triangle(10,5) Rsultat:

Vous venez de calculer l'aire d'un triangle de dimensions 10 x 5 (sans units) ____________________________________________________________________ Introduction Matlab ELG 3520

34

5. Fonctions pour Sries et Transformes de Fourier


Les fonctions Matlab les plus utilises pour l'analyse de Fourier sont les suivantes, o x est un vecteur ou une matrice sur lequel les oprations de Fourier sont appliques: Fonctions fft Description "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" 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. Dans Matlab X = fft(x)

ifft fftshift

x = ifft(X); fftshift(X)

Exemple: Pour trouver des chantillons de la transforme de Fourier d'un signal, il faut utiliser la fonction "fft". Tapez dans la fentre de commande: >>figure(1) >>T=0.01; >>Fs=1/T; % frquence d'chantillonnage de 100 Hz >>t = 0:T:1; >>x = sin(2*pi*10*t); % signal frquence de 10 Hz >>plot(t,x) >>title('Signal') >>xlabel('temps (ms)') Rsultat:

____________________________________________________________________ Introduction Matlab ELG 3520

35

Signal 1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1

0.1

0.2

0.3

0.4

0.5 0.6 temps (ms)

0.7

0.8

0.9

Maintenant tapez: >>figure(2) >>FFT_size=2048; >>X=fft(x,FFT_size); >>f=(0:FFT_size/2)/(FFT_size/2)*Fs/2; >>plot(f,abs(X(1:FFT_size/2+1))); % on voit bien que le signal est 10 Hz >>title('Signal en frquence'); >>xlabel('Frquence(Hz)'); >>ylabel('Amplitude'); Rsultat:
Signal en frquence 50 45 40 35 30 Amplitude 25 20 15 10 5 0

10

15

20 25 30 Frquence(Hz)

35

40

45

50

Remarquez la composante 10 Hz. Remarquez aussi qu'en utilisant "figure(1)" et "figure(2)" il a t possible d'afficher des courbes dans des fentres diffrentes. Une alternative aurait t d'utiliser la mme fentre pour afficher les deux courbes, une aprs l'autre, avec la fonction "pause" entre l'affichage des deux courbes. La fonction "pause" attend simplement que l'utilisateur appuie sur une touche.

____________________________________________________________________ Introduction Matlab ELG 3520

36

6. Polynmes
Les polynmes sont traits comme des vecteurs de coefficients dans Matlab. Par exemple, l'quation polynomiale y ( x ) = 2 x 3 + 6 x 2 + 5x + 12 sera reprsente par le vecteur y = [2 6 5 12]. Une fois que le vecteur est bien pos, il est possible de trouver avec Matlab les racines du polynme, tant donn qu'on connat l'quation, ou encore de trouver l'quation polynomiale en connaissant les racines. Voici le tableau dcrivant les commandes Matlab : Fonctions pour Polynmes poly roots polyval polyvalm deconv conv residue polyfit polyder Exemple: >>clear >>clc >>%vecteur reprsentant les coefficient du polynme y ( x ) = 2 x 3 + 6 x 2 + 5x + 12 >> y = [2 6 5 12]; >>%Racines >>racines=roots(y); >>disp(racines) >> >>%A partir des racines, trouvons l'quation >>approx_equation=poly(racines); >>disp(approx_equation) >> >>%Evaluons le polynme pour diffrents points dans un intervalle >>%Construction du vecteur de points >>points=0:0.1:2; >> >>%value le polynme ces points >>y_evalue=polyval(y,points); >> >>disp(y_evalue) >>%Affichage du polynme approxim pour les valeurs entre 0 et 2 >>plot(points,y_evalue) Description Construction de polynmes partir des racines Calcul des racines value un point valuation en une matrice de points Division de polynmes Multiplication de polynmes Dcomposition en rsidus Approximation du polynme Diffrentiation

____________________________________________________________________ Introduction Matlab ELG 3520

37

Rsultats:

____________________________________________________________________ Introduction Matlab ELG 3520

38

Pour multiplier deux polynmes y(x) et z(x), il faut utiliser la commande "conv". Pour la division , utilisez "deconv". Exemple: >>clc >>clear >>%Premier polynme y ( x ) = 2 x 3 + 6 x 2 + 5x + 12 >> y = [2 6 5 12]; >>%Deuxime polynme z( x ) = 6 x 2 + 87 x + 20 >>z=[0 6 87 20]; >>multiplication=conv(y,z); >>disp(multiplication) >> >>%Le rsultat de la multiplication donne la rponse en forme de vecteur >>% multiplication = 12 x 5 + 210 x 4 + 592 x 3 + 627 x 2 + 1144 x + 240 Rsultat:

Pour la division, si y(x) n'est pas un facteur de z(x), on obtiendra un "reste" aprs la division. Exemple: >>[quotient,restant]=deconv(z,y); >>disp(quotient) >>disp(restant) Rsultat:

____________________________________________________________________ Introduction Matlab ELG 3520

39

7. Fonctions d'optimisation
Fonctions d'optimisation fsolve fzero fmin fmins Description Rsolution d'un systme d'quations non-linaires Trouve les zros d'une fonction une variable Minimisation d'une fonction une variable Minimisation d'une fonction plusieurs variables

8. Analyse de systmes temps continu


Soit la fonction de transfert suivante: H ( s) = B( s) A( s) o

et

Dans Matlab, mettez les coefficients sous une forme de vecteurs:


num = [b M b M 1 ... b0 ] et den = [a N a N 1 ... a 0 ]

Aussi, une fonction de transfert peut tre crite en fonction de ses ples et de ses zros, qui peuvent tre trouvs par la commande"tf2zp":

o z:zros p:poles k:gain

____________________________________________________________________ Introduction Matlab ELG 3520

40

Tableau des commandes pour l'analyse de fonctions de transfert en temps continu: Fonctions tf2zp zp2tf feedback Description Donne les zros et les ples de la fonction de transfert H(s) partir des zros et des ples trouve la fonction de transfert Calcule un modle LTI pour un systme boucle-ferme. y = sys * u u --->O---->[ SYS1 ]----+---> y
| | +-----[ SYS2 ]<---+

Matlab [z,p,k] = tf2zp(num,den) [num,den] = zp2tf(z,p,k) sys = feedback(sys1,sys2)

series

parallel freqs

Connecte deux modles LTI en srie d'une manire que la sortie du 1er systme est relie l'entre du deuxime . Connecte deux systmes LTI en parallle Calcule la CTFT (transforme de Fourier) du systme connaissant sa fonction de transfert. w:vecteur de frquences dsires num:numrateur den=dnominateur

sys=series(sys1,sys2,outputs1,input s2)

sys=parallel(sys1,sys2,in1,in2,out1, out2) [H,w] = freqs(num,den,w)

De plus, l'utilisation des fonctions "step", "impulse, "lsim", et "bode" sera dcrit dans les sections qui suivent. Exemple: Pour la fonction de transfert suivante:
H ( s) =

4 3s + 4 s 2 + 5s + 6
3

tapez dans la fentre de commande: >>clc >>clear >>num=[4]; >>den=[3 4 5 6]; >>%Pour trouver les ples et zros >>[z,p,k] = tf2zp(num,den); >>disp('poles:') >>disp(p) ____________________________________________________________________ Introduction Matlab ELG 3520

41

>>disp('zeros:') >>disp(z) >>%Maintenant partir des ples et zros, trouvons la fonction de transfert: >>[num2,den2] = zp2tf(z,p,k); >>disp(num2) >>disp(den2) Rsultats:

Ceci est la mme quation qu'au dpart, sauf qu'elle normalise le premier coefficient du dnominateur 1. Multipliez par 3 au numrateur et au dnominateur pour obtenir le mme rsultat: (13333) . 3* 4 H ( s) = = 3 3 2 3 * ( s + 13333s + 16667 s + 2) 3s + 4 s 2 + 5s + 6 . . 8.1 Rponse l'chelon Pour trouver la rponse l'chelon ("step response") d'un systme, utilisez la commande "step" dans Matlab. Exemple: >>clc >>clear >>%Fonction de transfert H(s)=4/(3s2+2s+4) >>num=[4]; >>den=[3 2 4]; ____________________________________________________________________ Introduction Matlab ELG 3520

42

>>%Step Response >>step(num,den) Rsultat:

8.2 Rponse impulsionnelle Pour dessiner la rponse l'impulsion (rponse impulsionnelle, "impulse response") du systme, utilisez la commande "impulse": >>impulse(num,den) Rsultat:

____________________________________________________________________ Introduction Matlab ELG 3520

43

Pour trouver la rponse une entre arbitraire spcifie par l'utilisateur, il faut utiliser la commande "lsim": Exemple: >>clc >>clear >>t=0:0.01:10; >>%Fonction de transfert H(s)=4/(3s2+2s+4) >>num=[4]; >>den=[3 2 4]; >>%Entre du systme >>x=3*t; >>lsim(num,den,x,t); Rsultat:

8.3 Bode plot On peut galement tracer le diagramme de Bode de cette fonction de transfert en utilisant la commande "bode": Exemple: >>clc >>clear >>%Fonction de transfert H(s)=2/(3s+4) >>num=[2]; >>den=[3 4]; >>bode(num,den) ____________________________________________________________________ Introduction Matlab ELG 3520 44

Rsultat:

Le diagramme de Bode donne deux graphiques, la rponse en amplitude/magnitude (en dB) et la rponse en phase. Pour prdterminer l'chelle sur laquelle le diagramme "bode" est dessin, utilisez la commande suivante: w=logspace(d1,d2) Note: si d1= -1 et d2=4, ceci veut dire que le vecteur commence 10-1 et se termine 104

8.4 Rponse en frquence Pour calculer la rponse en frquence H (similaire au diagramme de Bode ...) d'une fonction de transfert, il faut utiliser la commande "freqs". De plus, il faut dfinir un vecteur de frquences "w" sur lequel la rponse H est calcule. Exemple: >>clc >>clear >>%vecteur de frquences >>w=0:0.1:10; >>%Fonction de transfert H(s)=2/(3s+4) >>num=[2]; >>den=[3 4]; >>H=freqs(num,den,w);

____________________________________________________________________ Introduction Matlab ELG 3520

45

9. Analyse de systme temps discret


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

Matlab y=conv(x,h) dstep(num,den,N)

dimpulse(num,den,N)

Y=filter(B,A,X)

[H,omega]=freqz(num,den,w)

Exemple: >>%Step Response, rponse l'chelon >>n=0:10; >>num=[1 0]; >>den=[0.9 0.1 0.001]; >>y=dstep(num,den,length(n)); >>%Graphique >>stem(n,y) Rsultat:

____________________________________________________________________ Introduction Matlab ELG 3520

46

Vous aimerez peut-être aussi