Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
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).
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);
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
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
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
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
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
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)
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.