Vous êtes sur la page 1sur 16

FEI, 3ème année Automatique TP Auto501

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. Déclaration et manipulation des variables


Dans MATLAB, toute variable est une matrice (scalaire : matrice 1x1, vecteur : matrice 1xN ou
Nx1). Les noms des variables peuvent être des combinaisons de chiffres, de lettres et de tirets du 8.
Toutefois, elles doivent obligatoirement commencer par une lettre et occuper aux maximum 63
caractères. De plus, MATLAB fait la distinction entre les minuscules et les majuscules.

3.1 Scalaires

Pour déclarer un scalaire, on peut faire par exemple

>> 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

>> y = (exp(x)+x^2-2*x)/x % Ceci est un commentaire


y =
3.9887

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
>>

3.2 Variables complexes

Les variables complexes peuvent être définies comme suit

>> x = 1+i; y = 3+2*j; % On peut utiliser la lettre i ou j


>> x
x =
1.0000 + 1.0000i

>> 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.

>> z = conj(y) % Conjugué de y


z =
3.0000 - 2.0000i

3.3 Vecteurs et matrices

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.

>> A(2,3) % L’élément (2,3) de A


ans =
6

>> A(2,[1 3]) % Les éléments (2,1) et (2,3) de A


ans =
4 6

>> B(end) % Le dernier élément de B


ans =
9

>> B(2) = 0 % Rendre le 2ème élément de B égal à 0


B =
5 0 9

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

>> A(2,:) % Equivalente à A(2,1:3)


ans =
4 5 6

3.4 Chaînes de caractères

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).

>> s = 'voici un message'


s =
voici un message

>> disp(s)
voici un message

>> disp(s(3:5))
ici

>> error('Ceci est un message d''erreur')


??? Ceci est un message d'erreur

>> fprintf('pi vaut %f\n',pi)


pi vaut 3.141593

>> fprintf('pi vaut %s\n', '3.141593')

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.

>> x = 0:0.01:2 ; y = sin(x*pi);


>> plot(x*pi,y)

Les commandes grid, title, xlabel et ylabel permettent, respectivement, d’obtenir un


quadrillage de la figure, de donner un titre au graphe et de spécifier des légendes pour les abscisses
et les ordonnées.

>> 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')

5. Scripts et fonctions MATLAB


Les scripts et les fonctions MATLAB (fichier .m) sont les éléments de base d’une programmation
en MATLAB. Ces fichiers doivent être sauvegardés dans le répertoire de travail pour pouvoir être
exécutés. Néanmoins, on peut toujours changer le répertoire de travail (en allant à Current Folder-
Browse for Folder) ou alors spécifier un nouveau chemin d’accès aux répertoires contenant les
fichiers .m à utiliser (File-Set Path).
5
FEI, 3ème année Automatique TP Auto501

5.1 Les scripts

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.

5.2 Les fonctions

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

>> [x,y] = 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).

7.1 Opérateurs de comparaison et opérateurs logiques

Ces opérateurs retournent la valeur 0 ou 1 d’après le résultat de la comparaison ou de l’opération


logique effectuée. On distingue les opérateurs de comparaison suivants : < <= > >= == ~= et les
opérateurs logiques && || ~ et xor (ou exclusif). Il existe également d’autres fonctions logiques
prédéfinies telles que exist, any, ismember, etc.

7.2 Instruction de test if

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.

if x<0 || y<0 % || est l’opérateur logique ou


error('Les deux nombres doivent être positifs');
% warning('Les deux nombres doivent être positifs');
end

7.3 Boucle for

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.4 Boucle while

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

SIMULINK est un environnement intégré dans MATLAB pour la modélisation, l’analyse et la


simulation des systèmes dynamiques. Ces derniers sont établis sous forme de schémas fonctionnels,
à partir de certaines librairies, d’une manière simple et rapide.

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.

Figure 1 : Fenêtre de SIMULINK et fenêtre d’un modèle SIMULINK.

3. Construction d’un modèle SIMULINK


Pour créer un nouveau modèle SIMULINK, on sélectionne File-New-Model. Une nouvelle fenêtre
apparaît alors dont le nom est par défaut Untitled. C’est dans cette fenêtre que le schéma est
construit à partir des blocs contenus dans les différentes bibliothèques de SIMULINK. On peut
sauvegarder le modèle en lui changeant le nom dans un fichier qui porte l’extension .mdl. Une fois
fermé, on peut invoquer le modèle à partir de la ligne de commande de MATLAB en tapant son
nom ou simplement en faisant un double-click sur son nom dans le répertoire de travail.

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.

Figure 2 : Exemple d’un Modèle SIMULINK.

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

Figure 3 : Fenêtre de paramétrage du bloc Transfer Fcn.

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.

Figure 4 : Exemples de textes ajoutés à un modèle.

4. Simulation d’un modèle SIMULINK


Pour lancer la simulation d’un modèle SIMULINK, on clique sur le triangle noir dans le menu de sa
fenêtre ou alors aller à Simulation-Start dans le menu de cette fenêtre. Les différents paramètres de
11
FEI, 3ème année Automatique TP Auto501

simulation peuvent être changés en allant à Simulation-Configuration Parameters. On peut ainsi


changer les temps de départ et de fin de simulation, les types du solver et du pas de simulation et
éventuellement d’autres paramètres. D’autre part, la simulation peut être lancée à partir de la ligne
de commande de MATLAB en tapant sim('nom_modèle'), où nom_modèle désigne le nom du
modèle SIMULINK.

Figure 5 : Résultat de simulation visualisé sur le Scope.

Pour visualiser le résultat de la simulation du modèle de la Figure 4, il suffit de faire un double-


click sur le Scope. On peut rendre les limites de l’axe des ordonnées automatiques en cliquant sur
l’icône Autoscale dans le menu du Scope. On peut également les modifier comme on veut en faisant
un click droit sur la figure du Scope puis en cliquant sur Axes properties.

5. Exemples d’utilisation de la librairie Simulink


La librairie standard Simulink fournit les composants de base pour la conception et la simulation
des systèmes dynamiques. Dans ce qui suit, on donne quelques exemples de schémas fonctionnels
réalisés en utilisant des blocs de la librairie Simulink.

5.1 Simulation des systèmes continus

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.

5.2 Réalisation des opérations mathématiques

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

Figure 6 : Exemple d’utilisation des blocs Continuous.

Figure 7 : Exemple de réalisation d’opérations mathématiques.

5.3 Génération des signaux

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

Figure 8 : Exemple de génération d’un signal d’entrée pour un système.

5.4 Visualisation des résultats

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.

Figure 9 : Exemple d’utilisation des blocs Scope et XY Graph.

14
FEI, 3ème année Automatique TP Auto501

5.5 Lien avec MATLAB

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)

Figure 10 : Exemple d’un lien entre MATLAB et SIMULINK.

5.6 Utilisation des renvois

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

5.7 Création de subsystems

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

Vous aimerez peut-être aussi