Vous êtes sur la page 1sur 5

TP - Initiation MATLAB

TP - Initiation MATLAB

Le but de ce TP est de sinitier au programme de calcul numerique MATLAB. Les fonctionnalites


resolument matricielles de ce logiciel en font un puissant outil tr`es utilise de nos jours, dans differents
contextes (traitement dimages, optimisation, controle, . . ., par le biais de toolboxes) et notamment celui
du traitement numerique du signal. Il permet en effet la resolution rapide de probl`emes numeriques,
probl`emes qui necessiteraient un temps de developpement plus important en C ou en Java.
Apr`es une prise en main de lenvironnement de MATLAB, le principe du TP est simple. Des series
de questions vont etre posees afin de mettre en uvre les differentes fonctionnalites qui vous seront
necessaires pour les TP suivants. Chaque question fait en general reference `a des fonctions MATLAB `
a
utiliser. Il est alors necessaire dutiliser laide de MATLAB pour analyser les param`etres, les resultats
et le comportement de ces fonctions afin de repondre de mani`ere pertinente `a la question posee.

Prise en main de lenvironnement

Lenvironnement de travail de MATLAB est souple dutilisation (langage interprete) et tr`es evolutif
car il permet soit de travailler interactivement en passant des commandes au clavier (comme pour une
calculatrice), soit de realiser des programmes (scripts) ou des fonctions en placant ces commandes dans
des fichiers texte, le nom de ces fichiers constituant alors de nouvelles commandes MATLAB.

1.1

Proc
edure de d
emarrage de lenvironnement

I Comment lancer lenvironnement de travail de MATLAB ?

1.2

Manipulation de la ligne de commande

I Realiser quelques operations simples directement en mode interactif (ligne de commandes).


1+1 ou sqrt(4) ou sqrt(4); ou 6.0e-2*cos(pi/4)
I Sous MATLAB, comment utiliser laide integree, pour les differentes fonctions utilisees ?
help <nom de la fonction>

1.3

Notion de script

Un script MATLAB est une succession de commandes stockee dans un fichier ayant pour extension
.m (par exemple, prog.m). Pour executer le script, il suffit de taper son nom (prog par exemple) en
ligne de commande. Si le script prog.m se trouve dans le repertoire de travail courant, alors MATLAB
sera capable de lire le fichier et dexecuter toutes les commandes quil contient, les unes `a la suite des
autres.
Toute ligne commencant par le caract`ere % sera consideree comme une ligne de commentaire (`
a
utiliser sans moderation dans votre code).

Manipulation de variables / vecteurs / matrices

MATLAB est labreviation de Matrix Laboratory et comme son nom lindique, toutes les entites
(ou variables) manipulees sont des matrices.
1

TP - Initiation MATLAB

2.1

Cr
eation de variables

Pour declarer de telles variables, il suffit de specifier un nom pour la variable (par exemple toto)
et de lui attribuer une valeur (par exemple lentier 4 ou la chane de caract`eres chat).
Type de variables
Representation MATLAB Exemple de declaration
scalaire
matrice 1 1
toto = 4
vecteur ligne `
a n elements
matrice 1 n
toto = [ 1 2 ]
vecteur colonne `
a m elements
matrice m 1
toto = [ 1 ; 2 ]
matrice `
a m lignes et n colonnes matrice m n
toto = [ 1 2 3 ; 4 5 6 ]
I Comment voir les variables courantes ainsi que leurs proprietes ?
Routines `
a utiliser :
whos, size, length
2.1.1

Variables pr
ed
efinies

Certaines variables existent dej`


a sous MATLAB et il est fortement deconseille de les utiliser comme
des variables quelconques.
pi, eps, i, j
2.1.2

Variables complexes

I Comment declarer une variable complexe ?


I Comment obtenir le conjugue dune variable complexe ?
Routines `
a utiliser :
real, imag , abs, angle, conj,
2.1.3

Autres techniques de cr
eation de variables

De nombreuses routines MATLAB permettent de creer des variables avec des valeurs particuli`eres.
Matrices simples
I Comment generer une matrice remplie de zeros ? remplie de uns ?
I Comment generer une matrice identite ?
Routines `
a utiliser :
zeros, ones , eye
Vecteurs `
a pas constant
I Comment generer un vecteur ligne contenant les valeurs de a `a b par pas de p ?
I Comment generer un vecteur ligne contenant k valeurs egalement espacees entre les bornes a et
b incluses ?
Routines `
a utiliser :
: , linspace
Matrices al
eatoires
I Comment generer un vecteur ligne de n valeurs qui suivent une loi normale ?
I Comment generer un vecteur colonne de m valeurs qui suivent une loi uniforme ?
Routines `
a utiliser :
randn , rand
Cr
eation de matrices par assemblage
I Comment assembler deux (ou plus) scalaires / vecteurs / matrices pour produire un nouveau
vecteur ou matrice ?

TP - Initiation MATLAB

2.2

Manipulation de matrices

2.2.1

Acc`
es `
a une plage de valeurs (sous-matrices)

Il est important de remarquer que contrairement `a certains langages de programmation tels que C,
le premier element dun vecteur a pour indice 1 et non 0.
I Comment acceder `
a la valeur dindice k dune matrice ligne ? dune matrice colonne ? dune
matrice `
a deux dimensions ?
I Comment extraire les valeurs comprises entre les indices k1 et k2 dun vecteur colonne, sous la
forme dun vecteur colonne ?
I Extrapoler pour une matrice bi-dimensionnelle ?
I Comment extraire une ligne enti`ere dune matrice bi-dimensionnelle ?
2.2.2

Matrice transpos
ee

