Académique Documents
Professionnel Documents
Culture Documents
Résumé :
Ce document présente une découverte de Matlab par l’exemple.
Matlab est un logiciel de calcul numérique, utilisé dans de nombreux domaines d’application. Il se fonde
sur le calcul matriciel. Matlab est d’ailleurs un raccourci pour “Matrix Laboratory”. Le but de ce
document est d’aider les étudiants débutants en Matlab, en introduisant les commandes les plus
courantes.
1- Introduction
Ce document a pour but de vous familiariser avec l’usage de Matlab.
Matlab est un langage de programmation de haut niveau doublé d’un environnement de travail. Il est
principalement utilisé à des fins de calcul numérique. Il est largement utilisé dans les domaines de
l’ingénierie et des mathématiques appliquées. Pour effectuer un TP, si vous n’avez pas accès à une licence
Matlab sur votre machine, vous pouvez utiliser le logiciel GNU Octave qui est un clone gratuit et libre de
Matlab. En règle générale les codes se portent facilement de Matlab vers Octave et vice-versa. Ce mémo
est très loin d’être exhaustif et il est fortement recommandé de s’exercer par soi-même à d´découvrir les
richesses du langage. Matlab a été pensé pour le calcul numérique et dispose d’implémentation natives et
généralement très bien optimisées de toutes les fonctions mathématiques de base. L’évaluation du cours
comportera une partie pratique, sous forme de TP à finir à la maison ou en présentiel. L’ensemble des TP
sont à faire en autonomie, le professeur sera là uniquement pour s’assurer que l’application du cours
d’automatique linéaire et de régulation industrielle est bien assimilée à travers l’application sous
Matlab/Simulink.
2- Environnement Matlab
Le logiciel propose un environnement de travail composé de multiples fenêtres.
Commencez par lancer l’interface graphique de Matlab. Vous observez une fenêtre du type de celui sur la
Figure 1. Cette fenêtre est typique de Matlab.
Vous pouvez distinguer quatre blocs :
- au centre, l’invite de commande >> (console d’exécution). L’utilisateur peut entrer les instructions à
exécuter. Il s’agit de la fenêtre principale de l’interface de MATLAB (mode interactif).
- en haut à droite le contenu de l’espace courant de travail, (espace de travail). Il permet de visualiser les
variables définies, leur type, la taille occupée en mémoire…
- à gauche la liste des fichiers du répertoire courant (répertoire courant). Il permet de naviguer et de
visualiser le contenu du répertoire courant de l’utilisateur. Les programmes de l’utilisateur doivent être
situés dans ce répertoire pour être visible et donc exécutable.
- en bas à droite l’historique des commandes que l’utilisateur a exécutées. Il est possible de faire glisser
ces commandes vers la fenêtre de commande
3. L’aide dans Matlab
Mieux vaut apprendre à se repérer tout seul que de demander en permanence à son voisin comment faire.
eps 2.2204e-016
4.3. Historique.
Matlab conserve l’historique des commandes. Il est donc possible de récupérer des instructions
déjà saisies (et ensuite de les modifier dans le but de les réutiliser) :
dans la de commandes
Exemple :
Pour les angles en dégrées on ajoute ‘d’ à la fin de la fonction trigonométrique: e.g., cosd, sind …
Remarque : les commandes help, lookfor et doc peuvent être utilisées pour obtenir l’aide sur les fonctions
utilisées.
• scalaires
>> s=30
• vecteurs numériques
>> V=[1;2;3] (les ; séparent les éléments d’un vecteur colonne)
V=
1
2
3
>> V=[1,2,3] (les , ou les blancs séparent les éléments d’un vecteur ligne)
V=
1 2 3
>> V=[1 0.5 -2]
V=
1 0.5 -2
Bien que simple, cette méthode n’est pas pratique pour définir des vecteurs de taille importante. Une
seconde méthode utilise l’opérateur deux-points « : ». Il permet de discrétiser un intervalle avec un pas
constant. la syntaxe est de la forme: vecteur = valeur_initial : pas : valeur_finale Par défaut, le pas est égal
à 1. :
Exemple :
>>V = [1 :5]
V=
1 2 3 4 5
>> V = [0.1 :0.2 :0.8]
V=
0.1 0.3 0.5 0.7
On peut générer aléatoirement un vecteur en utilisant une fonction prédéfinie linspace. La syntaxe de cette
fonction est donnée par : Vecteur = linspace (début, fin, Nbr des éléments)
>> V = linspace(1, 4,5)
V=
1 1.5556 2.3334 3.9873 4
>>V(3)
ans =
2.3334
>>V(2 :4)
ans =
1.5556 2.3334 3.9873
• matrices
>> M=[11 12 13 14;21 22 23 24; 31 32 33 34; 41 42 43 44] (où les ; séparent les lignes d’une matrice)
• les polynômes
Matlab représente un polynôme sous forme d’un vecteur ligne contenant les coefficients classés dans
l’ordre des puissances décroissances. Par exemple le polynôme P d’expression
P(x) = x2 − 6x + 9 est représenté par
>> P=[1 -6 9]
Vecteurs
n:m nombres de n `a m par pas de 1
n:p:m nombres de n `a m par pas de p
linspace(n,m,p) p nombres de n à m
x(i) i-ème coordonnée de x
x(i1:i2) coordonnées i1 `a i2 de x
x(i1:i2)=[] supprimer les coordonnées i1 à i2 de x
[x,y] concaténer les vecteurs x et y
x*y’ produit scalaire des vecteurs lignes x et y
x’*y produit scalaire des vecteurs colonnes x et y
reshape(x,u,v) crée une matrice de taille [u,v], à partir de x
lenght(x) longueur de x
max(V) renvoie la valeur maximale du tableau
min(V) renvoie la valeur minimale du tableau
mean(V) renvoie la valeur moyenne des éléments du tableau
sum(V) calcule la somme des éléments du tableau
prod(V) calcule le produit des éléments du tableau
sort(V) range les éléments du tableau dans l'ordre croissant
Matrices
A’ ou transpose(A) transposée de A
inv(A) inverse de A
expm(A) exponentielle de A
trace(A) trace de A
poly(A) polynôme caractéristique de A
size(A) renvoie le nombre de lignes et de colonnes de A
A(i,j) coefficient d’ordre i, j de A
A(i1:i2,:) lignes i1 à i2 de A
A(i1:i2,:) =[] supprimer les lignes i1 à i2 de A
A(:,j1:j2) colonnes j1 à j2 de A
A(:,j1:j2)=[] supprimer les colonnes j1 à j2 de A
A(:) indexation linéaire de A, (concaténation des vecteurs
colonnes de A)
A(i) coefficient d’ordre i dans l’indexation linéaire
zeros(m,n) matrice nulle de taille m,n
ones(m,n) matrice de taille m,n dont tous les coefficients valent 1
eye(n) matrice identité de taille n
diag(A) extrait la diagonale de la matrice A
rank(A) renvoie le rang de la matrice A
det(A) renvoie le déterminant de la matrice A
max (A) renvoie un vecteur-ligne contenant les valeurs maximales
associées à chaque colonne
min (A) renvoie un vecteur-ligne contenant les valeurs minimales
associées à chaque colonne
triu(A) extrait la matrice triangulaire supérieure de A
tril(A) extrait la matrice triangulaire inférieure de A
[U,D] = eig (A) renvoie les vecteur propres et les valeurs propres de la matrice A
magic(n) carré magique de taille n
rand(m,n) matrice de taille m,n à coefficients i.i.d.de loi uniforme sur [0, 1]
randn(m,n) matrice de taille m,n à coefficients i.i.d. de loi normale N (0, 1)
2𝑥 + 𝑦 = −5
Soit le système: 4𝑥 − 3𝑦 + 2𝑧 = 0
𝑥 + 2𝑦 − 𝑧 = 1
2 1 0 𝑥 −5
Ecriture sous forme matricielle AX=B: 4 −3 2 𝑦 = 0
1 2 −1 𝑧 1
Si A est une matrice inversible alors le système admet une solution unique qui s’exprime par :
X = A-1.B
>> A = [2 1 0; 4 -3 2; 1 2 -1]
>>B = [-5;0;1]
>> X = inv(A)*B
X=
1.7500
-8.5000
-16.2500
Solutions : x = 1.75 y = -8.5 z = -16.25
On peut aussi utiliser la fonction prédéfinie roots pour résoudre une équation
Exemple :
x2 − x + 1 = 0:
>>roots([1 -1 1])
>>ans =
0.5000 + 0.8660i
0.5000 - 0.8660i
EXEMPLE :
𝐹(𝑝) = 9𝑝5 + 6𝑝2 + 2
>>F=[9 0 0 6 0 2];
>>polyder (F)
ans =
45 0 0 12 0 → 45𝑝4 + 0𝑝3 + 0𝑝2 + 12𝑝1 + 0𝑝0
EXEMPLE :
G(𝑝) = 9𝑝5 + 6𝑝2 + 2
>>G=[9 0 0 6 0 2];
>>polyval(G,2)
ans =
314
F=
9 18 45 6 12 32 4 10 → F(p) = 9𝑝7 + 18𝑝6 + 45𝑝5 + 6𝑝4 + 12𝑝3 + 32𝑝2 + 4𝑝1 + 10𝑝0
Remarque :
's' est un paramètre facultatif qui permet de donner des précisions quant à la couleur ou au type de tracé
souhaité. Par exemple '-r' permet de tracer une ligne continue rouge
Exemple
Soit un système du second ordre :H(p) = (en notation anglo-saxonne, la variable complexe p
est remplacée par s).
>>grid
>>line([0 10],[1.05 1.05])
>>line([0 10],[1.05 1.05] ,'color','g')
ces instructions permettent de tracer deux lignes horizontales et de faire apparaître le"tuyau
des réponses à 5%" :
>>line([0 10],[1.05 1.05])
>>line([0 10],[0.95 0.95])
la commande line([x1,x2],[y1,y2]) trace une ligne du point (x1,y1) au point (x2,y2).
"Tuyaux de la réponse à 5%" sur la réponse à un échelon
Une sinusoïde :
>> sinus=sin(t); (ne pas employer sin comme nom car c'est une fonction de Matlab etcela
entraînerait une "plante" du programme)
>>z = lsim(G,sinus,t) ;
>>plot(t,z) ;
Afin de visualiser la sinusoïde originale et le signal de sortie, taper :
>> hold on
>> plot(t,sinus,'r') %'r' permet d'affecter la couleur rouge à ce tracé pour le différencier du
précédent "hold on" permet de tracer plusieurs courbes dans la même fenêtre. "hold off"
annule cette commande.
Réponse de G à une excitation sinusoïdale (en bleu), sinusoïde excitatrice en rouge 4)
Etude fréquentielle
>>nichols(G)
>>ngrid
>>line([-135 -135],[0 -50]) permet de tracer une ligne verticale d'abscisse –135° pour la
visualisation de la marge de phase à 45°.
La fonction zoom on permet d'agrandir une partie de la figure, cliquer a l'aide du bouton droit
de la souris et tirer le pointeur en maintenant l'appui afin de délimiter une zone précise.
Réponse fréquentielle de H dans le repère de Black Nichols
>>bode(G) ;
Diagramme de Bode de G
>>[Gm,Pm,Wcg,Wcp] = MARGIN(num,den) %mesure de la marge de phase et de la
marge de gain ainsi que des pulsations correspondantes
Gm = Inf ; Pm = 53.1301
Wcg = Inf ; Wcp = 4.0000
>>figure pour ouvrir une nouvelle fenêtre "windows"
Diagramme de Nyquist de G
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);
Lieu des racines de G
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(G);
Sélectionner un point sur le graphique, les coordonnées s'affichent dans le "workspace".
Pour construire un système en boucle fermée :
>>BF=cloop(G,-1);
>>step(BF) permet de visualiser la réponse en boucle fermée unitaire à un échelon
Réponse du système en boucle fermé unitaire à un échelon
III Les commandes structurées
1. L’instruction for.
La syntaxe en est la suivante :
>>for variable = vecteur
>> instructions
>> end
Les colonnes du ‘vecteur’ sont affectées, l’une après l’autre à la variable ‘variable’ et pour chacune de
ces valeurs, les ‘instructions’ sont exécutées. Remarquez qu’il faut privilégier les opérations vectorielles
à l’utilisation de boucles.
Exemple 7.
Ces quelques lignes calculent n! pour n = 1 à 100. fact = zeros(1,100);
>>n=100;
>>fact(1)=1;
>>for k=2:n
>>fact(k)=fact(k-1)*k;
>>end
>>if conditions1
>>instructions (exécutées si les ‘conditions1’ sont vérifiées)
>>elseif
>>conditions2
>>instructions (exécutées si les ‘conditions1’ ne sont pas vérifiées mais si les ‘conditions2’ le
sont)
>>else
>>instructions (exécutées si ni les ‘conditions1’ ni les ‘conditions2’ ne sont vérifiées)
end
✓ Energies renouvelables
✓ Aérospatial
✓ Automatique
✓ Communications
✓ Systèmes de contrôle
✓ Instrumentation médicale…
Toutes représentations sous Simulink se fait au moyen de blocs, caractérisés par leur fonction
et leurs entrées/sorties:
Les blocs sont reliés entre eux par des signaux temporels:
❑ Création d’un modèle Simulink
Simulink peut être lancé depuis l’environnement de MATLAB
• en cliquant, dans la barre d’outils, sur le bouton
• ou en tapant simulink dans le Command Windows.
Analyse de G à l'aide de simulink
G(p) =
Ouvrir Simulink, soit par un clic sur son icône, soit en tapant simulink et en appuyant sur la
touche entrée. Cliquer sur l'icône représentant une page blanche en haut à gauche "new
model" afin d'ouvrir une nouvelle fenêtre permettant de construire H. Cliquer sur
"continuous" dans la fenêtre "Simulink" et traîner à la souris une "transfer Fcn" dans la fenêtre
vide. Cliquer sur "Math" et traîner dans la nouvelle fenêtre un "Gain", et un "sum". Cliquer
sur "sinks" et traîner un "scope" dans la nouvelle fenêtre. Cliquer ensuite sur "Sources" et
trainer un bloc "step" dans la nouvelle fenêtre. Raccorder les éléments comme indiqué ci-
dessous.
Double cliquer sur "transfer Fcn" et ajuster les coefficients du numérateur et du dénominateur.
Le nombre le plus à gauche représente la plus grande puissance de p, créer un espace (barre
d'espace), écrire le coefficient suivant (éventuellement 0), etc. Bien faire attention à ce que les
coefficients soient entre crochets. Vérifier que la durée de la simulation est bien de 10 s en
cliquant sur "simulation", "simulation parameters" (ne toucher à rien d'autre). Lancer la
simulation, puis double cliquer sur le scope.
L'échelon peut être réglé lui aussi en double cliquant dessus. Par défaut, il possède une
amplitude de 1 et devient égal à 1 à t = 0,5 s.
En double cliquant sur le scope, on obtient la figure suivante :
Réponse de G à un échelon visualisé par un oscilloscope de Simulink
Cliquer éventuellement sur le bouton figurant une paire de jumelles afin d'ajuster la courbe à la
taille de l'écran du scope. Cette figure peut être ajustée à la taille désirée en cliquant avec le
bouton gauche sur un coin de la figure et en traînant le coin à la souris en maintenant le bouton
enfoncé.
En double cliquant sur l'élément "gain", une boite de dialogue s'ouvre et il est possible de
modifier le gain. Relancer la simulation permet d'obtenir la nouvelle réponse sur le scope si on
a pris soin de ne pas fermer cette fenêtre "scope". Il est possible d'ajuster rapidement la courbe
à la fenêtre en cliquant sur l'icône représentant une paire de jumelles.
Afin d'étudier le réglage d'un PID et l'influence des différents paramètres, on reprend le schéma
précédent sur Simulink. Un clic sur l'élément "gain" le sélectionne. Un appui sur la touche
"suppr" le supprime. Il ne reste plus qu'à le remplacer par un élément PID que l'on trouve dans
"Simulink Extras" "Additional Linear". On obtient le schéma suivant :
Double cliquant sur l'élément PID, il est très facile de modifier les paramètres.
On peut donc simuler rapidement en salle de classe n'importe quel système à la correction du
système en boucle fermée que ce soit avec un PID ou à l'aide d'autre régulateur. Les possibilités
ainsi offertes au professeur sont immenses.
Il n'a plus besoin d'équipement encombrant et coûteux pour expérimenter et mettre au point ses
connaissances, ses cours, ses exercices et problèmes. Un PC équipé du logiciel adéquat suffit.
Références webographiques
https://www.cu-elbayadh.dz/ar/wp-content/uploads/2020/03/assrv.pdf
https://www.researchgate.net/publication/361380906_Introduction_a_l'utilisation_de_MATL
AB_Simulink
http://www.est-usmba.ac.ma/coursenligne/SE-S2-M5.2-%20Programmation%20Matlab-CRS-
%20Taoussi.pdf
https://homepages.laas.fr/yariba/enseignement/memo-matlab-autom.pdf
https://docplayer.fr/218165040-1-acceder-a-matlab-memo-matlab.html
https://www.univ-usto.dz/images/coursenligne/ARSLN_ZMFM.pdf