Académique Documents
Professionnel Documents
Culture Documents
Tutorial Matlab
Tutorial Matlab
Automne 2003
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
"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.
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 :
"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 "%"
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:
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.
1.1.4
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"
Ceci vous affichera toutes les fonctions disponibles dans cette catgorie:
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.
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.
11
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:
12
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]
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:
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:
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:
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
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:
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
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)
20
floor(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
22
2.10
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
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:
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".
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
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:
26
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
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:
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:
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
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:
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.
33
Vous venez de calculer l'aire d'un triangle de dimensions 10 x 5 (sans units) ____________________________________________________________________ Introduction Matlab ELG 3520
34
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:
35
0.1
0.2
0.3
0.4
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.
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
37
Rsultats:
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:
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
et
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":
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 ]<---+
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)
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
8.2 Rponse impulsionnelle Pour dessiner la rponse l'impulsion (rponse impulsionnelle, "impulse response") du systme, utilisez la commande "impulse": >>impulse(num,den) Rsultat:
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);
45
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:
46