Vous êtes sur la page 1sur 2

Annee 2012-2013 4 Universite Paul Sabatier Annee 2012-2013 1 Universite Paul Sabatier

Wn bande passante du filtre (frequence haute de la bande


passante pour un passe-bas ; frequence basse de la bande
subplot(1,2,2); plot(f(1:N/2),abs(X(1:N/2)));
xlabel(frequence f), ylabel(X(f));
Matlab et le traitement du signal
300
passante pour un passe-haut ; frequences basse et haute 1

de la bande passante pour un passe-bande ; frequences 0.8


Table des matieres N elements (signal de duree N
fe ). Le vecteur des temps qui
250
basse et haute de la bande coupee pour un coupe-bande). 0.6
lui est associe est :
Les frequences de Wn sont normalisees par rapport a la 0.4 200 1 Representation des signaux et systemes 1

b(f )
x(t)
frequence de Nyquist. 0.2
1.1 Temps . . . . . . . . . . . . . . . . . . . . . 1 >> t = (0:N-1)/fe;

x
0 150
1.2 Autocorrelation . . . . . . . . . . . . . . . . 1
Rp attenuation maximale (en dB) dans la bande pas- 0.2
1.3 Fonction de transfert . . . . . . . . . . . . . 1 1.2 Autocorrelation
sante. 0.4 100

0.6
Rs attenuation minimale (en dB) dans la bande coupee. 50
2 Representations frequentielles 2 Lestimation de lautocorrelation dun signal ou de linter-
0.8
2.1 Signaux . . . . . . . . . . . . . . . . . . . . 2 correlation de deux signaux de longueur N peut etre effec-
1
0 2.2 Systemes . . . . . . . . . . . . . . . . . . . 2 tuee avec la fonction xcorr :
3.3.5 Estimation de lordre des filtres 0 0.02 0.04
temps t
0.06 0 2000
frquence f
4000

% Synthese du filtre passe bas 3 Filtrage et synthese de filtres 2 >> Cxy = xcorr(x,y,option);
Enfin, Matlab, possede des fonctions permettant destimer % (RIF moindres carres) 3.1 Filtrage . . . . . . . . . . . . . . . . . . . . 2
lordre minimal necessaire pour la construction dun filtre % Bande passante [0, 200 Hz] 3.2 Synthese filtres RIF . . . . . . . . . . . . . 2 Cest un vecteur de longueur 2N-1 tel que le Nieme ele-
passe-bas ou passe bande entrant dans un gabarit donne : % Bande coupee [400Hz, 4000Hz] 3.2.1 Troncature de la Rep. Impuls. . . . . 2 ment corresponde a la correlation en 0. si option nest pas
>> [n, Wn] = buttord(Wp,Ws,Rp,Rs) ; % Reponse impulsionnelle 3.2.2 Echantillonnage de la Rep. en Freq. 2 donne, xcorr estime la correlation non normalisee :
>> [n, Wn] = cheb1ord(Wp,Ws,Rp,Rs) ; 3.2.3 Moindres Carres . . . . . . . . . . . 2  PN n
h = firls(39,[0 500 750 Fe/2]/Fe*2,[1 1 0 0]);
k=1 x [k]y[k + n] si n 0

un
>> [n, Wn] = ellipord(Wp,Ws,Rp,Rs) ; % Reponse en frquence 3.2.4 Methode de Remez . . . . . . . . . . 3 Cx,y [n] =
Cx,y [n] si n < 0
[H, freq] = freqz(h,1,512,Fe); 3.3 Synthese de filtres RII . . . . . . . . . . . . 3
Wp bande passante.
% Affichage 3.3.1 Synthese de filtres analog. passe-bas 3 option peut prendre les valeurs :
Ws bande coupee. subplot(1,2,1); plot(h); 3.3.2 Transformation des frequences . . . 3 biased pour lestimateur biaise de la correlation :
3.3.3 Discretisation des filtres . . . . . . . 3
Rp attenuation maximale (en dB) dans la bande pas- xlabel(echantillon), ylabel(h[n]); b 1 un
3.3.4 Synthese complete des filtres . . . . 3 Cx,y [n] = Cx,y [n].
sante. subplot(1,2,2); plot(freq,20*log10(abs(H))); N
3.3.5 Estimation de lordre des filtres . . . 4
xlabel(frequence f), ylabel(H(f)); unbiased pour lestimateur non biaise de la correla-
Rs attenuation minimale (en dB) dans la bande coupee. 0.16 20

