Vous êtes sur la page 1sur 9

IUT GEII de Neuville sur Oise

TD1
PRISE EN MAIN DE MATLAB
ECHANTILLONNAGE
Objectif
Lobjectif de ce TD est de prendre en main loutil Matlab. Vous allez apprendre dans ce TD
comment manipuler des variables, tracer des graphiques et raliser des programmes.

Partie I : Prise en main


I. Introduction
Matlab est un langage de programmation interprt, cest--dire quil existe une ligne de
commande et que lordinateur effectue toutes les commandes que lon entre une par une. A ce
titre, matlab peut sapparenter une calculatrice gante. Le terme Matlab vient de lagrgation
de Matrix et Laboratory et indique ainsi clairement sa philosophie : faciliter la manipulation
de haut niveau de concepts mathmatiques et rendre la manipulation de matrices un jeu
denfant. Le principe de matlab est que lon doit crire des commandes matlab comme on
crit des mathmatiques (ou presque. . . ). Sa philosophie de base doit par ailleurs toujours
rester lesprit du programmeur : il faut essayer tout prix dcrire des commandes
matricielles et vectorielles car leur manipulation est optimise par linterprteur.
La premire tape pour commencer utiliser matlab est de dfinir des vecteurs et des matrices
comme variables. Le sigle = indique laffectation. Pour introduire un vecteur ou une matrice,
on indique les lments entre crochets []. Un espace ou une virgule sparent les lments
dune mme ligne, un point virgule indique un passage la ligne suivante de la matrice.
>> x=[3 9 4 2,1 -1 ,0] x=
3 9 4 2 1 -1 0 >> A=[1 -1 ,2;7 7 -2] A=
1 -1 2 7 7 -2
Des commandes prdfinies permettent de dfinir des matrices ou des vecteurs trs frquemment utiliss. Par exemple a:step:b cre un vecteur avec tous les entiers de a b avec un
saut de step. La commande zeros cre une matrice de zros, la commande ones cre une
matrice de uns, la commande eye cre une matrice identit. La commande linspace divise un
intervalle donn en intervalles gaux. La commande rand cre une matrice de nombres
alatoires. Voir laide help elmat pour plus de commandes.
1
>> a=3:7 a=
34567 >> a=3:2:7
a= 357

Olivier Romain

IUT GEII de Neuville sur Oise


>> B=ones(2,3) B=
111 111
>> C=eye(3)
C=
100 010 001
>> b=linspace(0,10,4)
b=
0

3.3333

6.6667 10.0000

On peut accder aux lments dune matrice en indiquant ses indices entre parenthses.
>> A=[1 2 3;4 5 6]
>> A(1,2)
ans =
2
2
Comme dit plus haut, toutes les manipulations dans matlab peuvent seffectuer vectoriellement. On peut donc accder plusieurs lments dune matrice et ainsi crer une sousmatrice ou un sous-vecteur. On peut aussi le faire en utilisant le symbole : qui facilite laccs
une srie dlments.
>> A=[1 2 3 4;5 6 7 8;9 10 11 12];
A=
1

10

11

12

>> x=A([1 2],[1 2])


x=
1 2
5 6
>> y=A(2,1:3)
y=

Olivier Romain

IUT GEII de Neuville sur Oise


5

Toutes les oprations usuelles sur les matrices sont dfinies. On peut ainsi aisment utiliser
+,-,*,. Le sigle correspond la transposition.
>> A=[1 2 ;3 4]
A=
1 2
3 4
>> B=[2 3;1 0]
B=
2 3
1 0
>> C=A+B
C=
3 5
4 4
La fonction size renvoie les dimensions dune matrice et la fonction find permet de
trouver les indices linaires correspondant aux valeurs non-nulles dun tableau.
>> A=[1 -1 3 4 -4]
A=
1 -1

4 -4

>> size(A)
ans =
1

>> i=find(A>=0)
i= 1
3
4

Olivier Romain

IUT GEII de Neuville sur Oise


Finalement, mentionnons la possibilit de trier des vecteurs (sort), de calculer le max, le min,
la somme colonne par colonne (sum), le produit colonne par colonne (prod) qui sont des
fonctions vectorielles trs frquemment utilises. Voir laide de matlab help ou doc qui
renseignent la multitude de possibilits disponibles.
La function Length permet de renvoyer le nombre dlments contenu dans le tableau ou le
vecteur. Length renvoie la plus grande des dimensions dune matrice. Exemple A(1:10,1/20);
>> length(A)
Ans =20;
Exercice 1
1 Crer un vecteur ligne x de 5 nombres successifs entre 2 et 3 et spars par des
intervalles gaux.
2 Ajouter 3 au deuxime lment
3 Crer un vecteur y de mme dimension que x et dont les lments sont initialis 1 ;
4 Calculer le produit scalaire des deux vecteurs
5 Crer une matrice A dont les colonnes sont x, y, x, y.
6 Calculer la transpos de A

