Vous êtes sur la page 1sur 9

Chapitre 1

Introduction `
a Matlab
1.1

Premier pas

Matlab est un interpreteur, cest-`a-dire un programme qui, une fois appele, reste en memoire et
execute des commandes. Un suite de commandes peut etre regroupee dans un meme fichier texte
ayant lextension .m. Si le fichier a pour nom prog1.m, il suffit de taper prog1 dans la fenetre de
commande de Matlab pour que le programme soit execute.
Les variables
Matlab effectue la plupart des operations sur des matrices qui peuvent etre `a elements reels ou
complexes, un scalaire etant un matrice 1 1 et un vecteur une matrice `a une seule colonne ou `a une
seule ligne. Dans la suite la notation (` c) indique que la matrice consideree comporte ` lignes et c
colonnes.
Taper :
a=[1 2 3 ; 4 5 6]
Les crochets permettent daffecter des valeurs aux elements dune matrice. Lespace est un separateur
qui fait passer `a la colonne suivante et le point virgule `a la ligne suivante.
Dans tous les cas, les elements sont indexes `a partir de 1. Le premier indice est le numero de ligne,
le second le numero de colonne. Dans notre exemple a(1,1)=1 et a(2,1)=4. Evidemment laffectation
a=[1 2 ;3 4 5] entrane un message derreur puisque le nombre de colonnes est different dans les
lignes 1 et 2.
Il est possible de fabriquer un vecteur en utilisant une boucle implicite de la forme (i :j :k).
Cette expression engendre la liste des valeurs partant de la valeur i et allant jusqu`a k avec un pas
dincrementation de j, qui par defaut est egal `a 1.
Taper :
a=(0 :3 :20).
Il est possible detendre la taille dune matrice. Linterpreteur se charge de gerer lespace disponible
en allouant dynamiquement de la memoire lors de lexecution de la commande. Taper :
a=[1 2 3 ; 4 5 6];
a=[a ; a]

1
4
1
4

2
5
2
5

3
6
3
6

Remarques :
Il faut respecter les minuscules et les majuscules dans la denomination des variables et autres
objets definis dans le langage.
Le ; `a la fin de la ligne de commande supprime laffichage du resultat de loperation.
Op
erations sur les matrices
Les operations sont :
dune part laddition (+), la multiplication (), lexponentiation (^) et la transposition conjugaison (0 ),
dautre part (.), (./) et (.^) (directement precedes dun point) qui agissent terme a
` terme.
Ainsi ne pas confondre e=a ^2 et e=a .^2. La premi`ere calcule le carre de la matrice a (matrice
supposee carree) et la seconde le carre de chaque element de a (matrice
de dimensions quelconques).

Les constantes i, j, pi sont initialisees dans Matlab : i = j = 1 et pi = 3.14159265358979. Ces


variables peuvent etre redefinies dans un programme. Elles perdent alors leurs valeurs dinitialisation.
Le programme qui suit permet de tracer la somme de trois sinusodes. Taper :
clear
T=1000;
temps=(0:T-1);
% trois amplitudes
ampl = [1 2.5 3.8];
% trois frequences
fq = [0.01 0.013 0.014];
% matrice de dimensions (3,T)
sig = exp(2*j*pi*fq*temps) ;
% vecteur ligne de dimension T
x=ampl*sig;
% affichage
figure(1) ;
subplot(2,1,1); plot(temps,real(sig(1,:))) ;
subplot(2,1,2); plot(temps,real(x));

temps est un vecteur ligne (1 1024) et donc fq*temps est une matrice (3 1000). On peut le
verifier en tapant la commande whos. Noter que exp(2*j*pi*fq*temps) calcule lexponentiel terme
`a terme et non pas lexponentiel de la matrice. x=ampl*sig ; effectue la somme ponderee par les trois
amplitudes. sig(1, :) designe la premi`ere ligne de la matrice sig.
Matrices pr
ed
efinies
Les commandes suivantes permettent dobtenir des matrices particuli`eres :
2

