Vous êtes sur la page 1sur 13

Ecole Nationale des Sciences de lInformatique

Module : Mathmatiques pour lingnieur


Classes : II1
AU : 2013/2014

-1-


TP1 : INITIATION MATLAB

1. Introduction
Matlab (abrviation de " MATrix LABoratory ") est un puissant logiciel de calcul numrique. Cest un
environnement informatique conu pour le calcul matriciel. L'lment de base est une matrice dont la
dimension n'a pas tre fixe. Matlab est un outil puissant qui permet la rsolution de nombreux problmes en
beaucoup moins de temps qu'il n'en faudrait pour les formuler en C ou en Pascal. La programmation au mme
titre que C, Pascal ou Basic. Par contre, sa singularit est quil sagit dun langage interprt, c'est--dire que les
instructions sont excutes immdiatement aprs avoir t tapes.
Le but de ce TP est de vous familiariser avec lutilisation de MATLAB.

1.1. Lancement
Au lancement de Matlab, la fentre "command" apparat. C'est dans cette fentre que l'on peut taper les
instructions Matlab ( la suite des chevrons >>).











1.2 . Langage interprt
Puisque Matlab est un langage interprt. Il n'est pas ncessaire de compiler un programme avant de l'excuter.
Toute commande tape dans la fentre de commande est immdiatement excute.

Fentre Command
Ecole Nationale des Sciences de lInformatique
Module : Mathmatiques pour lingnieur
Classes : II1
AU : 2013/2014

-2-

La rponse est affiche si on ne met pas de point-virgule en fin de ligne. Elle est de plus stocke dans une
variable nomme ans (answer). La plupart des fonctions mathmatiques usuelles sont dfinies dans Matlab, et
ceci sous une forme naturelle (sin, cos, exp, ...). Cest galement le cas de certaines constantes comme pi par
exemple :

1.2. Les variables
On peut videmment indiquer le nom de la variable dans laquelle le rsultat doit tre stock (ce nom doit
commencer par une lettre et occuper moins de 19 caractres).
Remarque : Matlab distingue les minuscules des majuscules.

Le nom de la variable ainsi que le rsultat sont alors affichs. On peut taper plusieurs commandes par ligne si
elles sont spares par un point virgule.


1.3. Les variables complexes
Matlab travaille indiffremment avec des nombres rels et complexes. Par dfaut les variables i et j sont
initialises la valeur complexe. Naturellement si vous redfinissez la variable i ou j avec une autre valeur elle
n'aura plus la mme signification.

Les fonctions usuelles de manipulation des nombres complexes sont prdfinies dans Matlab : real, imag, abs,
angle (en radian), conj.




1.4. 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
spcifier directement une matrice sous la forme d'un tableau avec des crochets, l'espace ou la virgule spare
deux lments d'une mme ligne, les points virgules sparent les lments de lignes distinctes.

Les lments d'une matrice peuvent tre n'importe quelle expression de Matlab :

Ecole Nationale des Sciences de lInformatique
Module : Mathmatiques pour lingnieur
Classes : II1
AU : 2013/2014

-3-

Les lments d'une matrice peuvent ensuite tre rfrencs par leurs indices, on utilise alors des parenthses
et non des crochets. Le mot-cl end peut tre utilis en indice pour signifier le dernier lment.

On peut remarquer que la taille du vecteur x a t ajuste en remplissant les lments non prciss par 0. On
peut aussi crer des matrices avec les fonctions zeros, ones et eye, ces fonctions crent des matrices de la taille
prcise, respectivement remplies de zros, de un, et de un sur la diagonale et de zros ailleurs.

On peut avoir des informations sur la taille d'une matrice :


On peut ajouter des lignes et des colonnes des matrices dj existantes (attention, les dimensions doivent
toutefois tre compatibles ...).


1.5. L'oprateur " : "
L'oprateur " : ", sous Matlab, peut tre considr comme l'oprateur d'numration. Sa syntaxe usuelle est :
deb:pas:fin . Il construit un vecteur dont le premier lment est deb puis deb+pas, deb+2*pas... jusqu'
deb+n*pas tel que deb+n*pas < fin < deb+(n+1)*pas. : est trs utile pour construire des signaux.
Ecole Nationale des Sciences de lInformatique
Module : Mathmatiques pour lingnieur
Classes : II1
AU : 2013/2014

