Vous êtes sur la page 1sur 8

TP1 : INITIATION MATLAB

Objectifs

▪ Se familiariser avec l’utilisation du logiciel de calcul "MATLAB".


▪ Introduction à l'outil "SIMULINK" de Matlab.

I Introduction
Matlab (abréviation de " MATrix LABoratory ") est un logiciel de calcul numérique. Ce TP a
pour but de vous familiariser avec son utilisation.
MATLAB est un environnement informatique conçu pour le calcul matriciel. L'élément de
base est une matrice dont la dimension n'a pas à être fixée. Matlab est un outil puissant qui
permet la résolution de nombreux problèmes en beaucoup moins de temps qu'il n'en faudrait
pour les formuler en C ou en Pascal. S'il est parfaitement destiné à l'Automatique et au
Traitement du Signal (traitement numérique des données), sa facilité d'emploi avec des
nombres complexes et ses possibilités d'affichages graphiques en font un outil intéressant
pour bien d'autres types d'applications. De plus, des "Toolboxs" (boîtes à outils) sont
disponibles dans de nombreux domaines (traitement du signal, traitement d'image,
automatique, contrôle, logique floue, ...). Matlab peut être considéré comme un langage de
programmation au même titre que C, Pascal ou Basic.
Il intègre le calcul numérique, la visualisation des résultats, la programmation dans un
environnement ouvert aux développements ultérieurs et il présente la possibilité de créer des
interfaces graphiques afin de fournir à l'utilisateur un espace de travail convivial. Le logiciel
MATLAB est réservé notamment au traitement numérique des signaux, à la modélisation, à la
simulation et à la conception des systèmes numériques complexes. Par contre, sa singularité
est qu’il s’agit d’un langage interprété, c'est-à-dire, que les instructions sont exécutées
immédiatement après avoir été tapées.

II Commandes de MATLAB
Help commande/ toolbox : fournit la syntaxe de la commande et les commandes similaires.
Help fonction: fournit comme aide ce qui a été écrit comme commentaire (précède par %).
Look for commande : affiche toutes les fonctions sous Matlab qui utilise la commande en
question.
Dans l'espace de travail fourni par MATLAB, Il n'est pas nécessaire de compiler un
programme avant de l'exécuter.
La réponse est affichée si on ne met pas de point-virgule en fin de ligne. Elle est de plus
stockée dans une variable nommée ans (answer). La plupart des fonctions mathématiques
usuelles sont définies dans Matlab, et ceci sous une forme naturelle (sin, cos, exp, ...). C’est
également le cas de certaines constantes comme ‘pi’ par exemple, « 2* sin (pi/4) ».

II.1 Variables
On peut évidemment indiquer le nom de la variable dans laquelle le résultat doit être stocké
(ce nom doit commencer par une lettre et occuper moins de 19 caractères).
Attention : Matlab distingue les minuscules des majuscules.

2
• Variable complexe
Matlab travaille indifféremment avec des nombres réels et complexes. Par défaut les variables
i et j sont initialisées à la valeur complexe. Naturellement si vous redéfinissez la variable i ou
j avec une autre valeur elle n'aura plus la même signification.

II.2 Les vecteurs, les matrices et leur manipulation


En fait, toute variable de Matlab est une matrice (scalaire : matrice 1x1, vecteur : matrice
1xN ou Nx1). On peut spécifier directement une matrice sous la 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 éléments de lignes distinctes.
>> A = [ 1, 2, 3 ; 4, 5, 6 ; 7, 8, 9 ]
Les éléments d'une matrice peuvent être n'importe quelle expression de Matlab :
>> x = [ -1.3, sqrt(3), (1+2+3)*4/5 ]
x = -1.3000 1.7321 4.8000
Pour calculer la transposée d’un vecteur x ou d’une matrice A , il faut écrire
x1 = x’
A1 = A’
Les éléments d'une matrice peuvent ensuite être référencés par leurs indices, on utilise alors
des parenthèses et non des crochets. Le mot-clé end peut être utilisé en indice pour signifier le
dernier élément.
On peut effectuer les opérations d’addition, de soustraction, de multiplication sur les vecteurs
et les matrices, s’ils ont bien sûr les dimensions adéquates, en utilisant les symboles +, -, * .
Le tableau suivant donne quelques fonctions de base pour le calcul matriciel :

Commandes Desription

det calcule le déterminant d’une matrice

trace calcule la trace d’une matrice

inv calcule l’inverse d’une matrice

size détermine la taille d’une matrice

eig permet d’obtenir les valeurs propres et les vecteurs propres d’une matrice

rank calcule le rang d’une matrice

length détermine la longueur d’un vecteur