ones(nlig,ncol) permet dobtenir une matrice de nlig lignes et ncol colonnes ne contenant que
des 1.
zeros(nlig,ncol) permet dobtenir une matrice de 0 de meme dimension que la precedente.
eye(n) donne la matrice identite de dimension n.
randn(nlig,ncol) permet dobtenir un echantillon, dont la distribution est gaussienne, centree,
de variance 1.
rand(nlig,ncol) permet dobtenir un echantillon, dont la distribution est uniforme sur (0, 1).
La fonction reshape permet de redimensionner une matrice. Faire help reshape.
Laffichage de r
esultats sous forme graphique
La commande plot (voir aussi les commandes bar, stem) permet laffichage graphique des resultats :
si x et y sont deux vecteurs de nombres reels de meme longueur, la commande plot(x,y) affiche
la courbe de lordonne y, en fonction de labscisse x.
si x et y sont deux matrices de nombres reels de meme dimension, la commande plot(x,y)
affiche la premi`ere colonne de y en fonction de la premi`ere colonne de x, la deuxi`eme colonne de
y en fonction de la deuxi`eme colonne de x, et ainsi de suite jusqu`a epuisement des colonnes.
si x est un vecteur de nombres reels de longueur N et y une matrice de nombres reels de dimension
(N K), la commande plot(x,y) affiche les K graphes correspondant aux K colonnes de y en
fonction de x.
si x est un vecteur de nombres complexes, la commande plot(x) affiche la courbe donnant la
partie imaginaire de x, en ordonnee, en fonction de sa partie reelle, en abscisse.
Les entr
ees-sorties
Matlab offre la possibilite deffectuer des operations dentree-sortie `a partir du clavier, de lecran
et sur des fichiers.
En voici les principales :
input, ginput, ... pour les acquisitions `a partir du clavier.
disp, sprintf, ... pour laffichage sur lecran.
gtext, plot, grid, title, ... pour laffichage graphique.
load, save pour charger et sauvegarder tout ou partie des variables dans un fichier avec un
format propre `a Matlab. Par defaut ces fichiers ont lextension .mat.
fopen, fread, fwrite pour les entrees-sorties avec formattage sur des fichiers.
wavread, wavwrite pour la lecture et lecriture des fichiers au format .wav.
Taper :
clear
x=(1:100);
fid=fopen(ess.dat,w);
fwrite(fid,x,short);
fclose(fid);
%%%%
clear
fid=fopen(ess.dat,r);
y=fread(fid,short);

fclose(fid)

Ce programme cree le fichier ess.dat dentiers 16 bits, puis relit son contenu dans la variable y.

1.2

Filtrage et transform
ee de Fourier discr`
ete (fft)

R
esolution spectrale
R
Soit xa (t) un signal reel. On note Xa (F ) = R xa (t)e2jF t dt sa transformee de Fourier qui verifie
Xa (F ) = Xa (F ). F designe la frequence exprimee en Hz. On suppose que Xa (F ) = 0 pour |F | > B.
On dit que le signal xa (t) est de bande B. Considerons `a present la suite xe (n) = xa (n/Fe ) des
echantillons de xa (t) pr
eleves `a la cadence Fe . On montre que la fonction, periodique de periode 1,
P
2jf
definie par X(e
) = kZ xe (n)e2jnf , a comme expression en fonction de Xa (F ) :
Xe (e2jf ) =

1X
Xa (Fe (f k))
T
kZ

Il ressort de cette expression que, si Fe > 2B, alors la partie de Xe (e2jf ) pour f (1/2, 1/2) est
`a un facteur pr`es et `a une renormalisation pr`es identique `a Xa (F ). Do`
u lidee de calculer le spectre
dun signal `a partir de ses echantillons.
Malheureusement, en pratique, on ne peut calculer Xe (e2jf ) que pour une suite finie de valeurs
de xe (n) et pour une suite finie de valeurs de f . Le plus souvent on prend, pour f , une suite de valeurs
uniformement reparties entre 0 et 1, typiquement f = k/L avec k {0, . . . , L 1}. Ce qui conduit `a
la suite :
L1
X
2jk/L
xe (n)e2jkn/L
X(k) = Xe (e
)=
k=0

Partant de la suite x(0), . . . , x(N 1), eventuellement completee par L N zeros, la fonction fft de
Matlab calcule la suite X(0), . . . , X(L 1).
clear
T=300; temps=(0:T-1);
L=1024; frq=(0:L-1)/L;
amp = [1 2.5 3.8];
fq = [0.01 0.013 0.014];
sig = exp(2*j*pi*fq*temps) ;
x=amp*sig;
xf=abs(fft(x,L));
% affichage
plot(frq,xf);

Engendrer un signal representant N = 30 echantillons dune sinusode de frequence F 0 = 1300Hz


echantillonne `a Fe = 8000Hz. En utilisant la fonction fft, tracer, en decibels et pour L = 1024 points
de frequence, le module de sa transformee de Fourier1 .
1