II. Courbes et graphiques


MATLAB offre des fonctionnalits puissantes pour la cration de graphiques. Laffichage le
plus simple se fait laide de la fonction plot. La gestion des diffrentes figures se fait
laide de la fonction figure. Pour afficher plusieurs courbes sur une mme figure, on active
le maintien du graphique laide de la commande hold on. Ce maintien est dsactiv
laide de la commande hold off. Pour sauver une figure on utilise la fonction print. La
fonction close ferme la figure active alors que la commande close all ferme toutes les
figures.
Dautres fonctions permettent de dfinir la zone daffichage (axis), une grille (grid), un
titre (title) ou des labels pour les diffrents axes (xlabel, ylabel) :
t = 0:pi/20:2*pi;
y = sin(t);
plot(t,y)
axis ([0 2*pi -1.5 1.5])
grid
title(sinus)
xlabel(temps t)
ylabel(sinus(t))
Exercice 2
1 Crer un vecteur temps t de 0 10secondes avec un pas dchantillonnage de 0.01s
2 Tracer la fonction x(t)=0.1*sin(2*pi*1*t) ;
3 Par le biais de la commande hold, superposer au graphique la fonction
y(t)=0.5cos(2*pi*3*t)

Olivier Romain

IUT GEII de Neuville sur Oise


4 Tracer la fonction y=f(x). Quel est le dphasage ?

III. Structures de contrles


MATLAB intgre des structures de contrle parmi lesquelles on retrouve : if : contrle
conditionnel sur une expression logique ; switch : contrle conditionnel sur une expression
logique ; for : contrle de boucle sur un compteur ou un itrateur ;
while : contrle de boucle sur une expression logique. 7
Laide donne une description prcise de ces structures de contrle.
if (a<=b)
do something
else
do something else
end
Les oprateurs de comparaison les plus usuels sont <,<=,>,>=,==, =.
>> a=0;
>> for i=1:10
a=a+i;
end;
>> a
a= 55
Exercice 3
1 Calculer la somme pour k allant de 0 50, de 2-k
2 Calculer la valeur thorique et comparer

IV. Fonctions
Une partie importante de lutilisation de matlab concerne lcriture de fonctions. Une fonction
est souvent crite dans un fichier spar et peut tre accd de la mme faon que les
fonctions prdfinies de matlab. La syntaxe de len-tte dune fonction est la terme function
suivi dune ou plusieurs sorties entre crochets, le signe = suivi du nom de la fonction et de son
ou ses entres.
function [a,b] = minmax(x,y)
Cette fonction doit tre crite dans le fichier minmax.m pour un accs plus clair. Cette
fonction admet deux entres (reprsentes par x et y). Ces entres peuvent tre de nimporte
quel type : scalaires, vecteurs, matrices, caractres ou autres (il existe encore dautres types
dans matlab que nous nexpliciterons pas ici). Cette fonction admet par ailleurs deux sorties :
a et b qui peuvent de nouveau tre de nimporte quel type.
La fonction que nous souhaitons crire admet deux vecteurs en entre et donne en sortie un
vecteur a tel que ai = min{xi, yi} et un vecteur b tel que bi = max{xi, yi}.
8
i=0

Olivier Romain

IUT GEII de Neuville sur Oise