-4-


Le pas d'incrmentation peut tre omis, un pas de 1 est alors pris par dfaut :

On peut aussi utiliser le " : " pour slectionner des lments d'un vecteur ou d'une matrice :


1.6. Oprations matricielles
Les oprations usuelles sont dfinies de faon naturelle pour les matrices :



Autres fonctions utiles pour les oprations matricielles

renverra un vecteur ligne dont chaque lment sera le maximum de la colonne correspondante. De la mme
faon est dfinie la fonction min().


2. Affichages graphiques et alphanumriques
2.1. Affichage alphanumrique
On peut afficher des chanes de caractres dans la fentre de commande :
Ecole Nationale des Sciences de lInformatique
Module : Mathmatiques pour lingnieur
Classes : II1
AU : 2013/2014

-5-


Les fonctions sprintf et fprintf existent galement

On peut aussi demander des valeurs l'utilisateur :

Matlab affichera la chane de caractre entre en paramtre et attendra une rponse de l'utilisateur.

2.2. Affichages graphiques de courbes 1D
Matlab permet un grand nombre de types d'affichage 1D et 2D, seuls les plus courant seront dcrits ici. La
commande plot permet l'affichage d'une courbe 1D :


On peut ajouter un titre aux figures ainsi que des labels aux axes avec les commandes title, xlabel, ylabel:


2.3. Affichages graphiques de courbes 2D
Avec la commande mesh on peut aisment avoir une reprsentation d'une fonction 2D. Cependant il faut
construire la grille des coordonnes des points en lesquels on a les valeurs de la fonction l'aide de la fonction
meshgrid.


2.4. 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 mme figure en utilisant la commande subplot qui subdivise la
fentre graphique en plusieurs sous figures. Sa syntaxe est :
subplot(nombre_lignes,nombre_colonnes,numro_subdivision).Les subdivisions sont numrots de 1
nombre_lignes*nombre_colonnes, de la gauche vers la droite puis de haut en bas.

Ecole Nationale des Sciences de lInformatique
Module : Mathmatiques pour lingnieur
Classes : II1
AU : 2013/2014

-6-


On peut aussi ouvrir une deuxime fentre graphique l'aide de la commande figure. Le passage d'une fentre
graphique une autre pourra alors se faire la souris ou en prcisant le numro correspondant dans la
commande figure(n). NB : on peut galement superposer plusieurs courbes sur le mme rfrentiel, en utilisant
la commande hold on (resp. hold off).

3. Environnement de travail, scripts et fonctions
3.1. Rpertoire de travail
Il est indispensable de travailler dans votre propre rpertoire et non dans le rpertoire de Matlab. De mme
dans votre rpertoire vous pouvez organiser vos fichiers dans des sous rpertoires. Pour que vos fonctions et
scripts soient accessibles partir de la ligne de commande Matlab il faut le rpertoire dans lequel vous allez
travailler, en utilisant les commandes cd et dir.

3.2. Sauvegarde et chargement de variables
Il peut tre utile, lors d'une session de travail, de sauvegarder des variables dans des fichiers du rpertoire de
travail. Cela peut tre ralis l'aide de la fonction save dont la syntaxe est :
save nom_fichier nom_variables .

Si le nom des variables est omis, tous l'espace de travail est sauv; si l'extension du fichier est omise elle sera
automatiquement .mat, si de plus, le nom du fichier est omis, la sauvegarde se fera dans le fichier matlab.mat.
Pour recharger des variables sauves dans un fichier, il suffit de taper :

Si le nom du fichier est omis, Matlab chargera le fichier matlab.mat. On peut un moment donn vouloir
connatre toutes les variables disponibles dans l'espace de travail. Cela est possible grce aux commandes who
et whos. La commande who nous donne le nom de toutes les variables existantes, tandis que whos nous donne
leur nom et l'espace mmoire qu'elles occupent.

3.3. Scripts
Il est parfois (souvent) souhaitable, pour ne pas avoir taper plusieurs fois une mme squence d'instructions,
de la stocker dans un fichier. Ainsi on pourra rutiliser cette squence dans une autre session de travail. Un tel
fichier est dnomm script. Sous windows, il suffit d'ouvrir un fichier avec le menu file, new, de taper la
squence de commande et de sauver le fichier avec une extension " .m " (nom_fich.m). En tapant le nom du
fichier sous Matlab, la suite d'instructions s'excute. Les variables dfinies dans l'espace de travail sont
accessibles pour le script. De mme les variables dfinies (ou modifies) dans le script sont accessibles dans
l'espace de travail. On peut (doit) mettre des commentaires l'aide du caractre pour-cent " % ". Toute
commande situe aprs " % " n'est pas prise en compte par Matlab, jusqu' la ligne suivante.

