Vous êtes sur la page 1sur 4

TP - Proprits de la transforme de Fourier rapide

Partie I Signaux dterministes


1) Crer une sinusode de 100Hz avec une frquence dchantillonnage fe = 8192 Hz et une
dure dobservation T = 1 s.
Tracer la puis visualiser son spectre (module, argument, partie relle, partie imaginaire).
Donner vos commentaires.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
dtermination des paramtres
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
fe=8192;
% Hz
T=1;
% s
N=T*fe;
freq1=100;%Hz
tDeb=0;
tFin=1;
tPas=(tFin-tDeb)/N;
t=tDeb:tPas:(tFin-tPas);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
affichage d'une raie 100Hz
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
plot(t,y);
zoom on
% Afficher partie relle et imaginaire
subplot(3,1,2);
plot(real(fy));
subplot(3,1,3);
plot(imag(fy));

2) Crer un vecteur contenant une cosinusode et afficher son spectre.


Commentaires.
3) Crer une sinusode de 6000 Hz et afficher son spectre.
Commentaires.
4) Crer une sinusode de 100 Hz (Cf. 1) plus un point dchantillonnage.
Afficher son spectre.
Commentaires.
5) Crer une sinusode de 100 Hz priodique au sens fft puis une sinusode de 100.5 Hz.
Commentaires sur les diffrences dans les spectres.
6) Reprendre la sinusode de 100. 5Hz et sur-chantillonner le spectre avec le
zeropadding .
Commentaires.
fy3=fft([ y3 zeros(1, N*9)]);

7) La troncature vaut 2 secondes.


Tracer la FFT de la sinusode de 100.5Hz et sur-chantillonner.
Commentaires.
8) Crer un Dirac en t=0 puis retarder le dun chantillon, puis de 3.
Commentaires sur les spectres.
9) Transformer le Dirac prcdent en fonction porte sur deux chantillons puis surchantillonner le spectre.
Commentaires.
10) Prendre une sinusode de 100Hz sur T = 1.045s.
Analyser son spectre avec et sans fentre de pondration (Hanning, Blackman, )
Commentaires sur le module et la phase des spectres.
y3=sin(2*pi*freq3*t).*blackman(N)' ;
ou
y3=sin(2*pi*freq3*t).*window(hm,N) ;

Puis sur-chantillonner les spectres pour voir les secondaires.

Partie II Signaux alatoires (utiliser lnonc en annexe)


1) Gnrer une suite alatoire de 20 symboles {-1 , 1} indpendants.
Les symboles sont obtenus aux instants 1 s, 2 s, 3 s , ...
2) Charger le fichier h.mat qui contient une rponse impulsionnelle h, chantillonne la
frquence Fe = 10Hz.
h = [0.00000
0.02325
-0.09812
0.08998
0.92677
0.60021
-0.10950
-0.01959
0.01188

0.00072
0.02106
-0.12004
0.20075
0.98133
0.46339
-0.13034
-0.00000
0.00688

0.00302
0.01357
-0.13240
0.32748
1.00000
0.32748
-0.13240
0.01357
0.00302

0.00688
-0.00000
-0.13034
0.46339
0.98133
0.20075
-0.12004
0.02106
0.00072

0.01188
-0.01959
-0.10950
0.60021
0.92677
0.08998
-0.09812
0.02325
0.00000]

0.01715
-0.04413
-0.06661
0.72891
0.84048
0.00000
-0.07141
0.02144
;

0.02144
-0.07141
0.00000
0.84048
0.72891
-0.06661
-0.04413
0.01715

...
...
...
...
...
...
...
...

Reprsenter la rponse impulsionnelle et le module de la rponse frquentielle du filtre h.


3) Le temps-symbole est de 1 seconde. Les symboles sont filtrs par h.
Reprsenter la sortie y du filtre et le spectre en sortie du filtre.
Par dfinition :
s( t ) =

ak .h( t - kTs ) d'o s( n ) =