Pour l'analyse des données, on peut utilisé : min, max, mean, std, sum,
On peut avoir des informations sur la taille d'une matrice:
>> size(x)
>> length(x) % longueur

3
II.3 Opérations matricielles
Les opérations usuelles sont définies de façon naturelle pour les matrices :
>> 2*A % Produit par un scalaire
>> A*B % Produit de deux matrices (de dimensions cohérentes)
>> A^p % Elève la matrice carrée A à la puissance p
>> inv(A) % Inversion d'une matrice carrée inversible (message d'alerte éventuel)
>> A.*B % Produit élément par élément de deux matrices.
Attention : A*A est différent de A.*A.
>> X = A\B % Donne la solution de A*X = B (équivalent à X = inv(A)*B)
>> X = B/A % Donne la solution de X*A = B (équivalent à X = B*inv(A))
>> X = A./B % Division éléments par éléments
A( :,n) n iéme colonne de A
A.^2 fait le carre des éléments de A.(élément par élément)
Zeros(m,n) : génère une matrice m*n de zéros.
Ones (m,n) génère une matrice m*n de 1.
Eye(m,n) génère une matrice m*n identité.

 M1 M2 
Pour définir une matrice M =   par bloc, il faut d’abord définir les matrices M1,
 M3 M 4 
M2, M3 et M4 puis écrire:
M=[M1 M2 ;M3 M4]
Exemple :
A=[2 0;1 3]
B=[1 1;0 5]
C=eye(2)
D=ones(2)
A1=inv(A) (on calcule l’inverse de A)
E=[A B;C D] (c’est une matrice définie par bloc)
size(E) (on calcule la taille de E)
det(E) (pour calculer le déterminant de E)
rank(E) (pour calculer le rang de E)

II.4 Fonctions arithmétiques


abs : module, sqrt : racine carrée, real : partie réelle, imag : partie imaginaire, angle : la phase,
conj : conjugue.
rem : reste de la division entière, ceil : quotient de la division entière + 1, round: quotient de
la division euclidienne , exp, log, log10.

4
II.5 Opérateur " : "
L'opérateur " : ", sous MATLAB, peut être considéré comme l'opérateur d'énumération. Sa
syntaxe usuelle est : « deb:pas:fin ». Il construit un vecteur dont le premier élément est deb
puis deb+pas, deb+2*pas... jusqu'à deb+n*pas tel que deb+n*pas < fin < deb+(n+1)*pas. « : »
est très utile pour construire des signaux.

II.6 Affichage alphanumérique