function [a,b] = minmax(x,y)
nn=min(length(x),length(y));
for i=1:nn
a(i)=min(x(i),y(i));
b(i)=max(x(i),y(i));
end;
A noter que linterprteur de matlab adapte dynamiquement la taille des vecteurs. Cependant,
il est conseill dallouer la taille des vecteurs initialement car lallocation dynamique cote
beaucoup de temps de calcul. Dans cette fonction, il est donc de bonne pratique, avant la
boucle, de commencer par
a=zeros(nn);
b=zeros(nn);
Remarquons que cette fonction na pas t crite dans lesprit matlab car il est, dans ce cas,
bien plus efficace de profiter des fonctions min et max de matlab. En rgle gnrale, il est
toujours prfrable dviter les boucles. Nous aurons donc
function [a,b] = minmax(x,y)
nn=min(length(x),length(y));
a=min([x(1:nn);y(1:nn)]);
b=max([x(1:nn);y(1:nn)]);
Pour une implmentation encore plus robuste, il faudrait idalement vrifier que les deux
vecteurs sont des vecteurs lignes et dans le cas contraire les transformer en vecteurs lignes.
Remarque Il est souvent utile de penser, lors de lcriture dune fonction, ce que celle-ci soit
capable de travailler vectoriellement ou mieux, matriciellement comme cest le cas pour la
plupart des fonctions prdfinies de matlab (comme par exemple max et min).
Exercice 4
1 Ecrire une fonction qui reoit en entre un vecteur p et un vecteur x. La sortie de la
fonction renvoie un vecteur y qui calcule la valeur du polynme reprsent par
p(0)+p(1)x+p(2)x2 + p(3)x3 + en chacun des points donns par le vecteur x.
Utiliser votre fonction pour tracer le graphique de p(x) = x2 + 1 sur lintervalle [2, 2].
(Remarque : Vous venez dimplmenter la fonction polyval de matlab. Voir help
polyfun pour plus dinformations sur le traitement des polynmes par matlab.)
2 Ecrire la fonction parite qui reoit en entre un vecteur de nombres entiers et qui sort
un vecteur avec des 1 la place de tous les nombres pairs et des -1 la place de tous
les nombres impairs.
3 Ecrire la fonction qui reoit en entre un vecteur x et qui donne en sortie deux
vecteurs, lun tant la partie entire de chaque composante de x et lautre tant le
nombre pair le plus proche de chaque composante de x.
4 Ecrire une fonction qui reoit en entre un vecteur correspondant un nombre brut de
secondes. La sortie de la fonction est constitue de quatre vecteurs correspondant au
nombre de jours, dheures, de minutes et de secondes de chaque composante de
lentre.

V. Entres / Sorties
Pour le dveloppement dun programme interactif, la sortie cran et lentre clavier se font
respectivement laide des fonctions disp et input.
Olivier Romain

IUT GEII de Neuville sur Oise


La sauvegarde et le chargement des variables se font respectivement laide des fonctions
save et load. Pour une gestion plus souple de la lecture et de lcriture dun fichier, on
peut tre amen utiliser les fonctions fopen, fclose, fprintf, fscanf, fgetl et
fgets.
La concatnation de chanes de caractres se fait laide de loprateur []. Il peut tre utile
de transformer des nombres en chanes de caractres et vice versa laide des fonctions
num2str et str2num. Pour une gestion plus souple des chanes de caractres, on peut
employer les fonctions sprintf et sscanf.

VI. Scripts et programmes


Lenvironnement Matlab permet deffectuer des programmes allant de simple script des
calculs complexes.
Matlab intgre un diteur/debuggeur disponible par le biais de la commande edit

Le fichier doit comporter lextension .m


Lexcution du programme est ralise directement en appuyant sur F5 ou sous Matlab en
tapant le nom du fichier (sans lextension). La debugger intgr permet de raliser une
excution pas pas du programme.
Exercice 5
Ecrire un programme qui permet de tracer les sinusodes de lexercice 2. On nommera le
programme exo5.m

Olivier Romain

IUT GEII de Neuville sur Oise

Partie II : Application lchantillonnage imparfait


1 Ecrire un programme qui permet de tracer un signal modul en amplitude avec
porteuse. On nommera le programme exo6.m. Le modulant sera sinusodal et de
frquence 100Hz et la porteuse possdera une frquence de 5kHz. La priode
dchantillonnage sera de 20kHz. Lindice de modulation sera de 50%. On tracera le
signal modul sur 20 priodes du signal modulant.

2 Par le biais de la fonction fft, tracer le spectre du signal chantillonn entre 0 et Fe.
On va mettre en vidence leffet de lchantillonnage imparfait. Le signal chantillonn est
bloqu pendant toute la dure de lchantillonnage.
3 Le bloquage correspond la fonction temporelle porte. Quel sera le spectre de cette
fonction dans le domaine frquentiel ?

Olivier Romain

IUT GEII de Neuville sur Oise


4 Tracer cette fonction
5 Multiplier cette fonction par le spectre du signal chantillonne (parfait) afin de
dterminer le spectre du signal chantillonn et bloqu.
6 Dterminer par TFD inverse (ifft) lallure temporelle du signal chantillonn et
bloqu.
7 Conclusion

Olivier Romain

Vous aimerez peut-être aussi