3.4. Fonctions
On a parfois (souvent) besoin de fonctions qui ne sont pas fournies par Matlab. On peut alors crer de telles
fonctions dans un fichier spar et les appeler de la mme faon que les fonctions prexistantes. La premire
ligne (hormis les lignes de commentaires) d'une fonction doit imprativement avoir la syntaxe suivante :
Ecole Nationale des Sciences de lInformatique
Module : Mathmatiques pour lingnieur
Classes : II1
AU : 2013/2014

-7-



Exemple de fonction :



Cette fonction pourra tre appele par :


Exemple de fonction plusieurs variables de sortie :


Cette fonction pourra tre appele par :


Le nom de la fonction doit imprativement tre le mme que le nom du fichier dans lequel elle est stocke
(sinon Matlab ne prendra pas en compte ce nom mais uniquement celui du fichier). Les nombres d'arguments
en entre et en sortie ne sont pas fixes et peuvent tre rcuprs par nargin et nargout. Cela nous permet donc
de faire des fonctions Matlab pouvant dpendre d'un nombre variable de paramtres. Les variables de l'espace
de travail ne sont pas accessibles la fonction sauf si elles sont entres comme variables d'entre. De mme les
variables dfinies dans une fonction ne sont pas accessibles dans l'espace de travail.

4. Boucles et contrles
Comme de nombreux autres langages de programmation, Matlab possde trois types d'instructions de
contrles et de boucles : for, if et while.

4.1. Contrle : " if "


La condition est exprime au travers d'une expression logique. Les expressions logiques sont des expressions
quelconques pour lesquelles on considre uniquement le fait qu'elles soient nulles (expression fausse) ou non
(expression vraie). On peut aussi construire ces expressions l'aide des oprateurs logiques et (&), ou (|), gal
(==), suprieur (>,>=), infrieur(<,<=), non(~), ou exclusif (xor) ou l'aide de fonctions logiques prdfinies
exist, any, find , isinf, isnan...
Ecole Nationale des Sciences de lInformatique
Module : Mathmatiques pour lingnieur
Classes : II1
AU : 2013/2014

-8-

4.2. Boucle : while

La suite dinstructions est rpte un nombre indfini de fois jusqu ce que lexpression logique soit fausse.

4.3. Boucle : "for"
La boucle for a pour syntaxe :

Cette structure de contrle est trs utile, mais il est recommand d'viter au maximum les boucles dans Matlab,
car elles sont trs lentes par rapport un traitement matriciel. Par exemple, la boucle suivante :

est quivalente


Mais s'excutera beaucoup plus lentement. Essayez avec N = 10, 100, 1000, etc. et comparez les temps.
Malheureusement, on ne rencontre pas toujours des cas aussi simples et il est difficile de penser matriciel, c'est
dire penser en Matlab. Les fonctions zeros et ones, permettent parfois d'viter de mettre en uvre une
boucle.
Par exemple, au lieu de faire la boucle :


On peut crire :


De plus certaines fonctions Matlab agissent sur une matrice en tant que suite de vecteurs.
Ainsi


nous donne le mme rsultat (mais en moins de temps) que :


5. Help / Aide en ligne
Matlab est pourvu d'une fonction d'aide trs utile : help. Ainsi si vous tapez help sur la ligne de commande
apparaissent tous les rpertoires accessibles depuis Matlab ainsi qu'une explication concernant ces rpertoires.
Si vous tapez help suivi du nom d'un rpertoire, Matlab affiche une explication brve sur toutes les fonctions et
Ecole Nationale des Sciences de lInformatique
Module : Mathmatiques pour lingnieur
Classes : II1
AU : 2013/2014

-9-