Le module de la transformee de Fourier sappelle aussi le spectre. Les mots spectral et frequentiel sont synonymes.

15

10

500

1000

1500

2000

2500

3000

3500

4000

Fig. 1.2.1 Spectre (dans les frequences positives) dune sinusode de


frequence 1300Hz, echantillonnee a
` Fe = 8000Hz et observee sur une duree
de 3.75ms.

Nous avons reporte `a la figure 1.2.1 |Xe (f )|. On observe que le lobe principal, de largeur 2(Fe /N ),
est centre sur la frequence 1300Hz et que les deux lobes secondaires sont de largeur (F e /N ). Les deux
premiers situes autour des frequences F0 1.5Fe /N se situent 13dB en dessous du lobe principal.
Engendrer un signal representant N echantillons de la somme de deux sinusodes de frequences
1000Hz et 1300Hz et damplitude relative 30dB. La frequence dechantillonnage est de 8000Hz. Tracer
le module de la TFtd. A partir de quelle valeur de N , peut-on separer, de facon significative, les 2
composantes en frequence.
Filtrage passe-bas
On veut realiser numeriquement un filtre qui, pour des signaux reels echantillonnes `a la frequence
Fe , laisse passer le signal dans la bande (0, F0 ) (avec F0 < Fe /2).
1. Montrer que le filtre doit avoir comme gain complexe H(f ) = 1 pour |f | < F = 0/F e et 0 sinon.
Dans la suite on note f0 = F0 /Fe .
2. Montrer que le filtre a comme reponse impulsionnelle :
h(n) =

sin(nf0 )
n

(1.2.1)

o`
u n Z. Pour des raisons de mise en uvre pratique, on limite le nombre de coefficients `a N .
Comment faut-il choisir ces N coefficients ? Quelle consequence cette troncature a-t-elle sur la
reponse en frequence du filtre ?
5

3. Ecrire un programme qui fabrique un filtre `a N coefficients `a partir de la relation 1.2.1 suivant
les indications :
function h=rif(N,f0)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% RIF synthese dun filtre RIF passe-bas par la
% methode de la fenetre
% USAGE :
%
h = rif(N,f0)
%
N = longueur du filtre,
%
f0 = frequence de coupure, entre 0 et 0.5.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

4. Verifier les resultats en tracant le gain en frequence du filtre obtenu, pour f 0 = 0.25 et pour
differentes valeurs de N .
5. On multiplie point par point les n valeurs du filtre obtenu precedemment par la suite, appelee
fenetre de Hamming dexpression :

n
h (n) = 0.54 0.46 cos 2
N 1
o`
u n = {0, 1, , N 1}. On obtient g(n) = h(n)h (n). Comparer la gain en frequence du filtre
g(n) `a celui obtenu `a la question precedente.
Cryptage type Canal+ par retournement de spectre
Partant dun son (signal reel x(t)) de bande B, une technique classique de cryptage consiste `a
effectuer un traitement, schematise figure 1.2.2. De facon imagee, on dit que lon retourne le spectre.

F
B

+B +Fm

Fm

+Fm

Fig. 1.2.2 Cryptage de son : a` gauche spectre du signal reel a` crypter, a`


