Vous êtes sur la page 1sur 27

Exemples Simples pour Commencer

Utiliser MATLAB en Traitement du Signal

Jol Le Roux et Jean-Paul Stromboni


Dpartement Sciences Informatiques
Polytech Nice

Ce document ne cherche pas tre complet, mais seulement permettre de commencer


crire des programmes simples en matlab ; on trouvera sur le web de nombreux cours de
matlab et laide de matlab contient toutes les informations utiles pour amliorer son savoir-
faire et approfondir ses connaissances.

Pour commencer (On suppose que Matlab est install ...)


On lance matlab ; dans la fentre qui apparait on voit >> qui indique que matlab attend une
commande.

Remarque : On peut bien sr commencer par les exemples de laide de matlab

1
1. Premires oprations : Les commande au clavier

2. Cration de programme dans un fichier


2.1. Retrouver et excuter des programmes matlab crits dans des fichiers .m et
rangs dans un dossier

3. Ralisation et modification dun programme

4. Oprations en matlab

5. Gestion des graphiques

6. Conception de programmes un peu complexes

7. Les tests logiques de base

8. Utilisation dun rsultat de test pour modifier lexcution dun programme

9. Un autre type dopration courante est la rptition dune squence dinstructions


(boucle)

10. Gestion des squences (vecteurs, matrices)

11. Les fonctions


11.1. Quelques fonctions utiles
11.2. Appel de fonctions et gestion des fichiers dans les dossiers

12. Entres Sorties de sons et dimages :

2
1 Premires oprations : Les commande au clavier (pour faire des calculs simples, des
affichages de graphes, ...) dans la fentre de commande ( command window )

>> Indique que Matlab attend une commande

Entre au
clavier

Le rsultat
saffiche

Entre au
clavier

Le rsultat est
calcul et affich
saffiche
Commande pour tracer la squence b
Le graphique va apparatre dans une autre fentre
grid on indique que les units apparaissent
dans le trac sous la forme dune grille
e

Dans cet exemple a est un vecteur ligne ; en frappant b=a+2 on cre un second vecteur
ligne b en ajoutant 2 chacun des lments de a

On demande un trac en frappant la commande plot ; le rsultat saffiche dans une


nouvelle fentre : en abscisse on obtient le numro dindice et en ordonne la valeur de la
composante correspondante de b .

3
Affichage dans la
nouvelle fentre des
valeurs des lments de
la squence b

Si on frappe un point-virgule la fin de la ligne de commande

>>b=a+2;

et non
>>b=a+2

Alors la commande est excute mais le rsultat nest pas affich

Si on veut entrer une squence longue dintervalles rguliers sans entrer toutes les valeurs on
utilise les deux points :

Il est possible dappliquer des fonctions sur la squence a :

4
affiche le sinus de la squence :

En abscisse il y a un simple numro : la position de llment a dans le calcul (on notera que
matlab commence les numros dindice 1 et non zro)

Pour se dplacer dans la liste des instructions, on peut utiliser es flches du clavier

Si on frappe Entre , cest la ligne slectionne qui est excute.

2 Cration de programme dans un fichier

On se rend compte que la frappe directe dinstructions permet difficilement de gnrer sans
erreur des squences doprations trs complexes ; pour y arriver il faut enregistrer les
programmes dans un fichier dont on lancera lexcution quand il sera prt

On clicke sur File et (en gardant lindex appuy, click gauche) dans le menu droulant
New M-File . Ceci fait apparatre une nouvelle fentre (Editor) dans laquelle on
ditera le texte du programme

5
Rangement des
fichiers dans
les dossiers

Attention : Il est important de shabituer la gestion des fichiers : il faut savoir dans quel
dossier on range les fichiers pour pouvoir les retrouver, les modifier ventuellement et les
excuter par la suite . Une fois quon a crit un programme il faut le sauvegarder : on choisit
par exemple save as et le nom du fichier qui doit ncessairement avoir lextension .m :
matlab reconnaitra par la suite cette extension lorsquon lui demandera lexcution dans la
fentre de commande ; par exemple pour excut le programme enregistr dans le fichier
premierpas.m il faudra frapper dans la fentre Command Window

