TP TNS 2
TP TNS 2
TP TNS 2
ENSSAT
ENSSAT
TP de Traitement Numrique du Signal
Il est demand de prparer ce TP
Premire partie
1
1.1
Le filtre numrique est spcifi par le gabarit en dB de la figure 1.(a) avec comme paramtres :
F p = 1kHz, F s = 3kHz, 1 = 1dB, 2 = 20dB, F e = 10kHz
.
(a) Gabarit en dB
0.079(z + 1)2
z 2 1.2z + 0.516
1.2
Le gabarit du filtre passe-bas tant dfini comme la figure 1, la synthse du filtre donne deux fonctions
de transfert H(z) selon le nombre de points considr (N = 11 puis N = 7) :
H11 (z) = 0, 0309396.(z 1 +z 9 )0, 0390182.(z 2 +z 8 )+0, 0766059.(z 3 +z 7 )+0, 288307.(z 4 +z 6 )+0, 4.z 5
H7 (z) = 0, 0409365.(1 + z 6 ) + 0, 078369.(z 1 + z 5 ) + 0, 289996.(z 2 + z 4 ) + 0, 4.z 3
On dsire raliser un filtre numrique H(z) quivalent un filtre analogique de Butterworth passebas H(j) du deuxime ordre qui prsente une frquence de coupure F c de 1KHz. La frquence
dchantillonnage F e sera de 8kHz. Son filtre de Butterworth normalis est le suivant :
HN ormalise (j) =
HN ormalise (p) =
2.1
1 + 2j 2
1
1 + 2p + p2
Prparation
Le gabarit dun filtre passe-bas est dfini comme indiqu sur la figure 1.(b). Calculer les paramtres
1 et 2 pour que le filtre passe bas de frquence de coupure F c = 1KHz entre dans le gabarit,
lorsque F p = 0.7F c et F s = 3F c.
Faire la synthse par la mthode bilinaire du filtre H(j) afin dobtenir Hb (z). On tudiera linfluence de la distorsion en frquence implique par la mthode. On rappelle que la transformation
1z 1
bilinaire est obtenue par p = f (z) , 2F e 1+z
1 .
Faire la synthse par la mthode dinvariance impulsionnelle afin dobtenir Hi (z).
Tracez dans le plan complexe les ples et les zros des filtres. Les filtres sont-il stables ?
Manipulations sur Java_Filtre
Un logiciel de synthse de filtres numriques a t dvelopp lENSSAT. Il sagit dune applet JAVA
que lon peut lancer soit laide de la commande tns sous un serveur SUN, soit en vous connectant
laide dun navigateur lURL : http ://lasti.enssat.fr/GroupeArchi/enseignements/Tns/Tns.php.
Ce logiciel vous permet de choisir entre la synthse de filtres RII (Butterworth ou Chebychev) selon
la mthode bilinaire, et la synthse de filtres RIF par les mthodes de fentrage (Rectangle, Triangle,
Hamming, Hanning, Blackman, Kaiser), dchantillonnage frquentiel, ou de Parks MacClellan. Une
synthse directe par les ples et les zros est possible. Aprs avoir entr les paramtres 1, 2, F p, F s
(cf gabarit de la figure 1.(b)), la synthse seffectue automatiquement et vous donne les valeurs des
coefficients du filtre et la rponse impulsionnelle. Une aide est disponible la mme URL.
Dterminez laide de Java_Filtre les coefficients des filtres prcdents.
Manipulations sur Matlab
crire le programme Matlab permettant de faire la synthse des filtres Hb (z) et Hi (z). Lannexe C
est complter pour rpondre cette question.
Visualiser la rponse frquentielle en module et en phase des filtres numriques. Les filtres respectentils le gabarit spcifi ?
Observer leurs rponses impulsionnelles.
Comparer les deux mthodes dans les domaines frquentiel et temporel.
2.2
Prparation
Soit le filtre passe bas idal de frquence de coupure c. Dterminez la rponse impulsionnelle h(n)
de ce filtre. On prendra comme application numrique une frquence de coupure F c = 1kHz pour
une frquence dchantillonnage F e = 8kHz et un f de 2kHz.
Quel est la longueur thorique du filtre respectant ce gabarit ?
Le gabarit du filtre passe-bas est dfini comme indiqu sur la figure du 1.(b). On utilisera les options
suivantes de lapplet Java_Filtre qui correspondent 3 mthodes diffrentes de synthse :
Synthse selon la mthode de fentrage. Le gabarit idal Hi () est chantillonn, et la rponse
impulsionnelle correspondante hi (n) est calcule puis tronque sur un nombre fini dchantillons M .
Cette rponse est ensuite multiplie par la fentre choisie. On obtient h(n) = hi (n).w(n). Le nombre
de coefficients du filtre est donn par les estimations vues en cours.
Synthse par la mthode de lchantillonnage frquentiel.
Synthse base sur la mthode de Parks-MacClellan. Cest une procdure itrative qui approxime la fonction de transfert par une somme de cosinus jusqu convergence. Le nombre de points
de h(n) est donn par :
10 log(12) 13
Mpm =
14.6f T e
Les deux filtres obtenus sont rponses impulsionnelles symtriques.
Manipulation sur Java_Filtre
Relevez les coefficients obtenus par les deux mthodes partir de la spcification dans Java_Filtre
correspondant au gabarit.
Observez galement le comportement de la synthse pour dautres types de fentres.
Manipulations sur Matlab
crire le programme Matlab permettant de faire la synthse du filtre RIF H(z) par la mthode
du fentrage pour des fentres rectangulaire et de Hamming. Le programme de lannexe D est
complter.
Visualisez la rponse frquentielle en module et en phase, observez la rponse impulsionnelle.
tudiez linfluence de la fentre sur le filtre numrique. Peut on mettre en vidence le phnomne
de Gibbs.
crire le programme Matlab permettant de faire la synthse du filtre RIF H(z) par la mthode de
lchantillonnage frquentiel, en faisant attention ce que le filtre soit phase linaire.
Vrifiez que le filtre passe par les points frquentiels spcifis en module et en phase.
Entrez les spcifications pour synthtiser un filtre passe bande puis un filtre drivateur.
Deuxime partie
3.1
Etude dun filtre numrique RII passe-bas du second ordre en prcision finie
3.2
Soit le filtre :
0.0599
1 0.6511z 1 + z 2
1 1.5321z 1 + z 2
0.0599
1 1.5684z 1 + 0.6879z 2
1 1.623z 1 + 0.9366z 2
3.3
Convolution Discrte
Soit le filtre h(n) dfini la figure 2 pour M = 7, nous allons tudier le filtrage dun signal x(n) de
dure N limite, dfini par une convolution discrte
y(n) =
n
X
h(i)x(n i),
n = 0 . . . N + M 1,
i=0
au moyen de deux mthodes : une mthode temporelle directe puis une mthode frquentielle rapide.
5
5.1
Analyse spectrale
tude des Fentres temporelles
tudiez les rponses temporelles et frquentielles des fentres Rectangulaire, Bartlett, Hamming,
Hanning, Blackman laide du programme de lannexe H.
Retrouvez les caractristiques du cours (largeur du lobe principal, attnuation du lobe secondaire)
et tudiez linfluence du nombre de points N de la fentre.
5.2
Tracez la caractristique idale du spectre dune sinusode chantillonne. On prendra les valeurs
suivantes : frquence dchantillonnage F e = 300 ; frquence de la sinusode F0 = 50.
Lanalyse spectrale dun signal ne peut en pratique seffectuer que sur un nombre limit de points. On
appelle donc T0 = N.T lhorizon dobservation du signal. La multiplication temporelle du signal par
une fentre de longueur T0 implique une convolution dans le domaine des frquences.
Donner les finesses en frquence et en amplitude pour les fentres rectangulaire et Hamming pour N
= 32 et N = 256.
crire le programme Matlab ralisant lanalyse spectrale de ce signal sinusodal dans le cas des
fentres rectangulaire et Hamming pour N = 32 et N = 256.
Que se passe-t-il lorsque la priode de la sinusode est un multiple entier de lhorizon dobservation
(T = K.T0 = K.N.T ).
crire le programme Matlab ralisant lanalyse spectrale dun signal form de la somme de deux
sinusodes de frquence 50Hz et 60Hz dans le cas des fentres rectangulaire et Hamming pour N =
32 et N = 256.
Dcimation et Interpolation
6.1
Dcimation
La dcimation dun signal consiste diminuer sa frquence dchantillonnage. Ce signal doit tre
bande troite pour respecter le thorme dchantillonnage. Ceci implique un filtrage passe bas avant
lopration de dcimation.
N = 192; n = 0:1:N-1;
x = sin(2*pi*0.02*n)+sin(2*pi*0.09*n);
tudiez les effets sur le spectre dun signal dune dcimation par 2 puis par 4. On exprimera la
dcimation par M par : y1 = x(1 :2 :N) ;.
Utilisez ensuite la fonction decimate(x,M) de Matlab qui effectue en plus un filtrage anti-repliement
avant dcimation. Comparez avec la version sans filtrage.
tudiez maintenant les effets sur le spectre dun signal dune dcimation par 6. Expliquez le rsultat
obtenu.
6.2
Interpolation
Linterpolation dun signal consiste augmenter sa frquence dchantillonnage. Les deux principales
mthodes sont linsertion de L 1 zros dans la rponse temporelle ralisant une interpolation par un
facteur L (voir cours et figure 3.a), et lajout de Z zros dans le domaine frquentiel impliquant une
+Z
interpolation par un facteur L = NN
o N est la taille de la FFT (voir figure 3.b).
Fig. 3 Interpolation
A partir du signal utilis dans la section 6.1 dcim dun facteur 4, ralisez linsertion de zros
(lvateur de frquence) et vrifiez son impact sur le spectre selon la mthode prsente en cours.
On prendra un facteur dinterpolation L = 4.
Raliser linterpolateur par insertion de zros et filtrage RIF passe bas.
Raliser linterpolateur par par TFD et ajout de zros.
Comparer qualitativement les deux mthodes dinterpolation.
6.3
La ralisation de filtres numriques peut tre simplifie par une srie de traitements interpolationfiltrage-dcimation. Lexemple le plus connu est le filtre de lissage du Compact Disc qui ralise un
filtrage trs slectif F e/2. Il est en pratique ralis par le schma ci dessous.
Comparer les fonctions de transfert et les complexits des deux types de filtrage par la mthode directe
et la mthode multicadence.
close all ;
% Premiere partie
% 1 Analyse de filtres numriques passe-bas du second ordre
% 1.1 Analyse dun filtre numrique RII passe-bas du second ordre
b = [0.079 2*0.079 0.079];
a = [1 -1.2 0.516];
N = 32; n=0:N-1;
delta = [1; zeros(N-1,1)];
step = ones(N,1);
h = filter(b, a, delta);
figure(1); stem(n,h);
%Numrateur
%Dnominateur
%Impulsion
%Echelon unit
%Rponse du filtre (ou impz(b,a);)
L = 256;
[h,w] = freqz(b,a,L); %Retourne le resultat de la TF sur L points entre 0 et pi
m = abs(h); p = angle(h);
figure(2); plot(w(1:L-1),20*log10(m(1:L-1))); title(Log Magnitude Filtre RII 2nd ordre);
axis([0 pi -60 2]); grid
figure(5); plot(w,m); title(Magnitude); figure(3); plot(w,p); title(Phase);
figure(4); zplane(b,a);
zero = roots(b); pole = roots(a);
Delta1 = 1; Delta2 = -20;
Fe = 10000;
Fp = 1000; NFp = round(L*Fp/(Fe/2));
Fs = 3000; NFs = round(L*Fs/(Fe/2));
gabh = [Delta1*ones(NFs,1); Delta2*ones(L-NFs,1)];
gabl = [-Delta1*ones(NFp,1); -5000*ones(L-NFp,1)];
figure(2); hold on; plot(w,gabh,r); plot(w,gabl,r);
b11 = [0 -0.0309396 -0.0390182 0.0766059 0.288307 0.4 0.288307 0.0766059 -0.0390182 -0.0309396 0];
b7 = [-0.0409365 0.078369 0.289996 0.4 0.289996 0.078369 -0.0409365];
[h11,w] = freqz(b11,1,L);
[h7,w] = freqz(b7,1,L);
figure; plot(w,20*log10(abs(h11)),g); title(Log Magnitude Filtre RIF 2nd ordre);
axis([0 pi -60 2]); hold on;
plot(w,20*log10(abs(h7)),b); grid
plot(w,gabh,r); plot(w,gabl,r);
figure; plot(w,unwrap(angle(h11)),g); title(Phase Filtre RIF 2nd ordre);
grid hold on; plot(w,unwrap(angle(h7)),b);
h11 = filter(b11, 1, delta);
h7 = filter(b7, 1, delta);
figure; subplot(2,1,1); stem(n,h11,g); subplot(2,1,2); stem(n,h7,b)
figure; zplane(b11,1); figure; zplane(b7,1);
% Invariance impulsionnelle
figure; subplot(2,1,1);
plot(w,20*log10(abs(hef)),b); title(Log Magnitude Filtre RIF echantillonage frequentiel);
axis([0 pi -40 2]); subplot(2,1,2); plot(w,unwrap(angle(hef)),b);
title(Phase Filtre RIF echantillonage frequentiel);
figure; stem(n,abs(bef),b);
grid
%Numrateur
%Dnominateur
L = 256;
[h,w] = freqz(b,a,L); figure; plot(w,20*log10(abs(h))); title(Log Magnitude Filtre RII 2nd ordre
axis([0 pi -40 6]); grid
gabh = [Delta1*ones(NFs,1); Delta2*ones(L-NFs,1)];
gabl = [-Delta1*ones(NFp,1); -5000*ones(L-NFp,1)]; hold on;
% Arrondi sur b bits en Ca2 (1 bit de signe)
bit=8;
%Nombre de bits
q=2^(1-bit);
bQ8= ???;
%Quantification des coefficients
aQ8= ???;
%Quantification des coefficients
[hQ8,w] = freqz(bQ8,aQ8,L); plot(w,20*log10(abs(hQ8)),g);
bit=4;
%Nombre de bits
q=2^(1-bit); bQ4=???; aQ4= ???; [hQ4,w] = freqz(bQ4,aQ4,L);
plot(w,20*log10(abs(hQ4)),c);
plot(w,gabh,r); plot(w,gabl,r); legend(Prcision infinie,8 bits,4 bits);
figure; zplane(b,a); zero = roots(b); pole = roots(a); figure;
zplane(bQ8,aQ8); figure; zplane(bQ4,aQ4);
Convolution Discrete
close all;
% II.4 Convolution
N=11; M=7;
L=N+M-1; n=0:L-1;
h = [0; 0.1; 0.2; 0.3; 0.2; 0.1; 0; zeros(L-M,1)];
x = [ones(N,1); zeros(L-N,1)];
y1 = conv(x, h);
figure; stem(n,h,r); hold on; stem(n,x,b); stem(n,y1(1:L),k);
......... A COMPLETER
Analyse spectrale
% nombre dechantillons
% vecteur des indices (nombres entiers)
a = 12;
nu_o = 50;
% amplitude de la sinusode
% frquence de la sinusode
nu_e = 300;
f_o = nu_o/nu_e;
T_e = 1/nu_e;
nT_e = n*T_e;
%
%
%
%
frquence dchantillonnage
frquence normalise du signal
priode dchantillonnage
vecteur des instants (en seconde)
y_n = cos(2*pi*f_o*n);
figure; subplot(3,1,1) ; stem(0:N-1+5,[y_n, zeros(1,5)]); axis([0 N-1+5 -1 1]);
title(Fonction cos(2pi f_o n) chantillonne tronque sur N=32 points); ylabel(x_N(n)); grid
fmin = -1/2; fmax = 1/2;
pas_f = (fmax-fmin)/1024 ; f=(fmin:pas_f:fmax-pas_f) ;
Y = fft(y_n,1024);
subplot(3,1,2) ; plot(f,abs(fftshift(Y)))
title(X_N(e^{j2pif})=TF\{x_N(n(\}) ; grid
Y = fft(y_n.*hamming(N),1024);
hold on; plot(f,abs(fftshift(Y)),r);
Dcimation et Interpolation