0.14 4 Exemple 4 tion :


n ordre du filtre. nb 1
0.12
0
Cx,y [n] = C un [n].
|N n| x,y
Wn frequence propre du filtre numerique. Pour un filtre 0.1 Matlab et sa bote a outils Signal Processing, contiennent
20
coeff pour laquelle la correlation est normalisee de
h(f )
h[n]

passe-bas Wp et Ws sont les frequences hautes de la bande 0.08 un grand nombre de fonctionnalites concernant : c
b facon a ce que Cx,y (0) = 1.
passante et basse de la bande coupee. Pour un filtre 0.06 40
la generation de signaux ;
passe-bande, Wp contient les frequences basse et haute 0.04

de la bande passante et Ws les frequences haute et basse 0.02


60 la representation des signaux (Transformee de Fou- 1.3 Fonction de transfert
de la bande coupee. 0
rier Discrete FFT, Transformee en Cosinus Discrets
80
DCT. . . ) ; La fonction de transfert (transformee de Laplace de la re-
Attention, les frequences sont normalisees par rapport a 0.02
ponse impulsionnelle) dun filtre analogique secrit sous
la frequence de Nyquist = f2e . 0.04 100 lanalyse des signaux (statistique, analyse spectrale pa-
0 20 40 0 2000 4000 la forme :
Pour les filtres passe-haut et coupe-bande, leur ordre peut chantillon frquence f rametrique. . . ) ;
% Filtrage du signal b0 sM + b1 sM1 + + bM1 s + bM
etre calcule de la meme facon que pour les filtres passe-bas la representation des systemes lineaires (fonction de F (s) = N
y = filter(h,1,x); s + a1 sN 1 + + aN 1 s + aN
et passe-bande en renversant les frequences de 0 vers 1 et transfert, poles et zeros, espace detat. . . ) ;
Y = fft(y); ou sous la forme :
de 1 vers 0. (e.g. lordre dun passe-haut Wp=0.2, Ws=0.1
% Affichage lanalyse des systemes (reponse impulsionnelle, reponse PM
est le meme que celui dun passe-bas Wp=0.8, Ws=0.0). k=1 (s zk )
subplot(1,2,1); plot(t,y); en frequence. . . ) ; F (s) == K PN .
xlabel(temps t), ylabel(y(t)); le filtrage et la synthese de filtres. k=1 (s pk )

4 Exemple subplot(1,2,2); plot(f(1:N/2),abs(Y(1:N/2))); La fonction de transfert (transformee en z de la re-


Nous nous interesserons ici uniquement aux fonctions utiles
xlabel(frequence f), ylabel(Y(f)); ponse impulsionnelle) dun filtre numerique secrit quant
pour la representation frequentielle des signaux et des sys-
% Generation du signal a elle :
300 temes lineaires et aux fonctions de filtrage et de synthese PM
Fe = 8e3;
de filtres. b0 + b1 z 1 + + bM z M k=1 (z zk )
1
N = 512; 0.8 250 F (z) = = K PN .
t = (0:N-1)/Fe; 1 + a1 z + + aN z
1 N
k=1 (z pk )
0.6

x = square(2*pi*Fe*t/50); 0.4 200 Ces systemes peuvent donc se representer dans Matlab,
yb(f )

1 Representation des signaux et


y(t)

0.2
% TFD sur [0, Fe] avec les vecteurs du denominateur a=[1, a1 ,...aN ] et
0 150
X = fft(x); 0.2 systemes du numerateur b=[b0, b1 ,...bM ] ou par le gain K et
f = (0:N-1)/N*Fe; 0.4 100 les vecteurs des poles p=[p0, p1 ,...pM ] et des zeros
0.6
1.1 Temps z=[z0, z1 ,...zM ].
% Affichage 0.8 50
subplot(1,2,1); plot(t,x); Un filtre numerique a reponse impulsionnelle finie (RIF)
1
xlabel(temps t), ylabel(x(t)); 0
Un signal numerique echantillonne a la frequence fe se re- ayant son denominateur a 1 sera entierement caracterise
0 0.02 0.04
temps t
0.06 0 2000
frquence f
4000
presente naturellement dans Matlab, comme un vecteur de par sa reponse impulsionnelle (h = b).