On peut afficher des chaînes de caractères dans la fenêtre de commande :
>> message = 'bienvenue sur Matlab';
>> disp(message)
Les fonctions sprintf et fprintf existent également (même syntaxe qu'en langage C).
>> fprintf('pi vaut %f\n',pi)
pi vaut 3.141593.
On peut aussi demander des valeurs à l'utilisateur :
>> rep = input ('Nombre d'itération de l'algorithme : ');
Matlab affichera la chaîne de caractère entrée en paramètre et attendra une réponse de
l'utilisateur.

II.7 Affichage graphique des courbes


Matlab permet un grand nombre de types d'affichage 1D et 2D, seuls les plus courant seront
décrits ici. La commande plot permet l'affichage d'une courbe 1D :
Exemple
On veut tracer la fonction y = sin(t ) entre −  et  . Matlab ne peut pas calculer
sin(t) pour tous les points entre −  et  (il y en a une infinité). Il faut choisir un
nombre fini de points entre −  et  . On peut utiliser la commande linspace.
t=linspace(-pi,pi,100); (Cette fonction choisit 100 points régulièrement espacés
entre -pi et pi)
On peut aussi définir t de la façon suivante:
t=-pi:0.1:pi; ( cette définition crée un vecteur ligne dont le premier élément est -pi
et les points sont espacés de 0.1, 0.1 est l'incrément)
On calcule ensuite le vecteur y:
y=sin(t);
puis on trace la courbe:
plot(t,y)
On peut tracer une courbe en semilog ou en log avec les fonctions semilogx, semilogy et
loglog. On peut ajouter un titre aux figures ainsi que des labels aux axes avec les commandes
title, xlabel, ylabel:
>> title('Courbe y = sinus(t)')
>> xlabel('t'); ylabel('y')

5
II.8 Affichage de plusieurs courbes
On peut bien évidemment vouloir afficher plusieurs courbes à l'écran. Pour cela deux
solutions s'offrent à nous :
On peut effectuer plusieurs affichages sur une même figure en utilisant la commande subplot
qui subdivise la fenêtre graphique en plusieurs sous figures.
Sa syntaxe est : « subplot(nombre_lignes,nombre_colonnes,numéro_subdivision) ».
Les subdivisions sont numérotés de 1 à nombre_lignes*nombre_colonnes, de la gauche vers
la droite puis de haut en bas.
>> subplot(3,2,1)
>> plot(t,y)
>> subplot(3,2,2)
>> plot(t,y.^2)
On peut aussi ouvrir une deuxième fenêtre graphique à l'aide de la commande figure. Le
passage d'une fenêtre graphique à une autre pourra alors se faire à la souris ou en précisant le
numéro correspondant dans la commande figure(n). NB : on peut également superposer
plusieurs courbes sur le même référentiel, en utilisant la commande hold on (resp. hold off).
On peut changer la couleur, le type de trait ou le type de marqueur directement à partir des
menus de la figure sans passer par les commandes Matlab. Cependant, il est intéressant
parfois de le faire directement à partir de Matlab.
 Couleur
Couleur symbole

bleu (défaut) b
vert g
rouge r
cyan c
magenta m
noir k
jaune y

 Type de trait
Type de trait symbole

trait continu ---

pointillé :

tiret point --

tirets --

6
 Type de Marqeur
Par défaut, Matlab ne met aucun marqueur

Type de marqueur symbole

plus + +

cercle o

astérix *

point .

croix x

carré s

diamant d

triangles ^ , v, > , <

pentagone p

hexagone h

Pour les triangles, on aura un marqueur qui a la forme d'un triangle qui pointe dans la
direction du symbole utilisé.
Exemples (Applications détaillées)
Exemple 1
1. On veut tracer sin(t) et cos(t) sur [0, ] sur la même figure:
t1=linspace(0,pi,30); y1=sin(t1);
t2=linspace(0,pi,20); y2=cos(t2);
(on peut ne pas prendre les mêmes valeurs de t pour les deux courbes)
plot(t1,y1,'r+',t2,y2,':o')
Matlab affiche la courbe de sin(t) en utilisant le marqueur + et la couleur rouge, les points ne
sont pas joints entre eux parce qu'on a pas précisé le type de trait. La courbe cos(t) est tracé à
l'aide de pointillé avec des marqueurs cercle.

7
2. Un exemple où on précise les trois en même temps:
» plot (t1,y1,'-.+y',t2,y2,':o')
La courbe y1 est tracé avec des tiret-point, en jaune et des marqueurs
‘+’.
• Pour tracer deux courbes sur la même figure, on utilise la commande "hold on".
plot(t1,y1,'r+')
hold on
plot(t2,y2,':p')
Après qu'on a fini de tracer toutes les courbes dont on a besoin, on peut écrire "hold off" pour
que la prochaine courbe ne se superpose pas aux courbes précédentes.
• La légende d'une figure
On peut rajouter à une figure:
 un titre en utilisant la commande title
title('la fonction sin(t) et cos(t)')
 un nom à l'axe des abscisses avec la commande xlabel
xlabel('temps (s)')
 un nom à l'axe des ordonnées avec la commande ylabel
ylabel('amplitude')
Pour subdiviser une figure en plusieurs sous figures. On utilise la commande subplot.
» subplot(3,2;k)
divise la fenêtre figure en 3 lignes et deux colonnes c.a.d qu'on pourra tracer 6 figure sur cette
fenêtre. k désigne le numéro de la figure courante.
Exemple 2
t=linspace(0,6,50); y1=sin(t); y2=cos(t); y3=exp(t); y4=exp(-t) ; y5=2*t;
(On vient de définir 5 fonctions)
figure;
subplot(3,2,1); plot(t,y1); title('y=sin(t)');
subplot(3,2,2); plot(t,y2); title('y=cos(t)');
subplot(3,2,3); plot(t,y3); title('y=exp(t)');
subplot(3,2,4); plot(t,y4); title('y=exp(-t)');
subplot(3,2,5); plot(t,y5); title('y=2*t');

8
II.9 Génération des signaux
Construire la fonction échelon : stem (ones (m,n))
Construire la fonction rectangulaire : stem ([ones(m,n) zeros(m,n)])

II.10 Création du Fichier .m


Les fichiers .m permettent le sauvegarde d’un ensemble de commandes et leur exécution.
Ils permettent d’écrire et de sauvegarder des fonctions.

III Application
Gréer un fichier .m qui permet de calculer la fonction sinusoïdal.
function y= sinusoide(pas,long, per)
t=[0 :pas :long]
y=sin (2*pi*1/per*t)
plot (y)
xlabel(‘temps’)
ylabel(‘y(t)’)
nom=sprintf(‘fonction sinusoïdale de période %i de longueur%i’,per,long)

IV Introduction à SIMULINK
Voir Annexe 1

V Fonction de transfert sur MATLAB


Voir Annexe 2

Vous aimerez peut-être aussi