I Comment obtenir la transposee dune matrice A ?


I Comment obtenir la transposee de la matrice conjuguee de A ?
2.2.3

Op
erateurs arithm
etiques
el
ementaires

Operateur
+
*
.*
/
./

Semantique
Addition
Soustraction
Produit matriciel
Produit terme `
a terme
Division
Division terme `
a terme
Elevation `
a une puissance
Elevation `
a une puissance terme `a terme

I Essayer les differents operateurs arithmetiques presentes. Observer la difference entre les deux
operateurs de produit.
2.2.4

Autres fonctions math


ematiques

Il est possible dappliquer quantite dautres fonctions mathematiques `a des variables (scalaires,
vecteurs ou matrices terme `
a terme). Parmi les plus utilisees, on retrouve
sin , cos , tan , exp , sqrt , log , abs
I Generer un signal sinusodal damplitude a = 2, de frequence = 50Hz, de duree T = 100ms
sur n = 500 echantillons.
I Les fonctions min et max existent sous MATLAB. Poss`edent-elles le comportement que les fonctions precedentes ?
I De meme pour les fonctions sum, mean ou std.

Affichage graphique

Une des forces de MATLAB est de permettre la representation graphique sous forme de courbes
ou dimages, des differents objets manipules.

3.1

Ouverture dune fen


etre

I Comment ouvrir une fenetre prete `a recevoir un graphique ?


I Comment associer un titre `
a cette fenetre ?
Routines `
a utiliser :
figure , set
3

TP - Initiation MATLAB

3.2
3.2.1

Graphique 2D
Affichage dune courbe

I Afficher la courbe correspondant au signal sinusodal genere. Positionner clairement titre et


legendes des axes.
Routines `
a utiliser :
plot , title , xlabel, ylabel
3.2.2

Affichage de plusieurs courbes dans un m


eme graphe

I Afficher plusieurs courbes superposees, chaque courbe correspondant `a un signal sinusodal genere
avec une amplitude differente des autres. Chaque courbe poss`ede egalement des attributs (couleurs et
traces) differents.
I Superposer une sinusode dephasee dune demi-periode.
Routines `
a utiliser :
plot , hold
3.2.3

Affichage de plusieurs courbes

I Meme travail que la question precedente dans des graphes separes au sein dune fenetre unique.
Routines `
a utiliser :
plot , subplot

3.3

Image

I Toute matrice peut etre visualisee sous la forme dune image. Visualiser sous cette forme une
matrice que vous avez dej`
a manipulee.
I Charger une image (au format JPEG, par exemple) sous la forme dune matrice et visualiser-la.
I Changer la palette utilisee pour afficher limage.
Routines `
a utiliser :
imread , image , imagesc, colormap

Organisation du code

4.1

Structures de boucles et de contr


ole

Comme de nombreux langages de programmation, MATLAB poss`ede plusieurs instructions de


contr
oles et de boucles : if, for ou while. Meme sil est donc possible decrire des boucles, celles-ci
sont tr`es lentes par rapport `
a un traitement matriciel. Il faut donc privilegier celui-ci lorsque cest
possible.
I Donner deux methodes (lune matricielle, lautre pas) pour remplir un vecteur x de longueur N
tel que x(k) = k o`
u k [1, N ].

4.2

Notion de fonction

La notion de fonction permet de factoriser une portion de code pour une reutilisation plus aisee.
Cette factorisation se traduit par
la creation dun fichier dextension.m contenant ce code,
une formalisation des entrees (param`etres) et des sorties (resultats retournes) de ce code,
un environnement dexecution separe pour ce code (notion de variables locales)

TP - Initiation MATLAB

4.2.1

D
eclaration dune fonction

I Quelle est le formalisme MATLAB utilise pour declarer une fonction ?


I Creer une fonction appelee GenereSignal qui gen`ere un signal sinusodal. Etablir la liste des
param`etres necessaires et le resultat retourne.
I Programmer de facon vectorielle cette fonction.
I Commenter la fonction GenereSignal pour que laide de MATLAB laffiche.
4.2.2

Utilisation dune fonction

I Creer un script qui fait appel `


a la fonction GenereSignal pour produire les memes graphiques
qu`
a letape precedente.
4.2.3

Application directe

I Ecrire une fonction GenereSignal2 qui produit un signal de longueur n = 250 correspondant `
a
une sinusode pure de frequence = 0.1Hz, echantillonnee `a f = 1Hz.

Probl`
emes simples
1. Construire un vecteur A dechantillons gaussiens, de taille N = 1000, de variance 2 = 0.8 et de
moyenne M = 2. Afficher lhistogramme des echantillons. Essayer pour N = 10000.
2. Lestimation de la variance est donnee par la formule
N
X
2
2 = 1
(A(n) m
d
c
A)
A
N n=1

(1)

o`
um
d
A est lestimation de la moyenne de A.
N
1 X
m
d
A(n)
A =
N n=1

(2)

En utilisant la formule donnee, calculer m


d
A , lestimation de la moyenne.
2
En utilisant la formule donnee, calculer en une seule ligne c
A , lestimation de la variance.
3. Ecrire une fonction dont le code ne contient quune seule ligne, qui sous-echantillonne un vecteur
x donne dun facteur N . Par exemple, le vecteur x = [ 1 2 3 4 5 6 7 8 9 ] devient [ 1 3
5 7 9] pour N = 2. Appliquer cette fonction au vecteur A.
4. Faire de meme en deux lignes, pour un sur-echantillonnage dun vecteur. Par exemple, le vecteur
x = [ 1 2 3 4 ] devient [ 1 0 0 2 0 0 3 0 0 4] pour N = 3.