Herve Carfantan http://userpages.irap.omp.eu/~hcarfantan/ Herve Carfantan http://userpages.irap.omp.eu/~hcarfantan/


Annee 2012-2013 2 Universite Paul Sabatier Annee 2012-2013 3 Universite Paul Sabatier

2 Representations frequentielles 3.2.1 Troncature de la Reponse Impulsionnelle m est le vecteur des amplitudes de la reponse en frequence % Lowpass -> Bandpass (p 1 p
B ( 0 + 0
p ))
du filtre ideal aux frequences fn. >> [bt, at] = lp2bp(b,a,W0,Bw) ;
2.1 Signaux La fonction fir1 synthetise un filtre RIF simple (defini
Voir laide en ligne pour plus de details. . .
par une seule bande passante ou coupee) par troncature et % Lowpass -> bandstop (p B 1
)
La Transformee de Fourier Discrete dun signal de N points fenetrage de la reponse impulsionnelle du filtre numerique
p
0

+ p0
est calculee par un algorithme rapide (Fast Fourier Trans- ideal : 3.2.4 Methode de Remez >> [bt, at] = lp2bs(b,a,W0,Bw) ;
form FFT) :
>> h = fir1(n,fn,type,window) ; La fonction remez synthetise un filtre RIF approchant au Si b est la pulsation basse de coupure et h la pulsation
>> X = fft(x) ;
n est lordre du filtre (longueur de la RI moins un). mieux, au sens du minimax (norme L ), la reponse en haute de coupure, alors la pulsation propre du filtre 0 et
Cest egalement un signal (a valeurs complexes) de N points frequence du filtre ideal. la largeur de bande du filtre sont donnes par : B = h b