ak .h( n - Fe / 1.k )

4) On suppose que le signal est modul par une onde porteuse de frquence Fm = 3Hz.
On obtient un signal r que l'on reprsentera ainsi que son spectre.

5) Le signal est reu bruit par un bruit additif (par ex. du bruit d'lectronique), bruit
constitu dune suite de variables alatoires gaussiennes et indpendantes. On fixe le SNR
10dB. Tracer le signal bruit et le spectre correspondant.
6) Calculer l'erreur quadratique moyenne et le SNR de faon empirique.
Etudier les variations sur les rsultats obtenus lorsqu'on reproduit plusieurs fois l'exprience.
Annexe Programmation de la partie II (en Matlab/Scilab)
Tableau de quelques correspondances Matlab / Scilab :
Scilab
Plot2d
Xtitle
Rand( .,.,normal)
Fft(.,-1)
//
%pi

Matlab
plot
xlabel
randn(.,.)
ifft
%
pi

clear all; clf;


// 1 --> generation des symboles
//------------------------------nb_symb = 20;
symb
= *** ;
// 2 --> filtre
//-------------Fe
= 10;
long = 3;
// reponse impulsionnelle du filtre en cosinus surreleve pour un roll off de 0.5
// echantillonne a Fe=10 (Ts=1) et tronque a [-3Ts,3Ts]
// (equivalent matlab : h = rcosine(1,Fe,'fir',0.5,long); save h.mat; load h.mat)
h = [0.00000
0.02325
-0.09812
0.08998
0.92677
0.60021
-0.10950
-0.01959
0.01188

0.00072
0.02106
-0.12004
0.20075
0.98133
0.46339
-0.13034
-0.00000
0.00688

0.00302
0.01357
-0.13240
0.32748
1.00000
0.32748
-0.13240
0.01357
0.00302

0.00688
-0.00000
-0.13034
0.46339
0.98133
0.20075
-0.12004
0.02106
0.00072

0.01188
-0.01959
-0.10950
0.60021
0.92677
0.08998
-0.09812
0.02325
0.00000]

0.01715
-0.04413
-0.06661
0.72891
0.84048
0.00000
-0.07141
0.02144
;

L = (length(h)-1)/2;
subplot(4,2,1)
plot2d( *** , h)
xtitle('reponse impulsionnelle du filtre')
subplot(4,2,2)
plot2d( *** , ***)
xtitle('reponse frequentielle (amplitude) du filtre')
// 3 --> filtrage
//---------------data = [];
//generation de la sequence de symboles echantillonnee a
***
y

= *** ;

// observation

Tmax = length(y)/Fe;
figure
subplot(4,2,3)
plot2d(***,y)
xtitle('signal')

Fe

0.02144
-0.07141
0.00000
0.84048
0.72891
-0.06661
-0.04413
0.01715

...
...
...
...
...
...
...
...

// spectre de y
Sy = *** ;
subplot(4,2,4)
plot2d(***,Sy)
// 4 --> Modulation sur porteuse
//-----------------------------Fm = 3; //frequence de modulation
r = *** ; // signal reu
r = *** ; // normalisation 1 de la puissance de r
subplot(4,2,5)
plot2d(***,r,3)
xtitle('signal module')
Sr = *** ;
subplot(4,2,6)
plot2d(***,Sr)
xtitle('spectre du signal module')
// 5 --> signal bruite
//-------------------RSB = 10;
sigma = 10^(-RSB/20);;
rb = *** ; // signal bruite
subplot(4,2,7)
plot2d(***,rb,3)
xtitle('signal module bruite')
Srb = *** ;
subplot(4,2,8)
plot2d(*** ,Srb)
xtitle('spectre du signal module bruite')
// 6 --> EQM et SNR estimes
//------------------------EQMe = ***
// Erreur Quadratique Moyenne (MSE)
RSBe = ***
// Rapport Signal a Bruit (SNR)

Vous aimerez peut-être aussi