scripts de ce rpertoire. Enfin si vous tapez help suivi du nom d'un fichier (script ou fonction), apparat une
explication dtaille sur l'utilisation de la fonction ou du script. De plus vous pouvez crer une aide sur les
fonctions et scripts que vous crez et sur vos rpertoires. Pour une fonction, Matlab prendra comme help toutes
les lignes de commentaires suivant l'instruction function (en premire ligne). Pour un script, Matlab prendra
toutes les lignes de commentaires placs en dbut de fichier. Ces aides que vous crez pour vos fonctions et
scripts sont intressantes pour un utilisateur ventuel, mais aussi pour vous, pour vous rappeler le but de telle
fonction ou pour vous souvenir de sa syntaxe.
Exemple simple :






















Ecole Nationale des Sciences de lInformatique
Module : Mathmatiques pour lingnieur
Classes : II1
AU : 2013/2014

-10-

TP2 : GNRATION DES SIGNAUX


Ce TP a pour but de familiariser l'tudiant avec l'utilisation du logiciel MATLAB pour la gnration des
diffrents types de formes d'ondes.
The Signal Processing Toolbox de MATLAB contient des fonctions pour la gnration des formes d'ondes
couramment utilises priodiques et non priodiques, squences (impulsion, chelon, rampe), train
d'impulsions
1. Gnration des signaux : Impulsion Unit et Echelon Unit
Deux signaux lmentaires de base sont : limpulsion Unit et lchelon Unit.
Limpulsion unit u[n] de longueur N peut tre gnre en utilisant la commande MATLAB suivante :
u = [1 zeros(1,N-1)] ;
De mme, limpulsion unit ud[n] de longueur N et dcales de M chantillons, tel que M<N, peut tre gnre
par la commande MATLAB suivante :
ud = [zeros(1,M) 1 zeros(1,N-M-1)];
Lchelon unit s[n] de longueur N peut tre gnr en utilisant la commande MATLAB suivante :
s=[ones(1,N)]
La version dcale de lchelon unit sobtient de la mme manire que dans le cas de limpulsion unit.
Le programme P1 peut tre utilis pour gnrer et tracer un signal impulsion unit :
***********************************************************************
%Programme P1
% Gnration d'une impulsion unit
% Gnration d'un vecteur de -10 20
n=-10:20;
% Gnration de l'impulsion unit
u = [zeros(1,10) 1 zeros(1,20)];
% Tracer le signal gnr
stem(n,u);
xlabel('Temps index en n'); ylabel('Amplitude');
title('Impulsion Unit');
axis([-10 20 0 1.2]);
******************************************************************
Application :
1- Modifier le programme prcdent pour gnrer une impulsion unit dcale de 11 chantillons.
Excuter le programme et tracer le signal gnr.
2- Modifier le programme prcdent pour gnrer un chelon unit dcal de 20 chantillons.

2. Gnration des signaux priodiques
Une autre classe de signaux trs utile en traitement du signal et en automatique sont les signaux sinusodaux de
la forme :
| | ( ) | e + = n A n x 0 cos .
Ecole Nationale des Sciences de lInformatique
Module : Mathmatiques pour lingnieur
Classes : II1
AU : 2013/2014

-11-

Avec MATLAB, ce type de signaux peut tre gnr en utilisant les oprateurs trigonomtriques cos et sin.
Le programme P2 est un exemple qui gnre un signal sinusodal.
**************************************************
% Programme P2
% Gnration d'un signal sinusodal
n = 0:100;
f = 0.1;
phase = 0;
A = 1.5;
arg = 2*pi*f*n - phase;
x = A*cos(arg);
clf; %efface lancienne figure
stem(n,x);
axis([0 100 2 2]);
grid;
title(Signal Sinusoidal);
xlabel(Temps index en n);
ylabel(Amplitude) ;
axis ;
******************************************************
Application :
1- Modifier le programme prcdent pour gnrer et tracer un signal sinusodal de longueur 50, frquence
0.08, amplitude 2.5 et phase dcale de 90 degrs.
2- Gnrer et tracer les squences dfinies ci dessus :
( ) ( ) n n x
17
sin 1
t
= 35 0 s sn
( ) ( ) n n x
17
sin 2
t
= 25 15 s s n
( ) ( )
2
3 sin 3
t
t + = n n x 15 15 s s n
( )
|
.
|