echantillonnes a la frequence fNe . Le vecteur des frequences Les frequences fn sont normalisees par rapport a la fre-
>> h = remez(n,fn,m) ; et 0 = h b .
qui lui est associe est : quence de Nyquist (fn= f / f2e , 0 fn 1). fn indique la
frequence de coupure pour les passe-bas et passe-haut, Les parametres sont les memes que pour firls.
>> f = (0:N-1)/N*fe; et les frequences de coupures basse et haute pour les 3.3.3 Discretisation des filtres
La fonction remezord permet de plus destimer lordre ne-
Rappelons que ce signal est de periode fe ; on peut le passe-bande et coupe-bande. cessaire a la methode de remez pour construire un filtre de La discretisation des filtres analogiques permet dobtenir
representer sur lintervalle [ f2e , f2e ] grace a la fonction La chane de caractere type precise le type de filtre. deviation maximale donnee. les coefficients des filtres numeriques a partir de ceux du
fftshift (qui ne fait quun decalage des vecteurs et aucun high pour passe-haut, stop pour coupe-bande, type Voir laide en ligne pour plus de details. . . filtre analogiques. Deux techniques sont disponibles a cette
calcul de fft) : omis pour les passe-bas et passe-bande. fin dans Matlab :
>> Y = fftshift(X); 3.3 Synthese de filtres RII Discretisation par invariance de la reponse impulsion-
Le vecteur window de longueur n+1, correspond a la fe-
nelle :
Le vecteur des frequences qui lui est associe est alors : netre prise en compte (par defaut fenetre de Hamming).
Les principales methodes de synthese de filtres a reponse >> [bd, ad] = impinvar(b, a, fe) ;
>> f = (0:N-1)/N*fe - fe/2; Les fonctions Matlab, disponibles pour creer des fe-
impulsionnelle infinie (RII) procedent par discretisation Ou fe est la frequence dechantillonnage.
netres sont : bartlett, blackman, boxcar (rectangu-
dun filtre analogique. Discretisation par transformation bilineaire : (approxi-
laire), chebwin (chebychev), Hamming, hanning, kaiser,
mation p T2e 1z
1
2.2 Systemes triang (triangulaire). 1+z 1 )
Voir laide en ligne pour plus de details. . . 3.3.1 Synthese de filtres analogiques passe-bas >> [bd, ad] = bilinear(b, a, fe) ;
La reponse en frequence dun systeme analogique est don-
nee par : Les fonctions suivantes renvoient les poles (p) zeros (z) et Attention, la transformation bilineaire provoque une de-
3.2.2 Echantillonnage de la Reponse en Fre- gain (k) des filtres analogiques passe-bas normalises (pul- formation des frequences (soit fa la frequence analogique
>> H=freqs(b,a,w);
quence sation de coupure unite) : et fn la frequence numerique) :
H est la reponse en frequence aux pulsations donnees dans
% Butterworth fe fa
le vecteur w (en radian par seconde). La fonction fir2 synthetise un filtre RIF par echantillon- fn = arctan( )
>> [z, p, k] = buttap(n) ; fe
La reponse en frequence dun systeme numerique est don- nage de la reponse en frequence du filtre analogique ideal
% Chebychev et fe fn
nee par : et fenetrage de la reponse impulsionnelle du filtre ainsi fa = tan( ).
% Oscillations inferieures a Rp dB fe
construit.
>> H=freqz(b,a,f,fe); % en bande passante
>> h = fir2(n,fn,m,window) ; Il est donc necessaire de pre-deformer le gabarit du filtre
H est la reponse du systeme aux frequences donnees dans le >> [z, p, k] = cheb1ap(n, Rp) ;
analogique pour obtenir le filtre numerique desire.
vecteur f (en Hertz) et fe la frequence dechantillonnage. n est lordre du filtre (longueur de la RI moins un). % Oscillations au deca de Rs dB
% en bande coupee
Voir laide en ligne pour plus de details. . . fn est le vecteur des frequences normalisees (0 fn 1) >> [z, p, k] = cheb2ap(n, Rs) ; 3.3.4 Synthese complete des filtres
Remarque : Matlab, travaille en pulsation pour les sys- definissant le filtre ideal comme lineaire par morceaux. % Elliptique : oscillations inferieures
temes analogiques et en frequence (et meme en frequence % a Rp dB en bande passante et au deca Matlab, propose des fonctions dans lesquelles la synthese
m est le vecteur des amplitudes, aux frequences donnees
normalisee) pour les systemes numeriques. % de Rs dB en bande coupee complete du filtre numerique est effectuee :
par fn, de la reponse en frequence du filtre ideal.
>> [z, p, k] = ellipap (n, Rp, Rs) ;
Voir laide en ligne pour plus de details. . . % Butterworth
3 Filtrage et synthese de filtres Pour obtenir une representation de ces filtres analogiques >> [b, a] = butter(n,Wn,type) ;
3.2.3 Moindres Carres en terme des numerateurs et denominateurs de leur fonc- % Chebychev
3.1 Filtrage tion de transfert (transformee de Laplace de leur reponse % Oscillations de Rp dB en bande
La fonction firls synthetise un filtre RIF approchant au impulsionnelle) : % passante
Le filtrage du vecteur x par le filtre numerique defini par >> [b, a] = cheby1(n,Rp,Wn,type) ;
mieux, au sens des moindres carres (norme L2 ), la reponse >> [b, a] = zp2tf(z,p,k) ;
a et b est effectue par : % Oscillations au deca de Rs dB
en frequence du filtre analogique ideal.
>> y = filter(b,a,x); % en bande coupee
>> h = firls(n,fn,m) ; 3.3.2 Transformation des frequences >> [b, a] = cheby2(n,Rs,Wn,type) ;
Remarque : Les conditions initiales de lequation de recu-
n est lordre du filtre (longueur de la RI moins un). % Elliptique : oscillations de Rp dB en
rence peuvent etre donnees en entree de la fonction filter. Pour transformer les filtres passe-bas en tout type de
% bande passante et au deca de Rs dB en
Elles se calculent par la fonction filtic. fn est le vecteur des frequences normalisees (0 fn 1) filtres :
% bande coupee
definissant le filtre ideal. % Lowpass -> Lowpass (p p0 )
>> [b, a] = ellip(n,Rp,Rs,Wn,type) ;
3.2 Synthese filtres RIF Attention, contrairement a fir2, ces frequences sont >> [bt, at] = lp2lp(b,a,W0) ;
prises deux par deux dans firls, permettant ainsi de (p 0 Ces fonctions donnent directement les coefficients a et b
% Lowpass -> Highpass p )
Il existe differentes methodes de synthese de filtres RIF definir des bandes de frequences ou le filtre ideal nest >> [bt, at] = lp2hp(b,a,W0) ; du filtre numerique a partir de :
approchant un filtre ideal : pas precise (bandes de transition). n ordre du filtre.

Herve Carfantan http://userpages.irap.omp.eu/~hcarfantan/ Herve Carfantan http://userpages.irap.omp.eu/~hcarfantan/