droite spectre du signal crypte.

1. Notons y(t) = 2x(t) cos(2Fm t). Partant de lexpression du spectre de y(t) en fonction du spectre
de x(t), montrer que, si Fm > B, on peut obtenir le spectre du signal crypte.
En quoi consiste loperation de decryptage ?
2. Ecrire un programme qui effectue le decryptage, pour la frequence Fm , dun signal de bande B,
echantillonne `a Fe . Appliquer ce traitement `a un enregistrement de son crypte par Canal+ avec
Fm = 12.6 kHz.

Signal modul
e en fr
equence
On dit quun signal (`a temps continu) est module en frequence par le message m(t) autour de la
frequence F0 , sil a pour expression :
xa (t) = A cos (t)
o`
u (t) verifie d/dt = 2(F0 +m(t)). La quantite (2)1 d/dt est appelee la frequence instantanee.
1. On prend m(t) = t. En deduire lexpression de (t).
2. Ecrire un programme qui engendre la suite des echantillons, preleves `a la cadence F e = 8 000
Hz pendant 2 secondes, dun signal module lineairement en frequence autour de la frequence
F0 = 1 000 Hz.
3. Ecouter le signal module obtenu, pour = 1 000 Hz/s puis pour = 2 000 Hz/s. Quobserve-ton ? Interpreter le resultat.
4. En effectuant une suite de transformees de Fourier du signal, sur des fenetres consecutives de
meme duree, tracer dans le plan temps-frequence levolution de la frequence instantanee. Coment
doit-on choisir la duree de la fenetre danalyse.

1.3

Utilisation de rand et randn

Sous Matlab, on dispose de deux generateurs aleatoires : un generateur uniforme sur (0, 1) qui
sobtient par la commande rand et un generateur gaussien centree de variance 1, qui sobtient par la
commande randn.
En utilisant la fonction randn engendrer une suite de valeurs distribuees suivant une loi gaussienne
de moyenne 4 et de variance 3. Pour estimer la distribution des valeurs, on peut utiliser la fonction
hist qui affiche lhistogramme. Toutefois on se propose ici decrire cette fonction `a titre dexercice.
Ecrire une programme qui effectue, sur un tableau de dimension 1 et comportant un nombre
quelconque de valeurs, les operations suivantes :
decouper lintervalle des valeurs en p intervalles de meme longueur (utiliser les fonctions max et
min).
compter le nombre de valeurs dans chaque sous-intervalle (utiliser la fonction find ou la fonction
sort).
tracer lhistogramme en utilisant la fonction bar ou la fonction stem.
Lappel de la fonction pourra etre :
function histo(X,p)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% trace lhistogramme de X suivant une partition
% de lintervalle en p sous-intervalles
% entree:
%
X tableau de dimension 1 de taille quelconque
%
p nombre de sous-intervalles
% sortie:
%
HISTOGRAMME
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Tester la fonction obtenue sur la distribution precedente.


A partir de la commande rand, ecrire une fonction2 qui engendre une suite aleatoire discr`ete `a
valeurs dans lalphabet fini de M = 2m symboles reels {(M 1), (M 3), , 3, 1, 1, 3, , (M
3), (M 1)}. Lappel de la fonction pourra etre :
function symb=gsymb(m,N,NORM)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% APPEL : symb=gsymb(m,N,NORM)
% engendre un sequence a_n de longueur N
% dans un alphabet MIA a M=2^m symboles suivant
% une loi uniforme.
%
% entree:
%
m tel que M=2^m
%
N = taille de la suite
%
si NORM=1 alors E(\| a_n \|^2)=1
% sortie:
%
symb = sequence aleatoire
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Tester avec la fonction histo precedente la repartition des symboles.

1.4

M
ethode des moindres carr
es

On consid`ere deux observations lune vectorielle (x1 (n), , xp (n)) et lautre scalaire y(n) liees
entre elles par une relation de la forme y(n) = a0 x0 (n) + a1 x1 (n) + + ap xp (n) et on souhaite
evaluer, `a partir de ces dobservations, la suite des coefficients ak . Voici quelques exemples :
Si la suite ak designe la reponse impulsionnelle finie dun filtre lineaire, xk (n) = x(n k) lentree
du filtre `a linstant (n k), alors la sortie y(n) `a linstant n a pour expression :
y(n) = a0 x(n) + a1 x(n 1) + + ap x(n p)
Si xk (n) = xk (n) et si la suite ak designe les coefficients dun polynome de degre p, la valeur
y(n) associee `a x(n) a pour expression :
y(n) = a0 + a1 x(n) + + ap xp (n)
Si xk (n) = cos(2fk n + k ) o`
u {f0 , . . . , fp } est une suite de frequences connues et si y(n) est un
melange lineaire de ces composantes, on a :
y(n) = a0 x0 (n) + a1 x1 (n) + + ap xp (n)

= 0 cos(2f0 n) + 0 sin(2f0 n) + p cos(2fp n) + p sin(2fp n)

Partant de f0 , . . . , fp et des observations y(n), on cherche `a estimer les 2p valeurs reelles {k , k }.


Un cas particulier est celui du melange harmonique o`
u fk est multiple dune meme frequence f0 .
2

Cette fonction sert dans la section ?? lors de la simulation dune transmission numerique.

On suppose que xk (n) = x(n k) et on souhaite determiner la suite des coefficients {a0 , . . . , ap }
tel que y(n) = a0 x(n) + + ap x(n p) represente une bonne estimation lineaire de x(n + 1).
On la note :
x
(n + 1) = a0 x(n) + a1 x(n 1) + + ap x(n p)
Une fois ces coefficients estimes `a partir dune suite dobservations {x(n)}, on pourra utiliser ces
coefficients pour predire ulterieurement le processus.
Theoriquement le probl`eme est simple : il suffit deffectuer une serie de p mesures et de resoudre
ensuite un syst`eme lineaire de p equations `a p inconnues. En pratique cette facon de proceder ne
convient pas, car les donnees observees presentent des imperfections dues en particulier :
1. au bruit de mesure : tous les dispositifs dobservation introduisent inevitablement des fluctuations (ex. ; bruit thermique dans les syst`emes electroniques),
2. au bruit de mod`ele : on nest jamais pas tout `a fait s
ur que le mod`ele suppose, `a savoir
y(n) = a0 x0 (n) + a1 x1 (n) + + ap xp (n), soit vrai.

En prenant en compte ces deux aspects, sous la forme dun seul terme additif b(n), on peut alors
ecrire :
y(n) = a0 x0 (n) + a1 x1 (n) + + ap xp (n) + b(n)
On montre que, sous certaines hypoth`eses statistiques concernant b(n), il y a une amelioration non
negligeable `a effectuer un grand nombre de mesures. En empilant, sous forme matricielle, les resultats
des N mesures, on obtient le syst`eme lineaire sur-dimensionne :
y = Xa + b

(1.4.2)

o`
u y et b sont deux vecteurs de dimension N , X une matrice de dimensions (N p) construite `a
partir des observations xk (n) et a le vecteur inconnu de dimension p. Dans tous les cas le nombre
dobservations N p.
Travail demand
e
Montrer que le vecteur a qui minimise la norme de lerreur, `a savoir bT b, est donne par :
a = (X T X )1 X T y
o`
u on a suppose que X est de rang plein.

Vous aimerez peut-être aussi