>> premierpas

Ici le fichier premiersepas.m est rang dans le dossier work de matlab

6
Voici le contenu du fichier premierspas.m

En frappant la commande premierspas on excute le programme contenu dans le fichier


premierpas.m
La deuxime commande plot(t,x) trace la squence x en fonction de la squence t : les
instructions donnes dans la fentre des commandes (command window) reconnaissent les
noms des variables donns dans le fichier du programme : tout se passe comme si la squence
dinstructions du programme tait entre dans la fentre de commandes

7
8
2.1 Retrouver et excuter des programmes matlab crits dans des fichiers .m et
rangs dans un dossier

Lorsquon range les fichiers o sont crits les programmes matlab dans un dossier cr dans
ce but, par exemple C:\programmatlab , il faut donner matlab les informations pour
quil puisse trouver le dossier en question ; ceci se fait en dfinissant le chemin daccs
(commande File/Set Path)

Commande
permettant de
dfinir le
chemin
daccs au
nouveau

9
Slection du
dossier

Une fois quon a click save matlab ira chercher si ncessaire les fichiers contenus dans le
dossier programmatlab

10
3 Ralisation et modification dun programme

Pour modifier le programme On lance lditeur de matlab

>>edit

une nouvelle fentre souvre on y crit le texte du programme (voir par exemple
exemplematlab.m)

( Dans un programme enregistr dans un fichier, on terminera une instruction par un point-
virgule afin dviter dafficher le rsultat de linstruction dans la fentre de commande.)

et on lenregistre (save) sous la forme dun fichier fichier.m ; lextension .m indique que
cest un programme excutable par matlab (ne pas oublier de lenregistrer nouveau
lorsquon modifie le fichier)
dans la ligne de commande de matlab, on choisit le current directory o on enregistre le
fichier (on peut choisir un autre dossier que le current directory)

pour lexcuter dans la fentre matlab

>>exemplematlab

la fin de lexcution de matlab on retrouve dans cette fentre le >>


Un commentaire commence par un sign e % (en dbut de ligne o aprs une instruction)
Voici un programme essai1.m

Qui en engendre (fonction rand) une squence pseudo alatoire a dont la longueur est celle
de la squence t (soit ici 1024) et qui la trace

Son excution dans la fentre de commande

11
produit laffichage

Il est utile de bien jongler avec les fentres daffichage des graphiques ; voici quelques
oprations courantes (des possibilits supplmentaires seront dcrites dans un paragraphe
ultrieur ; une fois les bases acquises, il faudra se rfrer la documentation matlab pour
utiliser les nombreuses possibilits offertes) ;

Si on veut superposer un deuxime graphique un graphique quon vient de tracer, on utilise


la commande holdon

Voici deux programmes traant un sinus et un cosinus

12
Si on excute le premier programme, puis la commande hold et le deuxime programme

On superpose ainsi les deux tracs

(exercez vous en appliquant les commandes du type hold, hold on et hold off)

13
Conseil : Si vous envisagez dcrire des programmes compliqus, commencez par un cas
simple que vous enrichirez petit petit en prenant soin de vrifier avant une nouvelle
modification que votre programme fonctionne correctement.

4 Oprations en matlab

Il arrive souvent quon applique la mme opration tous les lments dun tableau. On peut
le faire en effectuant une boucle for ... end sur lopration

(On voit ici un exemple de boucle et de manipulation dindice) ;

On peut aussi crire de manire non seulement condense (et parfois plus difficile lire) mais
aussi optimise pour acclrer les calculs le code point avant le code du produit
(.* la place de *)
et ainsi on effectuera le mme produit sur tous les couples dlments ayant la mme position
(le mme indice) dans les deux squences

qui donnera le mme rsultat

14
5 Gestion des graphiques

Nous avons vu un exemple de trac simple ; en voici un autre o on donne labscisse et


lordonne pour deux graphes

>>x=[0:0.01:2*pi];
>>plot(x,cos(x),x,sin(x))