\
|
= n n x
23
sin 4
t
50 0 s sn
En plus des fonctions sin et cos, le toolbox de MATLAB offre d'autres fonctions qui produisent des signaux
priodiques comme sawtooth et square.
La fonction sawtooth gnre une onde triangulaire avec des maximums en +-1 et une priode de 2*pi.
La fonction square gnre une onde carre avec une priode de 2*pi. Un paramtre optionnel spcifie le cycle,
la priode en pourcent pour laquelle le signal est positif.
Le programme P3 gnre 1.5 secondes d'onde triangulaire (respectivement carr), de frquence 50Hz et avec
une frquence d'chantillonnage de 10KHz.


Ecole Nationale des Sciences de lInformatique
Module : Mathmatiques pour lingnieur
Classes : II1
AU : 2013/2014

-12-

***************************************************************************
%Programme P3
fs = 10000;
t = 0:1/fs :1.5;
x1 = sawtooth(2*pi*50*t);
x2 = square(2*pi*50*t);
subplot(211), plot(t,x1), xlabel('Time (sec)'); ylabel('Amplitude'); title('Sawtooth Periodic Wave')
subplot(212), plot(t,x2), xlabel('Time (sec)'); ylabel('Amplitude'); title('Square Periodic Wave')
************************************************************************
3. Gnration des signaux exponentiels
Un autre type de signaux de base sont les signaux exponentiels. Ce type de signaux peut tre gnr par les
oprateurs de MATLAB .^ et exp .
Le programme P4 est employ pour gnrer un signal exponentiel x[n] = A exp(jn) valeurs complexes.
****************************************************************
% Programme P4
% Gnration d'un signal exponentiel complexe
c = -(1/12)+(pi/6)*i;
k = 2;
n = 0:100;
x = k*exp(c*n);
subplot(2,1,1);
stem(n,real(x));
xlabel (Temps index en n); ylabel(Amplitude);
title(Partie relle) ;
subplot(2,1,2);
stem(n,imag(x));
xlabel (Temps index en n) ; ylabel(Amplitude) ;
title (Partie imaginaire) ;
*******************************************************************
Le programme P5 gnre lui une squence exponentielle valeurs relles partir de lexpression suivante :
n
***********************************************************************
% Programme P5
% Gnration d'une squence exponentielle valeurs relles
n = 0 : 35; a = 1.2; k = 0.2;
x = k*a.^n;
stem(n,x)
xlabel (Temps index en n); ylabel(Amplitude);
*************************************************************************
4. Gnration des signaux alatoires
Un signal alatoire de longueur N avec une distribution uniforme dans lintervalle [0 1] peut tre gnr par la
commande de MATLAB suivante :
x = rand(1,N) ;
Ecole Nationale des Sciences de lInformatique
Module : Mathmatiques pour lingnieur
Classes : II1
AU : 2013/2014

-13-

De mme, u signal alatoire x[n] de longueur N avec une distribution normalise moyenne nulle et variance
unit peu tre gnr en utilisant la commande suivante de MATLAB : x = randn (1,N) ;
Application :
Gnrer et tracer un signal alatoire de longueur 100 tels que ces lments sont uniformment distribus dans
lintervalle [-2,2].
5. Gnration des signaux complexes
Des signaux complexes peuvent tre gnrs en utilisant les oprations faites pour les signaux lmentaires.
Par exemple un signal de modulation damplitude peut tre gnr par la modulation dun signal sinusodal de
haute frquence xH[n] = cos(Hn) avec un signal sinusodal de basse frquence xB[n] = cos(Bn). Le signal
rsultant y[n] a la forme suivante :
y[n] = A(1+m xB[n]) xH[n] = A(1 + m cos(Bn)) cos(Hn)
avec m, appel facteur de modulation, est choisi pour sassurer que lexpression (1+m xB[n]) est positive pour
toutes les valeurs de n.
Le programme P6 est utilis pour gnrer un signal modul en amplitude.
**************************************************************
% Programme P6
% Gnration dun signal modul en amplitude
clf ;
n = 0 :100 ;
m = 0.4 ; fH = 0.1 ; fL = 0.01 ;
xH = sin(2*pi*fH*n);
xL = sin(2*pi*fL*n);
y = (1+m*xL).*xH;
stem(n,y); grid;
xlabel(Temps index en n); ylabel(Amplitude);
**************************************************************
Application :
Gnrer et tracer un signal de modulation damplitude de frquence fH=0.08 et fL=0.04 et de facteur de
modulation m=0.5. Interprter.