Tutorial Matlab
Tutorial Matlab
et
Martin Bouchard
Automne 2003
____________________________________________________________________
Introduction à Matlab ELG 3520 1
INTRODUCTION À MATLAB
Matlab est un outil très efficace qui est largement utilisé pour le calcul numérique et la
visualisation graphique. Dans Matlab, les variables et les scalaires sont manipulés comme
des matrices de "n" colonnes par "m" rangées. Par exemple, un scalaire serait une matrice
de 1 x 1. À l'exécution, Matlab affiche plusieurs fenêtres sur l'écran. Les trois types de
fenêtres les plus importants sont:
• "Figure Windows", dans lesquelles des figures et des graphiques sont dessinés
____________________________________________________________________
Introduction à Matlab ELG 3520 2
• "Edit Windows", où l'utilisateur peut modifier ou créer des programmes Matlab
("M-files")
Une fois que Matlab est parti, une fenêtre appelée "Command Window" apparaît sur
l'écran. L'utilisateur peut entrer multiples commandes ou équations mathématiques après
le signe ">>" qui apparaît au côté gauche de la fenêtre. Pour exécuter une opération, il
faut toujours appuyer sur la touche "enter" du clavier. De plus, il faut terminer l'opération
par un point-virgule ";"sinon, toutes les étapes du calcul seront affichées sur l'écran.
Exemple:
Dans la fenêtre de commande, tapez:
>>a = 4*5;
À cause du point-virgule à la fin de l'expression, la réponse n'a pas été affichée sur
l'écran. Pour obtenir le résultat, utilisez:
>>disp(a);
>>a = 4*5
Vous voyez que le résultat est automatiquement affiché sur l'écran. Pour effacer la
fenêtre, tapez:
>>clc
Ceci effacera toute la fenêtre de commande mais pas les variables créées dans la fenêtre
"workspace". À noter que la variable "a" est sauvegardée comme une matrice 1x1.
____________________________________________________________________
Introduction à Matlab ELG 3520 3
De plus, il est possible de voir le résultat de l'opération ("a = 4*5") en double-cliquant sur
" " dans la fenêtre. Pour complètement effacer le "workspace" et toutes les variables
en mémoire, tapez dans la fenêtre de commande:
>> clear
Maintenant, supposons que l'équation à exécuter dans Matlab est très longue. Pour
pouvoir l'insérer dans la fenêtre de commande, il faut utiliser "…"
Exemple:
Tapez:
>>x = 3+4+4+6+7
>>x = 3+4+4+…
+6+7
vous remarquerez que la même réponse est affichée à nouveau. Ceci vous permettra
d'écrire de longues équations dans Matlab.
____________________________________________________________________
Introduction à Matlab ELG 3520 4
"File/New/M-file"
La fenêtre "Edit Window" peut être vue comme un éditeur de texte où:
• Les commentaires sont écrits en vert et débutent par "%"
____________________________________________________________________
Introduction à Matlab ELG 3520 5
À noter que les "m-files" sont exécutés en tapant le nom du fichier dans la fenêtre de
commande.
ATTENTION:
Il faut toujours s'assurer que vous travaillez dans le bon répertoire, là où votre fichier est
sauvegardé, sinon vous obtiendrez des erreurs.
Dans cet exemple, le fichier Matlab à exécuter est mis dans le répertoire
"c:\matlabR12\work".
Cette fenêtre est utilisée pour afficher des graphiques en deux ou trois dimensions, des
images ou des "graphical user interface (GUI)".
Exemple:
x=1:0.01:10;
y=sin(x);
plot(x, y);
>>exemple
____________________________________________________________________
Introduction à Matlab ELG 3520 6
Dans cet exemple, l'expression x = 1:0.01:10 veut dire que le vecteur x débute à la valeur
"1" et se termine à "10" avec un incrément de "0.01", ce qui permet d'obtenir une plus
grande précision. Le vecteur contient 901 valeurs. La commande "plot" est utilisée pour
afficher le dessin sur l'écran.
>>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 rangée et 901
colonnes.
____________________________________________________________________
Introduction à Matlab ELG 3520 7
1.1.4 Obtenir de l'aide dans Matlab
i) La première option est de taper dans la fenêtre de commande "help" suivi par le nom de
la fonction que vous recherchez.
Exemple:
Tapez:
>>help cos
Ceci vous décrit la fonction "cos". Si vous ne connaissez pas le nom exact de la fonction
utilisée par Matlab, il faut trouver un autre moyen pour obtenir de l'aide. Par exemple,
"helpwin" (ci-dessous)
ii) La deuxième option est de taper "helpwin" dans la fenêtre de commande. Ceci, vous
affichera toutes les librairies de Matlab incluant les fonctions de chacune d'elles.
Exemple:
Tapez:
>>helpwin
____________________________________________________________________
Introduction à Matlab ELG 3520 8
Ceci vous affichera toutes les fonctions disponibles dans cette catégorie:
____________________________________________________________________
Introduction à Matlab ELG 3520 9
Une fois que vous trouvez le nom de la fonction qui vous intéresse, 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 même catégorie.
Exemple:
>>lookfor fourier
____________________________________________________________________
Introduction à Matlab ELG 3520 10
Ensuite, utilisez "help" suivi du nom de la fonction qui vous intéresse pour avoir plus
d'informations.
ATTENTION:
Si vous tapez une commande dans "Command window" et que par la suite Matlab
n'arrête plus de s'éxécuter, ceci est probablement relié au fait que vous venez de causer
une boucle infinie (ou une opération demandant trop de mémoire). Pour arrêter la
procédure, pesez sur:
"CTRL C"
iv) La quatrième manière 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-clés 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'opérateur "=". À 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:
>> var_imaginaire=10*i % i est la racine carrée de -1, pour les nombres complexes
>>var_complexe = var_imaginaire +4
>>var_vecteur = [1,2,3,4]
>>var_constante =12
c = a + bi
Exemple:
Tapez:
>>clc
>>clear
>>com1 =3+ i*4
>>com2 =3+j*4
Résultat:
____________________________________________________________________
Introduction à Matlab ELG 3520 12
On voit que ceci donne le même résultat.
Fonctions Description
conj(x) Calcule le complexe conjugué de x.
Si x=a+b*i alors conj(x)=a-b*i
real(x) Retourne la partie réelle de x
imag(x) Retourne la partie imaginaire de x
isreal(x) Retourne vrai(1) si aucun élément du vecteur "x" n'a une
partie imaginaire.
abs(x) Retourne la magnitude de x
|x|= a 2 + b 2
angle(x) 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-rangées et
vecteurs-colonnes.
Exemple:
Tapez dans la fenêtre de commande:
>>a1=[1 2 3 4]
>>a2=[1,2,3,4]
____________________________________________________________________
Introduction à Matlab ELG 3520 13
Résultats
Ceux-ci sont deux différentes manières d'écrire des vecteurs-
rangées dans Matlab. Pour accéder le deuxième élément du
vecteur, tapez:
>>a1(2)
Ceci retourne la deuxième 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"
Comme mentionné ci-haut, un vecteur est facilement construit dans Matlab en ajoutant
tous ses éléments un après l'autre. Si le vecteur est très grand, cette méthode devient
inefficace parce qu'elle prend énormément de temps pour inscrire les éléments un par un.
Ceci dit, on pourrait utiliser un raccourci pour créer des vecteurs, à condition que les
éléments soient séparés par un même intervalle ou incrément. Ceci est la forme que
prendrait cette méthode:
Exemple:
Tapez dans la fenêtre de commande:
>>x =[Link]
vous voyez que cette commande construit un vecteur de 10 éléments commençant à "1"
et se terminant à "19", où à chaque étape les valeurs sont incrémentées de "2".
Résultats:
____________________________________________________________________
Introduction à Matlab ELG 3520 14
2.2.2 "Transpose operator"
Pour obtenir la transposée d'un vecteur ou d'une matrice, utilisez le symbole (').
Exemple:
Tapez: Résultats:
>>a=[Link]
>>a'
>>b=[Link];
>>c=[a' b']
>> c = [a;b]
2.4 Matrices
Exemple:
Tapez:
____________________________________________________________________
Introduction à Matlab ELG 3520 15
>>clear %pour effacer la mémoire
>>clc %pour nettoyer l'espace de travail
>>
>>a1=[1,2;3,4;5,6]
ceci créera une matrice 3x2 de 6 éléments. Pour accéder au chiffre 4, tapez:
>>a1(2,2)
Résultats:
>>a1(1,:)
Résultat:
>>a1(:,1)
____________________________________________________________________
Introduction à Matlab ELG 3520 16
Résultat:
Pour modifier les éléments d'une matrice, par exemple changer la valeur "4" dans "a1"
pour un "10", tapez:
>>a1(2,2)=10;
>>disp(a1)
Résultat:
____________________________________________________________________
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 réelles.
Il est aussi important de noter que l'opération de transposition (') sur des matrices avec
valeurs complexes produira aussi une opération de conjugaison complexe sur les
données. La matrice transposée est donc une matrice appelé Hermitienne dans les
ouvrages mathématiques. Pour effectuer une transposition sans l'opération de conjugaison
complexe, il faut utiliser (.') comme opérateur plutôt que ('). Pour plus d'informations sur
les opérateurs, 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)
Résultats:
____________________________________________________________________
Introduction à Matlab ELG 3520 18
2.5 Opérations sur scalaires
____________________________________________________________________
Introduction à Matlab ELG 3520 19
2.6 Fonctions utiles pour initialiser des variables dans Matlab
Fonctions But
zeros(n) Génère une matrice de zéros de grandeur nxn
Fonctions Description
abs(x) Calcule |x|
acos(x) Calcule cos −1 x en radians
angle(x) Retourne l'angle (phase) du nombre complexe "x" en
radians
asin(x) Calcule sin −1 x en radians
atan(x) Calcule tan −1 x en radians
atan2(y,x) y
Calcule tan −1 sur les quatre quadrants du cercle
x
y
( − π ≤ tan −1 ≤ π )
x
cos(x) Calcule cosinus de x en radians
sin(x) Calcule sinus de x en radians
exp(x) Calcule ex
log(x) Calcule le logarithme naturel "logex"
log10(x) Calcule "log10 x"
[value,index]=max(x); Retourne la valeur maximale dans le vecteur x, et sa
position
[value,index]=min(x); Retourne la valeur minimale dans le vecteur x, et sa position
sqrt (x) La racine carrée de x
tan(x) Tangente de x
ceil(x) retourne la première valeur entière supérieure à x, dans la
direction de + ∞
ceil(2.3)=3 et ceil(-2.3) = -2
fix(x) retourne le premier entier inférieur à |x|, dans la direction de
____________________________________________________________________
Introduction à Matlab ELG 3520 20
zéro.
fix(2.3)=2 et fix(-2.3) = -2
floor(x) retourne la première valeur entière inférieure à x, dans la
direction de - ∞
floor(2.3)=2 et floor(-2.3) =-3
round(x) Arrondi x à un entier près
round(2.3)=2 , round(-2.3)= -2 et round(2.5)=3
std(x) Écart type
mean(x) Valeur moyenne
median(x) Valeur médiane
sort(x) Tri en ordre croissant
sum(x) Fait la somme de tous les éléments présents dans le vecteur
x
prod(x) Fait le produit des éléments dans le vecteur x
Exemple:
Tapez:
>>clear
>>clc
>>test= input('S.V.P entrer un chiffre\n');
>>2
>>test
Résultat:
Vous voyez que la variable "test" est maintenant égale à "2", qui a été entré par
l'utilisateur une fois que le code a été exécuté. Notez aussi que le symbole "\n" veut dire
____________________________________________________________________
Introduction à Matlab ELG 3520 21
nouvelle ligne. De plus, il est possible de créer des tableaux de caractères en utilisant le
symbole 's'.
Exemple:
Tapez:
>>clear
>>clc
>>test_string= input('Entrer un mot:\n', 's');
>>signaux
>>test_string
Résultats:
Fonctions But
pi La valeur de π
"i"ou "j" La valeur de ( − 1 ) ou valeur imaginaire
Inf Ceci représente ∞ causéepar une division par zéro
NaN "Not-a-Number", causé par une opération mathématique
indéterminée. Par exemple, "0/0"
clock Génère la date et le temps dans la forme d'un vecteur-rangée de 6
éléments correspondant à: année, mois, jour, heure, minute et
secondes.
ans Variable générée par Matlab pour sauvegarder un résultat si
l'utilisateur n'en a pas créé une dans le programme
____________________________________________________________________
Introduction à Matlab ELG 3520 22
2.10 Précision des résultats affichés
Par défaut, Matlab utilise une précision de 4 chiffres après la virgule pour l'affichage de
résultats. L'utilisateur peut changer la précision des nombres en choisissant parmi les
options suivantes :
Exemple:
Tapez:
>>clear
>>clc
>>x=-[Link];
>>y=x.^2-3.*x+10;
>>plot(x, y)
Résultat:
____________________________________________________________________
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=-[Link];
>>y=x.^2-3.*x+10;
>>plot(x,y)
>>title('Titre de dessin');
>>xlabel('x');
>>ylabel('amplitude');
>>grid on;
Résultat:
____________________________________________________________________
Introduction à Matlab ELG 3520 24
Exemple: (suite à l'exemple précédent)
Assurez vous que la fenêtre du graphique du dernier exemple n'est pas fermée, sinon,
recommencez les étapes précédentes et ensuite tapez :
Résultat:
On peut voir que les axes sont maintenant limités 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 fenêtre de cette figure. Pour insérer plusieurs graphiques
dans une seule fenêtre, 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)
Résultat:
Pour changer la couleur des lignes ou la forme des marqueurs, il faut écrire ceci:
>>plot(x,y1,'g*',x,y2,'bx')
Résultat:
____________________________________________________________________
Introduction à Matlab ELG 3520 26
Pour plus de détails consultez la table suivante:
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
Exemple:
>>clc
>>clear
>>t = 0:0.01:10;
>>temps=find(t>=1); %vecteur temps commençant à 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)
Résultats:
____________________________________________________________________
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:
n+ 2
>>clear
>>clc
>>n=-30:30; %vecteur de points
>>range=find(n>=-3); %intervalle qui nous intéresse
>>x=zeros(size(n));
>>x(range)=0.5.^(n(range)+2);
>>stem(n, x)
Résultat:
____________________________________________________________________
Introduction à Matlab ELG 3520 29
Tableau décrivant certaines commandes d'affichage:
Commandes Description
bar(x, y) Dessine des barres verticales pour les différentes valeurs
de "x" à différentes hauteur "y"
barh(x,y) Même chose sauf que les barres sont horizontales
stairs(x,y) Dessine un graphique à échelons, où chaque échelon est
centré à un point (x,y)
stem(x,y) Ressemble à de multiples impulsions centrées au point
(x,y) (voir graphique ci-haut)
loglog(x,y) Même chose que "plot" sauf que c'est sur une échelle
logarithmique
semilogx(x,y) Graphique semi-log en x
semilogy(x,y) Graphique semi-log en y
polar(teta,rho) Dessine en coordonnées polaires
fplot Dessine le graphique d'une fonction
____________________________________________________________________
Introduction à Matlab ELG 3520 30
3. Les Boucles
while expression
…
…
…
end
Le code dans la boucle est exécuté aussi longtemps que la condition de départ est "vrai".
Exemple:
>>clear
>>clc
>>x=1;
>>while x<10
>>x = x+1;
>>end
>>disp(x)
début:incr:fin
Exemple:
>>clear
>>clc
>>for x=[Link]
>>y=x;
>> disp(x);
____________________________________________________________________
Introduction à Matlab ELG 3520 31
>>end
"if" et "if – else" sont utilisés pour imposer des conditions. Si la condition est respectée,
alors le code qu'elle contient est exécuté. 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)
Résultat:
____________________________________________________________________
Introduction à Matlab ELG 3520 32
On peut voir dans cet exemple comment les valeurs de "x" plus petites que 5 ont été
sauvegardées dans le tableau "low" à chaque fois que la condition est respectée;
autrement, les valeurs plus grandes que 5 ont été sauvegardées dans "high", et la valeur
"5" dans le tableau nommé "cinq".
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 nécessaire 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 terminée.
____________________________________________________________________
Introduction à Matlab ELG 3520 33
4. Fonctions construites par l'utilisateur
Il est possible de créer des fonctions dans Matlab, en utilisant la commande "function".
Une fois qu'une fonction est créée dans un "M-file", elle peut être exécutée à tout moment
à partir de la fenêtre de commande en écrivant le nom de cette fonction. Ceci est un
exemple démontrant une fonction simple calculant l'aire d'un triangle:
Exemple:
"File/save"
"aire_triangle.m"
Maintenant, vous pouvez appeler cette fonction à partir de la fenêtre de commande quand
vous voulez calculer l'aire d'un triangle. Notez qu'en appelant cette fonction, il faudrait y
passer deux arguments comme paramètres:
5. la longueur de la base du triangle
6. la hauteur
Exemple:
Tapez dans la fenêtre de commande:
>>essai=aire_triangle(10,5)
Résultat:
____________________________________________________________________
Introduction à Matlab ELG 3520 34
5. Fonctions pour Séries et Transformées de Fourier
Les fonctions Matlab les plus utilisées pour l'analyse de Fourier sont les suivantes, où x
est un vecteur ou une matrice sur lequel les opérations de Fourier sont appliquées:
Exemple:
Pour trouver des échantillons de la transformée de Fourier d'un signal, il faut utiliser la
fonction "fft". Tapez dans la fenêtre de commande:
>>figure(1)
>>T=0.01;
>>Fs=1/T; % fréquence d'échantillonnage de 100 Hz
>>t = 0:T:1;
>>x = sin(2*pi*10*t); % signal fréquence de 10 Hz
>>plot(t,x)
>>title('Signal')
>>xlabel('temps (ms)')
Résultat:
____________________________________________________________________
Introduction à Matlab ELG 3520 35
Signal
1
0.8
0.6
0.4
0.2
-0.2
-0.4
-0.6
-0.8
-1
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
temps (ms)
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 fréquence');
>>xlabel('Fréquence(Hz)');
>>ylabel('Amplitude');
Résultat:
Signal en fréquence
50
45
40
35
30
Amplitude
25
20
15
10
0
0 5 10 15 20 25 30 35 40 45 50
Fréquence(Hz)
____________________________________________________________________
Introduction à Matlab ELG 3520 36
6. Polynômes
Les polynômes sont traités comme des vecteurs de coefficients dans Matlab. Par
exemple, l'équation polynomiale y ( x ) = 2 x 3 + 6 x 2 + 5x + 12 sera représentée 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 polynôme, étant donné qu'on connaît l'équation, ou encore de
trouver l'équation polynomiale en connaissant les racines. Voici le tableau décrivant les
commandes Matlab :
Exemple:
>>clear
>>clc
>>%vecteur représentant les coefficient du polynôme 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 polynôme pour différents points dans un intervalle
>>%Construction du vecteur de points
>>points=0:0.1:2;
>>
>>%Évalue le polynôme à ces points
>>y_evalue=polyval(y,points);
>>
>>disp(y_evalue)
>>%Affichage du polynôme approximé pour les valeurs entre 0 et 2
>>plot(points,y_evalue)
____________________________________________________________________
Introduction à Matlab ELG 3520 37
Résultats:
____________________________________________________________________
Introduction à Matlab ELG 3520 38
Pour multiplier deux polynômes y(x) et z(x), il faut utiliser la commande "conv". Pour la
division , utilisez "deconv".
Exemple:
>>clc
>>clear
>>%Premier polynôme y ( x ) = 2 x 3 + 6 x 2 + 5x + 12
>> y = [2 6 5 12];
>>%Deuxième polynôme z( x ) = 6 x 2 + 87 x + 20
>>z=[0 6 87 20];
>>multiplication=conv(y,z);
>>disp(multiplication)
>>
>>%Le résultat de la multiplication donne la réponse en forme de vecteur
>>% multiplication = 12 x 5 + 210 x 4 + 592 x 3 + 627 x 2 + 1144 x + 240
Résultat:
Pour la division, si y(x) n'est pas un facteur de z(x), on obtiendra un "reste" après la
division.
Exemple:
>>[quotient,restant]=deconv(z,y);
>>disp(quotient)
>>disp(restant)
Résultat:
____________________________________________________________________
Introduction à Matlab ELG 3520 39
7. Fonctions d'optimisation
B( s)
H ( s) = où
A( s)
et
Aussi, une fonction de transfert peut être écrite en fonction de ses pôles et de ses zéros,
qui peuvent être trouvés par la commande"tf2zp":
où z:zéros
p:poles
k:gain
____________________________________________________________________
Introduction à Matlab ELG 3520 40
Tableau des commandes pour l'analyse de fonctions de transfert en temps continu:
De plus, l'utilisation des fonctions "step", "impulse, "lsim", et "bode" sera décrit dans les
sections qui suivent.
Exemple:
Pour la fonction de transfert suivante:
4
H ( s) =
3s + 4 s 2 + 5s + 6
3
>>clc
>>clear
>>num=[4];
>>den=[3 4 5 6];
>>%Pour trouver les pôles et zéros
>>[z,p,k] = tf2zp(num,den);
>>disp('poles:')
>>disp(p)
____________________________________________________________________
Introduction à Matlab ELG 3520 41
>>disp('zeros:')
>>disp(z)
>>%Maintenant à partir des pôles et zéros, trouvons la fonction de transfert:
>>[num2,den2] = zp2tf(z,p,k);
>>disp(num2)
>>disp(den2)
Résultats:
Ceci est la même équation qu'au départ, sauf qu'elle normalise le premier coefficient du
dénominateur à 1. Multipliez par 3 au numérateur et au dénominateur pour obtenir le
même résultat:
3* (13333
. ) 4
H ( s) = = 3
3 * ( s + 13333
3
. s + 16667
2
. s + 2) 3s + 4 s 2 + 5s + 6
Pour trouver la réponse à l'échelon ("step response") d'un système, 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)
Résultat:
>>impulse(num,den)
Résultat:
____________________________________________________________________
Introduction à Matlab ELG 3520 43
Pour trouver la réponse à une entrée arbitraire spécifiée 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];
>>%Entrée du système
>>x=3*t;
>>lsim(num,den,x,t);
Résultat:
Exemple:
>>clc
>>clear
>>%Fonction de transfert H(s)=2/(3s+4)
>>num=[2];
>>den=[3 4];
>>bode(num,den)
____________________________________________________________________
Introduction à Matlab ELG 3520 44
Résultat:
w=logspace(d1,d2)
Note: si d1= -1 et d2=4, ceci veut dire que le vecteur commence à 10-1 et se termine à 104
Exemple:
>>clc
>>clear
>>%vecteur de fréquences
>>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 système à temps discret
Exemple:
Résultat:
____________________________________________________________________
Introduction à Matlab ELG 3520 46