Académique Documents
Professionnel Documents
Culture Documents
Initiation à MATLAB
1. But du TP
- Découvrir le logiciel MATLAB.
- Apprendre à utiliser quelques fonctionnalités de base du logiciel.
2. Présentation de MATLAB
MATLAB (MATrix LABoratory) est un logiciel de calcul scientifique qui permet de résoudre
différents types de problèmes scientifiques et en particulier les problèmes d’automatique. Il possède
un langage de programmation puissant qui peut faire gagner beaucoup de temps à l’utilisateur.
Après le démarrage de MATLAB, la fenêtre principale s’affiche dans laquelle apparaît une autre
fenêtre partielle (Command Window) avec le symbole >>. C’est dans cette fenêtre que l’utilisateur
peut taper les instructions de MATLAB. Trois autres fenêtres partielles peuvent être affichées en
allant à Desktop-Desktop Layout-Default. Ces fenêtres sont :
- Current Folder : c’est le répertoire dans lequel les fichiers sont enregistrés.
- Workspace : affiche les variables de l’espace de travail.
- Command History : affiche l’historique des commandes exécutées.
3.1 Scalaires
>> x = 2.1
x =
2.1000
Le nom de la variable ainsi que le résultat sont alors affichés. Pour éviter l’affichage du résultat, il
suffit d’ajouter un point virgule à la fin de l’instruction. Dans ce cas, on peut taper plusieurs
instructions sur une même ligne. Pour voir la valeur d’une variable, il suffit de taper son nom sur la
ligne de commande.
>> a1 = 5; a_2 = 3;
>> a1
a1 =
5
Les variables peuvent être manipulées avec les opérateurs usuels (+ - * / ^) ainsi qu’avec des
fonctions prédéfinies de MATLAB telles que abs, sin (en radian), exp, sqrt, log, etc. D’autre
part, on peut ajouter des commentaires à une ligne d’instruction en utilisant le caractère « % », toute
commande placée après ce caractère n’est pas prise en compte par MATLAB.
1
FEI, 3ème année Automatique TP Auto501
Les variables déclarées dans la fenêtre de commande sont stockées par défaut dans l’espace de
travail (Workspace) et peuvent être utilisées dans les calculs subséquents. Ces variables sont
affichées dans la fenêtre partielle du Workspace. La commande who permet d’afficher les noms des
variables qui existent déjà dans le Workspace. Pour effacer une variable ou toutes les variables du
Workspace, on utilisera la commande clear. Par eilleurs, clc permet d’effacer le contenu de la
fenêtre de commande mais pas les variables.
>> clc
>> who
Your variables are:
a1 a_2 x y
>> clear x
>> who
Your variables are:
a1 a_2 y
>> clear
>> who
>>
>> x+y
ans =
4.0000 + 3.0000i
Si le résultat d’une instruction n’est pas stocké dans une variable, MATLAB utilise alors par défaut
la variable ans (answer). Les fonctions de base pour la manipulation des nombres complexes sont
déjà prédéfinies dans MATLAB : real, imag, abs, angle (en radian), conj.
Une matrice peut être définie sous forme d'un tableau avec des crochets, l'espace ou la virgule
sépare deux éléments d'une même ligne, les points virgules séparent les lignes.
>> A = [1 2 3;4 5 6]
A =
1 2 3
4 5 6
>> B = [5 3 9]
2
FEI, 3ème année Automatique TP Auto501
B =
5 3 9
On peut référencer n’importe quel élément de la matrice en utilisant des parenthèses. Le mot-clé
end peut être utilisé en indice pour signifier le dernier élément.
Pour connaitre par exemple les dimensions ou le nombre d’éléments d’une matrice ou d’un vecteur,
on peut utiliser les fonctions size, length et numel. Certaines fonctions prédéfinies dans
MATLAB permettent de créer directement des matrices de dimensions quelconques formées de 0,
de 1 ou de 0 avec une diagonale de 1.
>> zeros(1,2)
ans =
0 0
>> ones(2,3)
ans =
1 1 1
1 1 1
>> eye(2,3)
ans =
1 0 0
0 1 0
On peut ajouter des lignes et des colonnes à une matrice quelconque à condition de respecter les
dimensions de cette matrice.
>> A = [A;7 8 9]
A =
1 2 3
4 5 6
7 8 9
Plusieurs fonctions de manipulation de matrices existent déjà dans MATLAB. Par exemple, les
fonctions inv, repmat et find permettent, respectivement, d’inverser des matrices, de dupliquer
des matrices et de rechercher les éléments non nuls d’une matrice.
>> repmat(B,2,1)
ans =
5 0 9
5 0 9
3
FEI, 3ème année Automatique TP Auto501
>> find(B)
ans =
1 3
Des multiplications ou des divisions élément par élément sont possibles avec l’utilisation des
opérateurs « .* » et « ./ », respectivement.
>> C = [1 2 3];
>> B.*C
ans =
5 0 27
>> B./C
ans =
5 0 3
On peut également créer et manipuler des vecteurs d’une manière très facile grâce à l’opérateur
« : ». Sa syntaxe générale est x:p:y, où x et y sont, respectivement, le premier et le dernier
élément du vecteur, et p est le pas de variation de x à y.
>> D = 1:2:9
D =
1 3 5 7 9
>> D(2:4) = 0
D =
1 0 0 0 9
Les chaînes de caractères sont également considérées et manipulées comme des matrices. Certaines
fonctions prédéfinies dans MATLAB permettent de manipuler et d’afficher les chaînes de
caractères d’une manière très simple. Les fonctions sprintf et fprintf existent également
(même syntaxe qu’en langage C).
>> disp(s)
voici un message
>> disp(s(3:5))
ici
4
FEI, 3ème année Automatique TP Auto501
pi vaut 3.141593
4. Le graphisme
MATLAB permet de manipuler aisément des graphismes 2D et 3D. La commande plot est la
commande la plus utilisée, elle permet l’affichage d’une courbe 2D.
>> grid
>> title('Courbe y = sinus(pi*x)')
>> xlabel('x'); ylabel('y')
La commande plot permet également de tracer plusieurs courbes à la fois même avec des abscisses
différentes. Les couleurs des courbes sont changées automatiquement. On peut ajouter des légendes
à la figure avec la commande legend.
>> plot(x,sin(2*x*pi),2*x,sin(2*x*pi))
>> legend('Courbe 1','Courbe 2')
Par ailleurs, on peut afficher plusieurs courbes dans une même figure en utilisant la commande
subplot. Sa syntaxe est subplot(n,m,i), où n est le nombre des lignes qui divisent la figure
principale, et m le nombre de colonnes. Les subdivisions sont numérotées de 1 à n*m, de la gauche
vers la droite puis de haut en bas.
>> subplot(2,2,1)
>> plot(x,sin(x*pi))
>> subplot(2,2,2)
>> plot(x,sin(2*x*pi))
>> subplot(2,2,3)
>> plot(x,sin(3*x*pi))
Si on utilise deux fois de suite la commande plot, le premier graphe se voit remplacer par le
deuxième. Pour le préserver, on peut utiliser les commandes hold on et hold off. De plus, on
peut spécifier avec plot la couleur et le style des courbes tracées.
>> plot(x,sin(x*pi))
>> hold on
>> plot(x,sin(2*x*pi),'r')
>> hold off
>> plot(x,sin(3*x*pi),'ok')
Un script est un fichier qui contient une séquence d’instructions de MATLAB. Il permet de ce fait
de les sauvegarder une fois pour toutes, et de les invoquer avec une seule commande qui n’est rien
d’autre que le nom du script. Pour créer un fichier script, on va à File-New-Script et on remplie le
fichier avec les instructions MATLAB qu’on veut utiliser. On peut prendre comme exemple la
dernière séquence d’instructions de la fonction plot. Après avoir sauvegardé et placé le fichier .m
dans le répertoire de travail, ce dernier peut être invoqué dans la ligne de commande en tapant
simplement son nom.
Les fonctions sont les plus utilisées dans MATLAB. Ce sont des scripts qui permettent de plus de
récupérer des valeurs d’entrée de l’utilisateur et de lui retourner des valeurs en sortie. Une fonction
doit obligatoirement commencer par le mot function suivi par le nom de la fonction avec
éventuellement des arguments d’entrée et de sortie. Notons bien que le nom de la fonction doit
obligatoirement porter le même nom du fichier .m qui la définit.
function [ma,mg]=ari_geo(x,y)
% Calcule les moyennes arithmétiques et géométriques de deux
% nombres positifs x et y.
% Syntaxe: [ma,mg]=ari_geo(x,y)
% Entrées:
% x - Premier nombre
% y - Deuxième nombre
% Sorties:
% ma – Moyenne arithmétique
% mg – Moyenne géométrique
ma = (x+y)/2;
mg = sqrt(x*y);
>> x = ari_geo(1,2)
x =
1.5000
y =
1.4142
6. Le Help/aide en ligne
La fonction help est d’une grande importance dans le logiciel MATLAB. En tapant help tout
court sur la ligne de commande, MATLAB affiche tous les noms des répertoires accessibles dans le
chemin d’accès aux fichiers exécutables avec une description succincte des fonctions accomplies
par ces derniers. En tapant help suivi du nom d'un répertoire (par exemple help elfun),
MATLAB affiche une explication brève sur toutes les fonctions et scripts de ce répertoire. Enfin si
on tape help suivi du nom d'un fichier (script ou fonction, par exemple help sort), on obtient
une explication complète sur l'utilisation de la fonction ou du script. De plus, un utilisateur
quelconque peut toujours ajouter une aide à ses fonctions ou scripts qu’il crée. Pour ce faire, il suffit
de placer des commentaires décrivant l’aide juste après l'instruction function (en première ligne)
6
FEI, 3ème année Automatique TP Auto501
pour les fonctions, tandis que pour un script, MATLAB prendra toutes les lignes de commentaires
placés en début de fichier. Comme exemple, on peut essayer help ari_geo.
On peut également obtenir de l’aide textuelle sur n’importe quelle fonctionnalité de MATLAB dans
une nouvelle fenêtre en tapant doc nom_fonction ou alors doc tout court, ou bien aller à Help-
Product Help.
7. Structures de contrôle
Les structures de contrôle sont les instructions qui permettant de réaliser des boucles et des
exécutions conditionnelles (tests).
Cette structure de contrôle est très utilisée dans la programmation d’une façon générale. Elle permet
de mener des tests sur une certaine condition logique afin de choisir entre plusieurs actions à
effectuer. La condition est exprimée sous forme d’une expression logique qui peut avoir une valeur
nulle ou non nulle. Cette condition peut être établie en utilisant les opérateurs de comparaison et les
opérateurs logiques. Pour illustrer l’application de cette instruction, on peut ajouter au début de la
fonction ari_geo précédente le code suivant.
L’instruction for permet d’effectuer des boucles en utilisant un indice (qui peut être un réel),
variant d’une valeur à une autre avec un certain pas. Une boucle peut être interrompue en utilisant
l’instruction break. Par ailleurs, une boucle peut contenir une autre boucle (boucle imbriquée). On
peut voir l’effet de cette instruction en ajoutant le code suivant à la fonction ari_geo.
n = 6;
for i = 1:2:n % boucle avec indice i variant de 1 jusqu’à n par pas de 2
disp(‘Ceci est une boucle’);
end
7
FEI, 3ème année Automatique TP Auto501
La boucle while permet de réaliser des boucles sans se servir d’un pas en faisant intervenir une
certaine condition logique sur le déroulement de la boucle. Cette condition peut changer de valeur
durant la boucle elle même. On peut ajouter par exemple le code suivant.
n = 6;
i = 1;
while i<n % boucle tant i est inférieur à n
disp(‘Ceci est une boucle’);
i = i+2;
end
Initiation à SIMULINK
8
FEI, 3ème année Automatique TP Auto501
1. But du TP
- Découvrir l’environnement SIMULINK de MATLAB.
- Apprendre à utiliser quelques fonctionnalités de base de cet environnement.
2. Présentation de SIMULINK
Pour démarrer SIMULINK, on peut taper simulink dans la ligne de commande ou simplement
cliquer sur l’icône de SIMULINK dans le menu de MATLAB. Une fenêtre apparaît alors à gauche
de l’écran dans laquelle sont affichées les différentes librairies de SIMULINK. Chaque librairie
contient des blocs fonctionnels qui sont regroupés par catégorie. Pour accéder aux différents blocs
d’une catégorie quelconque, il suffit de cliquer sur le nom de cette catégorie. Les librairies sont des
collections de blocs qui sont dédiés à des domaines bien spécifiques. La librairie standard Simulink,
par contre, est une librairie d’une utilisation générale et peut être exploitée conjointement avec
d’autres librairies.
9
FEI, 3ème année Automatique TP Auto501
Les schémas fonctionnels sont formés de blocs qui peuvent être ramenés à partir des différentes
librairies de SIMULINK. Pour ajouter un nouveau bloc à un modèle, on sélectionne tout d’abord la
librairie puis la catégorie qui le contiennent, ensuite on clique sur le bloc et on le fait glisser dans la
fenêtre du modèle. On peut par exemple construire le modèle de la Figure 2 en utilisant la librairie
Simulink, à partir des catégories Continuous pour le bloc Transfer Fcn, Sinks pour le bloc Scope et
Sources pour Step.
On connecte les blocs en les reliant par des traits à partir de leurs ports d’entrée ou de sortie (un
bloc peut avoir plusieurs ports d’entrée et/ou de sortie). Une façon automatique de le faire consiste à
cliquer sur le bloc de départ puis appuyer et maintenir la touche Ctrl enfoncée et cliquer ensuite sur
le bloc d’arrivée. On peut vérifier qu’une connexion est correctement établie par le fait qu’elle est
soit en trait noir continu. Les connexions peuvent être commentées en cliquant deux fois sur elles et
en ajoutant du texte.
Les différents blocs peuvent être explorés et paramétrés en effectuant un double-click sur eux. Une
nouvelle fenêtre est alors affichée dans laquelle on peut modifier les paramètres du bloc. Par
exemple, on peut modifier le numérateur et le dénominateur de la fonction de transfert ainsi que les
paramètres de la fonction Step (valeur initiale, valeur finale, etc) comme illustré sur la Figure 3.
Afin de comprendre le fonctionnement de chaque bloc fonctionnel de SIMULINK, on peut se
référer à son help en faisant simplement un click droit sur le bloc puis en cliquant sur Help.
Les noms des blocs (situés en dessous des blocs) peuvent être changés en cliquant sur eux et en
tapant de nouveaux noms. Si on veut par exemple masquer le nom d’un bloc, il suffit de faire un
click droit sur le bloc et aller à Format-Hide Name. Par ailleurs, on peut changer la couleur du
contour et du remplissage d’un bloc en faisant un click droit puis en allant à Foreground Color et
Background Color.
10
FEI, 3ème année Automatique TP Auto501
Des textes donnant des commentaires, des descriptions générales ou des remarques concernant un
modèle SIMULINK peuvent être placés n’importe où dans la fenêtre du modèle en cliquant deux
fois sur l’endroit où on veut ajouter le texte.
Les systèmes continus peuvent être simulés en utilisant les blocs de la catégorie Continuous. Ces
blocs permettent de dériver et d’intégrer les signaux continus et de simuler la réponse d’un système
linéaire sans ou avec délai. On peut par exemple modifier le modèle précédent comme il est montré
dans la Figure 6.
La catégorie Math Operations contient des blocs très utiles pour la réalisation des opérations
mathématiques telles que la somme, le produit et la multiplication de signaux. Elle contient
également des blocs qui permettent de réaliser des opérations sur les matrices, telles que le produit
matriciel, la multiplication point par point et la concaténation des matrices.
12
FEI, 3ème année Automatique TP Auto501
Différents types de signaux peuvent être générés en utilisant les blocs de la catégorie Sources. La
forme de ces signaux varie d’une simple constante à un signal aléatoire ou de forme quelconque.
Ces signaux sont généralement utilisés comme entrée pour d’autres blocs de SIMULINK.
13
FEI, 3ème année Automatique TP Auto501
Les résultats de simulation peuvent être visualisés au moyen des blocs de la catégorie Sinks. Les
éléments les plus utilisés de cette catégorie sont le Scope et le XY Graph. Comme pour le Scope, on
peut modifier les limites des axes de la figure de XY Graph à partir de sa fenêtre de paramétrage.
14
FEI, 3ème année Automatique TP Auto501
Il est possible d’établir un lien entre MATLAB et SIMULINK au moyen des blocs From
Workspace (Sources) et To Workspace (Sinks). Le premier bloc permet de récupérer des données à
partir de MATLAB et de les utiliser au cours de la simulation du modèle SIMULINK. Pour ce faire,
on doit préciser tout d’abord le nom de la variable du Workspace qui doit être utilisée dans la
simulation. Celle-ci doit être une matrice dont la première colonne est le vecteur qui représente la
variable du temps. On peut par exemple, définir une matrice de données E à partir de deux variables
t et u comme suit :
>> t = (0:0.1:10)';
>> u = sin(t);
>> E = [t u] ;
En double-cliquant sur le bloc From Workspace, on peut mettre le nom de la matrice de données E
dans la zone Data. Dans l’exemple de la Figure 10, l’entrée du système est récupérée à partir du
Workspace de MATLAB (variable u). Par ailleurs, le bloc To Workspace permet de renvoyer les
résultats de la simulation vers le Workspace. Pour cela, on double-clique d’abord sur le bloc et on
spécifie le nom de la variable qui contiendra les résultats de la simulation dans la zone Variable
name (S dans notre exemple). Pour visualiser ces résultats, on peut utiliser la fonction plot (tout
est la variable du temps générée par défaut). Dans ce cas, il faut choisir dans la zone Save format du
bloc To Workspace l’option Array.
>> plot(tout,S)
Lorsque les schémas fonctionnels des modèles SIMULINK deviennent surchargés, on peut utiliser
les blocs de renvoi Goto et From de la catégorie Signal Routing afin de rendre ces schémas plus
lisibles et plus organisés. Les signaux renvoyés sont identifiés par des tags dont le nom est spécifié
à partir de la fenêtre de paramétrage de ces blocs.
15
FEI, 3ème année Automatique TP Auto501
Un subsystem est une encapsulation de plusieurs éléments du système dans lequel il fait partie. Pour
créer un subsystem, on peut se servir du bloc subsystem de la catégorie Ports & Subsystems,
comme on peut directement le créer en sélectionnant des éléments du modèle et en faisant un click
droit puis Create Subsystem. Les entrées et les sorties du subsystem sont repérés par des ports qui
portent les noms In et Out, respectivement.
16