Title: Comment tailler les filtres sur mesure
1Comment tailler les filtres sur mesure
Séance 8, nouvelle application des filtres, 1
heure Version samedi 10 avril 2004 Auteur
Jean-Paul Stromboni
Contenu de la séance
- on montre comment on peut déterminer un filtre
FIR à partir de la réponse impulsionnelle
souhaitée - on crée un filtre passe-bas de réponse harmonique
imposée - on crée un filtre passe-bande en décalant le
filtre passe bas - On montre comment appliquer un tel filtre avec
Matlab et lévaluer avec Goldwave - On utilise cette technique pour définir un banc
de 4 filtres
Savez vous répondre aux questions suivantes ?
Comment calculer N pour définir un filtre passe-bas fc 2200Hz si fe44100Hz et R128 Si h est la réponse impulsion-nelle du filtre ci-contre, que dire du filtre de réponse g
Un filtre a pour réponse impulsionnelle pour et 0 sinon. Donner son EaD et sa fonction de transfert en z ? Que réalisent les instructions suivantes ? fr 0R-1fe/R specabs(fft(h)) plot(fr,spec)
passe dans un banc de M2 filtres, quels sont les signaux des canaux si ? Représenter le découpage en fréquence réalisé par un banc de 3 filtres sachant que
2Pour découper avec précision le spectre dun
signal, il faut créer le filtre adéquat
- Quand lobjectif est de découper précisément le
spectre dun signal audio, par exemple dans un
banc de filtres, on utilise un filtre linéaire et
stationnaire, soit dans le domaine fréquentiel - est la transformée de Fourier du
signal audio à modifier, soit - est celle du signal filtré
- est la réponse
harmonique du filtre, cest aussi la transformée
de Fourier de la réponse impulsionnelle - Découper le spectre dun signal revient donc à
créer un filtre de réponse harmonique adéquate - Or, les filtres récursifs dordre un et deux
permettent au mieux de fixer 2 ou 3 paramètres,
mais par la forme de la réponse harmonique dans
son entier - On leur préfère donc les filtres non récursifs et
la technique étudiée ci-dessous
3On sait synthétiser un filtre à partir dune
réponse impulsionnelle de durée finie
- Soit la réponse
impulsionnelle à synthétiser, de durée
finie et de longueur R. - Écrivons la relation dentrée sortie du filtre
sous la forme dun produit de convolution - Pour un filtre dont la réponse impulsionnelle est
- , on en déduit
- La longueur du filtre est R4
- La durée de la réponse impulsionnelle est
- lEaD
- Et la fonction de transfert
Appliquer à
4Imposer la réponse harmonique dun filtre, cest
imposer sa réponse impulsionnelle.
Soit la réponse harmonique imposée définie à
partir de R points de fréquence. Cest la
transformée de Fourier rapide de la réponse
impulsionnelle recherchée où ifft est la fft
inverse. Même si Hk est réelle, hn peut être
dotée dune partie imaginaire pure, ce qui est à
exclure pour une équation aux différences à
coefficients réels Pour assurer hn réelle, on
démontre en utilisant la définition de ifft quil
faut imposer Hk paire
Concevoir Hk pour un filtre passe bas de longueur
16 avec fc1000Hz et fe8000Hz
5Matlab peut calculer les coefficients du filtre
si on spécifie la réponse harmonique
définir et tracer RH R32 fe8000 fc1000 N
fix(fcR/fe) n0R-1 fr nfe/R-fe/2 Hones
(1,N1), ... zeros(1,R-2N-1),...
ones(1,N) stem(fr,fftshift(H))
calcul et tracé de hn hfftshift(real(ifft(H)))
stem((n-R/2)/fe,h)
calcul et tracé de RH specabs(fft(h,R)) stem(f
r,fftshift(spec)) xlabel('frequence
(Hz)') ylabel('Réponse harmonique') grid on
Décrire le filtre réalisé
6Le filtre précedent nest pas rectangulaire !
Ici, Matlab calcule plus de points (courbe rouge)
sur la réponse harmonique du filtre précédent
hold on fr20R2-1fe/R2-fe/2 spec2
abs(fft(h,5R)) plot(fr2,fftshift(spec2),'r')
Voici ce qui advient si on arrondit la forme de
la réponse harmonique
Hones(1,N-1),0.9,0.5,0.1,zeros(1,R-2N-3),
0.1,0.5,0.9,ones(1,N-2)
Conclure
7Pour obtenir des filtres passe-bande, on décale
le filtre passe bas précédent
La relation ci-dessus, tirée de la définition de
ifft, détermine à partir de hn la réponse
impulsionnelle dun filtre passe bande. On
vérifie avec Matlab
Quel est le type de ce filtre, son gain statique,
quel est le filtre passe bas que lon a décalé ?
8Appliqué à un signal audio, un tel filtre en
découpe le spectre avec précision
- lecture du son à filtrer
- e,fe,bwavread ('piano.wav')
- définition du filtre
- R256 longueur du filtre
- fc500 bande passante
- f01500 fréquence centrale
- N fix(fcR/fe)
- Hones(1,N-1),0.9,0.5,0.1,...
- zeros(1,R-2N-3),0.1,0.5,...
- 0.9,ones(1,N-2)
- réponse impulsionnelle
- hfftshift(real(ifft(H)))
- filtre 2cos(2pi0R-1f0/fe).h
- filtrage du signal audio
- yfilter( filtre,1,e)
- wavwrite(y,fe,b,'pianofiltre.wav')
- calcul de lénergie du signal
- E(yy)/2
Ce script Matlab applique un filtre passe bande
dont la forme est donnée par H au son piano.wav
Voici les spectrogrammes de piano.wav suivi de
pianofiltre.wav calculés et tracés par Goldwave
9Énumerer les particularités du groupe de quatre
filtres créés ci-dessous par Matlab
comment créer un banc de quatre filtres avec
Matlab e,fe,bwavread ('BBC.wav') R 128 M
4 N R/(4M) n0R-1 Hones(1,N-1),0.9,0.5,0.
1, zeros(1,R-2N-3),0.1,0.5,0.9,
ones(1,N-2) hfftshift(real(ifft(H))) for
j0M-1 réponses impulsionnelles des filtres
bande(j1,)2cos((2j1)npi/(2M)).h end
frnfe/R-fe/2 coul'r','b','g','k','y','m','c'
,'rp' hold on for j0M-1 calcul et tracé des
réponses harmoniques stem(fr,abs(fftshift(f
ft(bande(j1,)))),coul(j1)) end xlabel('fréquenc
e (Hz)') ylabel('Réponse harmonique') grid on