clearall
closeall%fermelesanciennesfigures
figure(1);%pourcrerunenouvellefentredefigure
x=[0:0.01:2*pi];
plot(x,cos(x),'.',x,sin(x),'+')%cos(x)enpoints,sin(x)en+

15
Pour rajouter un titre et une lgende

title('sinusetcosinus');xlabel('x');ylabel('f(x)')
legend('cos(x)','sin(x)',0)%le0placelalgendectdescourbes

Il est courant de vouloir afficher plusieurs figures sur le mme cran ce qui se fait avec la
fonction subplot

16
Exemples de commandes expliques dans le manuel matlab

stem grid
xlabel ylabel
title bar
figure step
disp input

17
6 Conception de programmes un peu complexes

Un programme est une squence dinstruction qui modifie des donnes, il est la plupart du
temps ncessaire de modifier la squence effectuer en fonction dun rsultat de calcul ; on
effectue alors un test sur le rsultat

7 Les tests logiques de base

Oprateur Description
Inversion (NOT a) : ~a retourne 1 si a est gal 0, 0 si a est gal 1
Identit (double =) : a = = b retourne 1 si a gale b, 0 autrement
a<b retourne 1 si a est plus petit que b, 0 autrement
a>b retourne 1 si a est plus grand que b, 0 autrement
a <= b retourne 1 si a est plus petit ou gal b, 0 autrement
a >= b retourne 1 si a est plus grand ou gal b, 0 autrement
a ~=b retourne 1 si a est diffrent de b, 0 autrement

8 Utilisation dun rsultat de test pour modifier lexcution dun programme

