INITIATION À MATLAB

Programming, Math · course

Voir tous les documents en programmation

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-