EMIG TP : INTRODUCTION A MATLAB Sounna NOUHOU
TRAVAUX PRATIQUES : Introduction à MATLAB
MATLAB signifie Matrix Laboratory.
MATLAB est un interpréteur : les instructions sont interprétées et exécutées ligne par ligne.
MATLAB fonctionne dans plusieurs environnements tels que X-Windows, Windows,
Macintosh.
Il existe deux modes de fonctionnement :
1. mode interactif : MATLAB exécute les instructions au fur et à mesure qu'elles sont données
par l'usager.
2. mode exécutif : MATLAB exécute ligne par ligne un"fichier M" (programme en lan- gage
MATLAB).
Une session de travail MATLAB
DÉMARRER MATLAB
Dans une fenêtre cmdtool, taper matlab. MATLAB répondra par un symbole >>. Dans cette
fenêtre Commande, on tape les instructions une ligne à la fois:
Chaque ligne est exécutée immédiatement après la touche "Return".
Une ligne peut contenir plusieurs instructions séparées par des virgules (,). Des
boucles FOR, WHILE, IF ... ELSE peuvent être sur plusieurs lignes.
ESPACE DE TRAVAIL (Workspace)
Les variables sont définies au fur et à mesure que l'on donne leurs noms et leurs valeurs numériques
ou leurs expressions mathématiques.
Les variables ainsi définies sont stockées dans l'espace de travail et peuvent être utilisées dans les
calculs subséquents.
FONCTION "HELP"
Pour obtenir de l'aide sur un sujet, une instruction ou une fonction, on tape help suivi par le sujet,
l'instruction ou la fonction désirée.
Exemple 1:
>> help asind
asind Inverse sine, result in degrees.
asind(X) is the inverse sine, expressed in degrees,
of the elements of X.
See also sin, asin, sind.
>> help deg2rad
deg2rad Convert angles from degrees to radians.
deg2rad(X) converts angle units from degrees to radians for each
element of X.
See also rad2deg.
1
EMIG TP : INTRODUCTION A MATLAB Sounna NOUHOU
>> help laplace
L = laplace(F) is the Laplace transform of the sym F with default
independent variable t.
Examples:
syms a s t w x F(t)
laplace(t^5) returns 120/s^6
laplace(exp(a*s)) returns -1/(a-z)
>> help conv
conv Convolution and polynomial multiplication.
C = conv(A, B) convolves vectors A and B. If A and B are
vectors of polynomial coefficients, convolving them is equivalent to
multiplying the two polynomials.
>> help residue
residue Partial-fraction expansion (residues).
[R,P,K] = residue(B,A) finds the residues, poles and direct term of
a partial fraction expansion of the ratio of two polynomials B(s)/A(s).
>> help dec2bin
dec2bin Convert decimal integer to its binary representation
dec2bin(D) returns the binary representation of D as a character vector.
Example
dec2bin(23) returns '10111'
See also bin2dec, dec2hex, dec2base, flintmax.
>> help bin2dec
bin2dec('010111') returns 23
>> dec2bin(13)
>> dec2hex(13)
INFORMATION SUR L'ESPACE DE TRAVAIL
Pour obtenir une liste des variables dans l'espace de travail, on utilise les instructions
suivantes:
who Affichage des variables dans l'espace de travail.
whos Affichage détaillé des variables dans l'espace de travail.
NOMBRES : Les nombres réels peuvent être écrits sous différents formats:
5 1.0237 0.5245E-12 12.78e6 0.001234 -235.087
Les nombres complexes peuvent être écrits sous forme cartésienne ou polaire:
Forme cartésienne: 0.5 + i*2.7 -1.2 + j*0.789 2.5 + 9.7i
Forme polaire: 1.25*exp(j*0.246)
Exemple : pour vous familiariser avec MATLAB, taper les instructions suivantes :
>> 8*5/(2*2)
>> x=4
>>y=5
>>z=x*y
>> sin(pi*x)
>> x=input('Entrer un nombre reel :')
>> who
2
EMIG TP : INTRODUCTION A MATLAB Sounna NOUHOU
Remarque: Lorsqu'on ajoute un «;» à la fin d'une instruction, elle est exécutée mais le résultat
n'est pas affiché.
>> a=[1 2 3 4 5];
>> b=-2.5;
>> c=b*a;
Lorsqu'il n'y a pas de «;» à la fin d'une instruction, elle est exécutée et le résultat est affiché:
>> a=[1 2 3 4 5]
>> b=-2.5
>> c=b*a
OPÉRATION «ÉLÉMENT PAR ÉLÉMENT»
Les opérations «élément par élément» des vecteurs et des matrices sont effectuées en ajoutant un
point (.) avant les opérations * / \ ^ '
Exemple 2:
>> A=[1 2 3 4 5]
>> B=[6 7 8 9 10]
>> C=A.*B
>> D=A./B
Variables et fonctions
VARIABLES
On définit une variable en donnant son nom et sa valeur numérique ou son expression
mathématique :
>> a =1.25
>> x = 0:0.5:10
>> y = a*x
>> z = y.^2
EXPRESSIONS MATHÉMATIQUES
On écrit les expressions mathématiques de la façon habituelle:
>> z = 5*exp(-0.4*x).*sin(7.5*y);
FONCTIONS MATHÉMATIQUES
Les fonctions mathématiques de base sont données dans le tableau suivant:
abs angle sqrt real imag
valeur absolue argument (nb. com- racine carrée partie réelle partie imaginaire
module (nb. complexe) plexe)
conj round fix floor ceil
conjuguée (nb. complexe) arrondir arrondir (vers zéro) arrondir (vers - ) arrondir (vers )
sign rem exp log log10
signe reste exponentielle logarithme base e logarithme base 10
Les fonctions trigonométriques sont données dans le tableau suivant:
sin cos tan asin acos atan atan2
sinh cosh tanh asinh acosh atanh
Exemple 3:
>> x=-2+5i
>> a=real(x)
>> b=imag(x)
>> m=abs(x)
3
EMIG TP : INTRODUCTION A MATLAB Sounna NOUHOU
>> alfa=angle(x)
>> alfad= alfa*180/pi
>> y=-2+5j
>> angled=rad2deg(alfa)
Exemple 4:
>> w=50
>> t=0.5e-3
>> y=25*exp(-4*t)*cos(w*t)
Création d’un fichier.m (ou script)
Travailler en créant un fichier .m dans l’éditeur de Matlab : File, new, M-file
Enregistrer sous un nom (ici surf). Les commentaires sont placés après le symbole %.
Exemple : écrire une suite d'instruction qui demande à l'utilisateur d'entrer une valeur réelle puis calculer la
surface du disque de rayon r.
Manipulation de vecteurs et de matrices Opérations de base pour l'analyse des données
Exemple: taper les instructions suivantes et Exemple: taper les instructions suivantes et
observer le résultat :
observer le résultat :
A=[1 2 3;4 5 6;7 8 9]
x=[2 4 3 7 1]
B=[5 3 7;4 6 3;1 6 3;2 8 5]
v=[1;2;3] A=[1 2;5 3;0 9]
C=[A v]
max(x)
D=[A ;B]
D(3,3) max(A)
D(:,2)
max(A')
D(5,:)
D(2:4,2:3) min(A)
eye(3)
mean(x)
ones(2,3)
A' mean(A)
M=[0 5 3;9 1 6;4 2 8]
det(M) x=[2 2 2 1 3 4 1 1]
inv(M) hist(x)
A(:,2)=v
[n p]=size(A) x=[1 2 3 4 5]
B*A y=[1 4 9 16 25]
A*A
A.*A plot(x,y,'r*')
A+A plot(x,y,'y-')
help function
4
EMIG TP : INTRODUCTION A MATLAB Sounna NOUHOU
4. Quelques commandes MATLAB :
>> syms t s a w
>>laplace(t^0)
>>laplace(exp(-a*t))
>>ilaplace(1/s)
>>ilaplace(1/(s+a))
>>ilaplace(exp(-2*s))
>>ilaplace((exp(-2*s))/s)
>>ilaplace((exp(-0*s))/s)
>>laplace(dirac(t))
Pour créer une fonction de transfert :
>>num=[2 1]
>>den=[1 2 1]
>> G=tf(num,den) (numérateur et dénominateur de la fonction de transfert)
ou
>>G=zpk([-1/2],[-1 -1],2) (zéros, pôles et facteur de gain de la fonction de
transfert)
>> s = tf('s'); H = (s+1)/(s^2+3*s+1) >>nichols(G) trace le diagramme de
Pour constituer un système à l’aide de Black-Nichols
différents sous-systèmes on peut effectuer >>rlocus(G) trace le lieu d’Evans
différentes >>rlocfind(G) donne les valeurs des
opérations. Soient G1 et G2 les pôles et du gain correspondant sur le lieu
représentations des deux systèmes. d’Evans
Les combinaisons de base sont : >>damp(G) donne les pôles, ainsi que la
>>G1*G2 ou >>series(G1,G2) G1 en pulsation propre et l’amortissement associés
série avec G2 à chaque pôle
>>G1+G2 ou >>parallel(G1,G2) G1
en parallèle avec G2 Résidue
>>feedback(G1,G2) G1 bouclé par G2 num=[1 2 3];
den=[1 3 3 1];
On peut obtenir diverses informations sur le [a,b,c]=residue(num,den)
système défini par sa représentation G :
>>roots([1 -1 1])donne les racines Boucle for
de x2− x + 1 = 0 : Ecrire le programmesuivant:
>>pole(G) donne les pôles du système de
closeall;clearall;
fonction de transfert G
fori=1:100
>>pzmap(G) place les pôles et les zéros
wt(i) = 24*i*0.01;
dans le plan complexe x(i)=12.5*cos(wt(i)+pi/3);
end
>>step(G) trace la réponse indicielle
>>impulse(G) trace la réponse Instruction If
impulsionnelle Ecrire ce programme qui compare deux
réels :
>>bode(G) trace le diagramme de Bode
>>nyquist(G) trace le diagramme de n=input('Donner un nombre ')
Nyquist m=input('Donner un nombre')
5
EMIG TP : INTRODUCTION A MATLAB Sounna NOUHOU
ifn<m
disp('n est inferieur à m')
elseifn>m
disp('n est superieur à m')
else
disp('n est egal à m')
end
Fonctions :Fichier.m
function y = produit(a,b)
y=a*b
>>produit(5,10)
Graphique
plot(wt,x,'b'),grid
title('Fonction sinusoidale')
xlabel('puls
ation wt'),ylabel('fonction x')
6
EMIG TP : INTRODUCTION A MATLAB Sounna NOUHOU
Etude d'un système du second ordre
10
H(s) = 2
s + 2.s + 10
1) Ecriture de la fonction de transfert
num=[10]
den=[1 2 10]
H=tf(num,den)
2) Etude de la réponse à un échelon
step(H)
pour voir la réponse à un échelon pendant 10s
t=0:0.1:10 ;
y=step(num,den,t); le ; évite d'afficher le résultat lors de l’exécution
plot(t,y)
commentaires sur la courbe:
title('réponse à echelon');
xlabel('temps');
ylabel('y');
pour lire des valeurs sur la courbe :
ginput(1) et cliquer avec la souris sur le point à mesurer
pour tracer un quadrillage ou une ligne:
grid
line([0 10],[1.05 1.05])
line([0 10],[1.05 1.05] ,'color','g')
line([0 10],[0.95 0.95] ,'color','g')
Explotation des résultats:
Mesurer
le temps de réponse à 5% =....................................... le
dépassement D%=...............................................
le temps de montée au premier pic tpic=........................................
3) réponse à un signal quelconque
ramp=t ;
y=lsim(num,den,ramp,t);
plot(t,y)
4) Etude fréquentielle
bode(H)
figure pour ouvrir une nouvelle fenêtre windows
pour avoir un diagramme de Bode personnalisé
puls=logspace(0,1,100);
[ampli,phase,puls]=bode(num,den,puls);
subplot(211),semilogx(puls,20*log10(ampli)),
grid
subplot(212),semilogx(puls,phase)
grid
nichols(H) ngrid
figure
nyquist(H)
mesure de la marge de phase et de la marge de gain ainsi que des pulsations correspondantes
margin(H)
[Gm,Pm,Wcg,Wcp] = margin(H)
pour construire un système en boucle fermée:
[numf,denf]=feedback(num,den,-1);
FTBF=tf(numf,denf)
7
EMIG TP : INTRODUCTION A MATLAB Sounna NOUHOU
Application:
On asservit le système avec un correcteur proportionnel.
Calculer la valeur à donner au gain pour avoir une marge de phase de 45°
Simuler la réponse à un échelon du système asservi.
Mesurer le temps de réponse et le dépassement.
5) Lieu des racines
La méthode consiste à regarder où se trouvent les pôles du système bouclé lorsque l'on fait
varier le gain du correcteur proportionnel.
Pour afficher le lieu des pôles:
rlocus(num,den);
Pour préciser une zone sur le lieu des pôles :
zeta=0.2;
wo=5;
sgrid(zeta,wo)
Pour chercher la valeur du gain k permettant d'obtenir les pôles désirés en boucle fermée
[k,poles]=rlocfind(num,den);
k
poles
Choisir la valeur à donner au gain pour que le système H ait un amortissement de 0.7 en
boucle fermée. Simuler alors la réponse à un échelon du système bouclé.
Environnement de développement
Fonctions liées à la fenêtre de commande :
clc : effacement de la fenêtre de commande des anciennes commandes effectuées
exit : permet de quitter Matlab
Fonctions d'aide :
help : génère l'aide d'une commande
info : fournit des informations sur la version de Matlab
lookfor <mot_clé> : Recherche du mot-clé indiqué dans toutes les entrées d'aide
Fonctions liées à l'espace de travail :
clear : supprime toutes les variables du workspace, si une variable est passé en
argument seul cette variable est supprimée
who, whos : fait la liste des variables de l'espace de travail
Fonctions liées à la gestion des fichiers et au système d'exploitation :
dir ,ls (sous unix): fait la liste des fichiers du répertoire de travail
pwd : indique le répertoire courant
cd : permet de changer de répertoire
mkdir : création d'un répertoire
path : visualiser ou changer le chemin de recherche de répertoire de MATLAB
8
EMIG TP : INTRODUCTION A MATLAB Sounna NOUHOU
TRAVAUX PRATIQUES : Introduction à MATLAB/ SIMULINK
Simulink : étude graphique des systèmes
Fermer toutes les fenêtres graphiques.
1) Demonstration de simulink
Depuis Matlab taper simulink ou cliquer sur l’icône simulink
Objectif : simuler la réponse sur un oscilloscope d'un système du 1er ordre
Cliquer sur File.
Cliquer sur New (une fenêtre untitled s'ouvre).
Dans la fenêtre simulink :
1 clic sur le bloc source (une fenêtre source s’ouvre).
Amener avec la souris (drag and drop) un signal générateur de valeur constante
depuis la fenêtre source dans la fenêtre untitled.
9
EMIG TP : INTRODUCTION A MATLAB Sounna NOUHOU
un clic sur le bloc continuous (une fenêtre des modèles continus s’ouvre).
Amener avec la souris (drag and drop) un bloc transfert fonction depuis la fenêtre
continuous dans la fenêtre untitled.
un clic sur le bloc sink (une fenêtre de moyens de visualisation s’ouvre).
Amener avec la souris (drag and drop) un oscilloscope depuis la fenêtre sink dans la
fenêtre untitled.
Dans la fenêtre untitled :
Relier le générateur au bloc fonction de transfert (cliquer sur la pointe du bloc constant,
maintenez le clic enfoncer et aller jusqu'à la pointe entrante du transfer fcn, puis
relâcher le clic)
Relier le bloc fonction de transfert à l'oscilloscope.
Un clic sur transfert fonction. Donner le numérateur et le dénominateur d'un système
du premier ordre (constante de temps une seconde). Fermer la fenêtre transfert fonction.
Double clic sur le générateur (choisir l’amplitude de
l’échelon). Fermer la fenêtre générateur.
Dans la fenêtre untitled, cliquer sur simulation puis sur simulation parameter du menu
déroulant. Choisir les paramètres de simulation (start time, stop time .....).
Fermer la fenêtre.
Dans la fenêtre untitled, cliquer sur simulation puis sur
start. Observer la réponse sur l'oscilloscope.
10