Ecole Nationale des Sciences de lInformatique
AU : 2015/2016
INITIATION MATLAB
1. Introduction
Matlab (abr viation de " MATrix LABoratory ") est un puissant logiciel de calcul num rique. Cest 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. La programmation au m me
titre que C, Pascal ou Basic. Par contre, sa singularit est quil sagit dun langage interpr t , c'est- -dire que les
instructions sont ex cut es imm diatement apr s avoir t tap es.
Le but de ce TP est de vous familiariser avec lutilisation de MATLAB.
1.1. Lancement
Au lancement de Matlab, la fen tre "command" appara t. C'est dans cette fen tre que l'on peut taper les
instructions Matlab ( la suite des chevrons >>).
Fen tre Command
1.2 . Langage interpr t
Puisque Matlab est un langage interpr t . Il n'est pas n cessaire de compiler un programme avant de l'ex cuter.
Toute commande tap e dans la fen tre de commande est imm diatement ex cut e.
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
-1-
Ecole Nationale des Sciences de lInformatique
AU : 2015/2016
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 r sultat doit tre stock (ce nom doit
commencer par une lettre et occuper moins de 19 caract res).
Remarque : Matlab distingue les minuscules des majuscules.
Le nom de la variable ainsi que le r sultat sont alors affich s. On peut taper plusieurs commandes par ligne si
elles sont s par es par un point virgule.
1.3.
Les variables complexes
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.
Les fonctions usuelles de manipulation des nombres complexes sont pr d finies 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
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.
Les l ments d'une matrice peuvent tre n'importe quelle expression de Matlab :
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.
-2-
Ecole Nationale des Sciences de lInformatique
AU : 2015/2016
Publicité
On peut remarquer que la taille du vecteur x a t ajust e en remplissant les l ments non pr cis s par 0. On
peut aussi cr er des matrices avec les fonctions zeros, ones et eye, ces fonctions cr ent des matrices de la taille
pr cis e, respectivement remplies de z ros, de un, et de un sur la diagonale et de z ros ailleurs.
On peut avoir des informations sur la taille d'une matrice :
On peut ajouter des lignes et des colonnes des matrices d j existantes (attention, les dimensions doivent
toutefois tre compatibles ...).
1.5.
L'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+npas tel que deb+npas < fin < deb+(n+1)*pas. : est tr s utile pour construire des signaux.
Le pas d'incr mentation peut tre omis, un pas de 1 est alors pris par d faut :
-3-
Ecole Nationale des Sciences de lInformatique
AU : 2015/2016
On peut aussi utiliser le " : " pour s lectionner des l ments d'un vecteur ou d'une matrice :
1.6.
Op rations matricielles
Les op rations usuelles sont d finies de fa on naturelle pour les matrices :
Autres fonctions utiles pour les op rations matricielles
renverra un vecteur ligne dont chaque l ment sera le maximum de la colonne correspondante. De la m me
fa on est d finie la fonction min().
2. Affichages graphiques et alphanum riques
2.1.
Affichage alphanum rique
On peut afficher des cha nes de caract res dans la fen tre de commande :
Les fonctions sprintf et fprintf existent galement
-4-
Ecole Nationale des Sciences de lInformatique
AU : 2015/2016
On peut aussi demander des valeurs l'utilisateur :
Matlab affichera la cha ne de caract re entr e en param tre et attendra une r ponse 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 d crits 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 ais ment avoir une repr sentation d'une fonction 2D. Cependant il faut
construire la grille des coordonn es 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 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.
On peut aussi ouvrir une deuxi me fen tre graphique l'aide de la commande figure. Le passage d'une fen tre
Publicité
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).
-5-
Ecole Nationale des Sciences de lInformatique
AU : 2015/2016
3. Environnement de travail, scripts et fonctions
3.1.
R pertoire de travail
Il est indispensable de travailler dans votre propre r pertoire et non dans le r pertoire de Matlab. De m me
dans votre r pertoire vous pouvez organiser vos fichiers dans des sous r pertoires. Pour que vos fonctions et
scripts soient accessibles partir de la ligne de commande Matlab il faut le r pertoire 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 r pertoire de
travail. Cela peut tre r alis 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 sauv es 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
conna tre toutes les variables disponibles dans l'espace de travail. Cela est possible gr ce 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 m moire qu'elles occupent.
3.3.
Scripts
Il est parfois (souvent) souhaitable, pour ne pas avoir taper plusieurs fois une m me s quence d'instructions,
de la stocker dans un fichier. Ainsi on pourra r utiliser cette s quence dans une autre session de travail. Un tel
fichier est d nomm script. Sous windows, il suffit d'ouvrir un fichier avec le menu file, new, de taper la
s quence 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'ex cute. Les variables d finies dans l'espace de travail sont
accessibles pour le script. De m me les variables d finies (ou modifi es) dans le script sont accessibles dans
l'espace de travail. On peut (doit) mettre des commentaires l'aide du caract re pour-cent " % ". Toute
commande situ e apr s " % " 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 cr er de telles
fonctions dans un fichier s par et les appeler de la m me fa on que les fonctions pr existantes. La premi re
ligne (hormis les lignes de commentaires) d'une fonction doit imp rativement avoir la syntaxe suivante :
Exemple de fonction :
Cette fonction pourra tre appel e par :
-6-
Ecole Nationale des Sciences de lInformatique
AU : 2015/2016
Exemple de fonction plusieurs variables de sortie :
Cette fonction pourra tre appel e par :
Le nom de la fonction doit imp rativement tre le m me que le nom du fichier dans lequel elle est stock e
(sinon Matlab ne prendra pas en compte ce nom mais uniquement celui du fichier). Les nombres d'arguments
en entr e et en sortie ne sont pas fixes et peuvent tre r cup r s par nargin et nargout. Cela nous permet donc
Publicité
de faire des fonctions Matlab pouvant d pendre d'un nombre variable de param tres. Les variables de l'espace
de travail ne sont pas accessibles la fonction sauf si elles sont entr es comme variables d'entr e. De m me les
variables d finies dans une fonction ne sont pas accessibles dans l'espace de travail.
4. Boucles et contr les
Comme de nombreux autres langages de programmation, Matlab poss de trois types d'instructions de
contr les et de boucles : for, if et while.
4.1.
Contr le : " if "
La condition est exprim e au travers d'une expression logique. Les expressions logiques sont des expressions
quelconques pour lesquelles on consid re uniquement le fait qu'elles soient nulles (expression fausse) ou non
(expression vraie). On peut aussi construire ces expressions l'aide des op rateurs logiques et (&), ou (|), gal
(==), sup rieur (>,>=), inf rieur(<,<=), non(~), ou exclusif (xor) ou l'aide de fonctions logiques pr d finies
exist, any, find , isinf, isnan...
4.2.
Boucle : while
La suite dinstructions est r p t e un nombre ind fini de fois jusqu ce que lexpression logique soit fausse.
4.3.
Boucle : "for"
La boucle for a pour syntaxe :
-7-
Ecole Nationale des Sciences de lInformatique
AU : 2015/2016
Cette structure de contr le est tr s utile, mais il est recommand d' viter au maximum les boucles dans Matlab,
car elles sont tr s lentes par rapport un traitement matriciel. Par exemple, la boucle suivante :
est quivalente
Mais s'ex cutera 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 Suvre 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 m me r sultat (mais en moins de temps) que :
5. Help / Aide en ligne
Matlab est pourvu d'une fonction d'aide tr s utile : help. Ainsi si vous tapez help sur la ligne de commande
apparaissent tous les r pertoires accessibles depuis Matlab ainsi qu'une explication concernant ces r pertoires.
Si vous tapez help suivi du nom d'un r pertoire, Matlab affiche une explication br ve sur toutes les fonctions et
scripts de ce r pertoire. Enfin si vous tapez help suivi du nom d'un fichier (script ou fonction), appara t une
explication d taill e sur l'utilisation de la fonction ou du script. De plus vous pouvez cr er une aide sur les
fonctions et scripts que vous cr ez et sur vos r pertoires. Pour une fonction, Matlab prendra comme help toutes
les lignes de commentaires suivant l'instruction function (en premi re ligne). Pour un script, Matlab prendra
toutes les lignes de commentaires plac s en d but de fichier. Ces aides que vous cr ez pour vos fonctions et
scripts sont int ressantes 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 :
-8-
Ecole Nationale des Sciences de lInformatique
AU : 2015/2016
UTILISATION DE LA TFD
Publicité
POUR LANALYSE SPECTRALE DE SIGNAUX
Sous MATLAB, la fonction FFT met en Suvre lalgorithme rapide de calcul de la TFD. Elle a pour syntaxe
. La s quence obtenue est la TFD de la s quence de longueur N calcul sur L
points de fr quence.
Bien que la fonction FFT permette de calculer les valeurs de la TFD pour L quelconque, il est conseill pour des
raisons de rapidit de prendre L comme puissance de 2.
1. Zero padding
Nous proposons de calculer la TFD dune s quence dordre 4 puis dordre 8 et voire leffet du zero padding sur
le signal et son spectre.
Calculer la FFT dordre 4 (N=4) de la s quence
Calculer la FFT dordre 8 de la m me s quence.
Que remarquez-vous ?
Essayons maintenant de voir lallure du spectre de cette m me s quence en augmentant plus sa taille
100.
2. Les fen tres
On appelle fen tre la suite des coefficients utilis s pour pond rer le signal avant den calculer le spectre.
Soit le signal
, fen tre rectangulaire de longueur .
Calculer sa transform e de Fourier .
Repr senter le module et largument de .
D terminer les valeurs de pour lesquelles sannule.
Calculer, en utilisant la FFT, les spectres des fen tres de Bartlett, de Hanning et de Hamming.
Repr senter les modules des spectres des diff rentes fen tres sur la m me figure et les comparer.
3. Cons quence de la limitation temporelle dun signal
3.1.
Ph nom ne de Leakage
On consid re le signal discret
Limiter la dur e du signal chantillons, dans lintervalle , est quivalent le multiplier par une
fen tre rectangulaire de longueur , soit :
Si on limite la dur e d chantillonnage chantillons et lui applique la transformation de Fourier
discr te TFD dordre 512interpr ter le spectre correspondant.
-9-
Ecole Nationale des Sciences de lInformatique
AU : 2015/2016
Calculons maintenant le spectre du signal par la fen tre de Hamming et essayons de voir la diff rence entre les
deux !!
3.2.
R solution spectrale
La pr cision ne doit pas tre confondue avec la r solution qui est le pouvoir de distinguer deux fr quences
voisines dans un signal, cest donc le probl me de s paration de deux pics aux fr quences voisines.
Essayons de voir ceci de plus pr s !
Soit le signal discret :
Le spectre du signal tronqu o est une fen tre rectangulaire de longueur est :
O d signe le spectre de la fen tre rectangulaire calcul pr c demment.
Calculons et repr sentons le module du spectre pour et essayons de voir leffet de la taille
de la fen tre rectangulaire.
Fixons maintenant et calculons le spectre de en le multipliant par la fen tre de hamming. Observons le
r sultat et voyons leffet sur la r solution.
-10-