On utilise couramment les tests logiques ci-dessus pour modifier la squence dinstructions
excuter : aprs le if on a la squence dinstructions excuter si le rsultat du test est
vrai ; et aprs le else la squence dinstructions excuter si le rsultat du test est
faux ; (attention viter le ; avant le end
(la notion de fonction qui apparat ici sera explique ultrieurement)

On peut combiner des tests en squence

18
>>test_de_y(1)

ans=

negatif

>>test_de_y(1)

ans=

positif

>>test_de_y(0)

ans=
On peut effectuer des tests plus labors de ce type en utilisant linstruction switch que
nous ne dvelopperons pas dans cette introduction

9 Un autre type dopration courante est la rptition dune squence dinstructions


(boucle)

Par exemple on rpte le mme calcul pour des valeurs successives dun indice

19
Le a entre crochets indique la variable (ou les variables spares par une virgule quon veut
voir renvoye par la fonction)
Lorsquon appelle cette fonction pour une valeur de la variable on obtient

>>somme(2)

ans=

2248

Sur le mme principe, on peut rpter une squence tant quune condition est vrifie avec
linstruction de boucle while

20
10 Gestion des squences (vecteurs, matrices) :

Matlab, comme son nom lindique a dabord t conu pour optimiser et faciliter le calcul sur
les matrices, dont les vecteurs sont un cas particulier ; pour donner les valeurs des
composantes dun vecteur ligne on crit entre crochets (on peut sparer les lments par des
virgules ou par des blancs)
>>vligne=[2,4,7];
>>vligne

vligne=

247

On utilise les deux points pour donner des intervalles sous la forme suivante :
[premier lment : pas dincrmentation : dernier lment]

>>w=[0:0.5:4]; Par
>>w

w=

Columns1through7

00.50001.00001.50002.00002.5000
3.0000

Columns8through9
exemple si le premier lment est 2, on obtient

21
>>v=[2:0.5:4];
>>v

v=

2.00002.50003.0000
3.50004.0000

>>

Si le pas dincrmentation est positif et que le premier lment est plus grand que le dernier,
matlab cre un vecteur vide.
>>v=[5:0.5:4];
>>v

v=

Emptymatrix:1by0

On cre des vecteurs colonnes ou des matrices en sparant les lignes par des points virgules
;

>>
matrice=[1,2,3;4,5,6;7
,8,9]

matrice=

123
456

Les oprations applicables aux matrices scrivent simplement : par exemple on pourra faire
le produit de deux matrices

>>matrice1=[1,2;3,4];
>>matrice2=[5,6;7,8];
>>matrice1*matrice2

ans=

1922
4350

On peut encore utiliser la notation condense .* qui effectue ici encore un produit terme
terme :

>>matrice1.*matrice2

ans=
22
512
2132
On accde un lment du vecteur ou de la matrice en frappant
>>matrice1(2,1)

ans=

On peut aussi slectionner un sous-ensemble par exemple une ligne ou une colonne de la
matrice en replaant un des indices par :

>>matrice1(2,:) >>matrice1(:,2)

ans= ans=

34 2
4

23
11 Les fonctions

Pour viter de rdiger des programmes trop longs et rptitifs, on peut crire des squences de
lignes de programmation sous la forme de fonctions

Donne calculer = nom de la fonction ( suite des variables auxquelles sapplique le calcul)
Pour effectuer le calcul on frappe le nom de la fonction avec comme arguments les valeurs
des variables pour lesquelles on veut faire le calcul
Dans lexemple

Dfinition de Appel de la
la fonction fonction

Remarque : il faut grer correctement les dossiers o sont rangs les fichiers contenant le texte
des fonctions

Une fonction peut renvoyer plusieurs donnes : dans ce cas la liste des noms de variables o
ces donnes seront ranges est donne entre crochets

function[sorti1,sorti2,...]=nom_de_fonction(entr1,entr2,...)

11.1 Quelques fonctions utiles

Matlab intgre un grand nombre de fonctions dont la description est donne dans laide ; voici
quelques fonctions utiles Sur les matrices

>>V=[0:0.1:10];%utilisationdelength
vecteur1x101
>>n=length(V)

n= 24

101
>>M=[123;456];%utilisationdesize
matrice2x3
>>[n,m]=size(M)

n=

m=

Noter que lappel dune fonction permet de renvoyer plusieurs rsultats (arguments) dont la
liste est donne entre crochets
: [n,m]
Ici la fonction size donne le nombre de lignes et de colonnes de la matrice

La fonction exponentielle scrit exp(x) ; toutefois lcriture dun exposant utilise


laccent circonflexe qui permet deffectuer le calcul de puissance
>>2^3
2 puissance 3 scrit :
ans=

il existe aussi des fonctions crites par dautres programmeurs quon peut rutiliser en
sassurant tout de mme que la fonction ralise bien ce quelle est cense faire ... Une des
richesses de matlab provient de ce quil est un outil utililis par de trs nombreux ingnieurs
et est ainsi un outil permettant des changes de programmes adapts diffrents types
dapplication des mathmatiques dans le monde industriel ou de la recherche.

11.2 Appel de fonctions et gestion des fichiers dans les dossiers

(Revoir lexemple de setpath matlab o on utilise des fichiers rangs ailleurs que dans le
rpertoire matlab)

Il existe aussi des fonctions crites par dautres programmeurs quon peut rutiliser en
sassurant tout de mme que la fonction ralise bien ce quelle est cense faire ...

Et un exemple de include

25
LoadS=load('arg1','arg2','arg3',...)
Save save('filename','var1','var2',...)

26
12. Entres Sorties de sons et dimages :

On trouvera des explications dtailles dans laide de mathlab

lire des fichiers de sons

exemple de lecture dun signal enregistr (une sinusode amortie) suivie de son trac :

>>signal=wavread('sinusamorti.wav');
>>plot(signal);

gnrer des fichiers de sons;

wavwrite(y,Fs,N,'filename')

signification des parameters (consulter laide matlab)


y : tableau enregistrer,
Fs :frquence dchantillonnage,
N : nombre de bits,
nom du fichier

enregistrer des sons


wavrecord(n,Fs)

paramtres : n : nombre dchantillons, Fs : frquence dchantillonnage

couter des sons


wavplay(y,Fs)

paramtres : y : squence couter, Fs frquence dchantillonnage

lire des fichiers dimages : voir la fonction imread dans laide matlab
gnrer des fichiers dimages : voir la fonction imwrite dans laide matlab

27

Vous aimerez peut-être aussi