La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

S.S.I., ESSI1, samedi 10 avril 2004 Page 1 Comment tailler les filtres sur mesure Séance 8, nouvelle application des filtres, 1 heure Version : samedi.

Présentations similaires


Présentation au sujet: "S.S.I., ESSI1, samedi 10 avril 2004 Page 1 Comment tailler les filtres sur mesure Séance 8, nouvelle application des filtres, 1 heure Version : samedi."— Transcription de la présentation:

1 S.S.I., ESSI1, samedi 10 avril 2004 Page 1 Comment 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 fe=44100Hz et R=128 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= [0:R-1]*fe/R spec=abs(fft(h)) plot(fr,spec) passe dans un banc de M=2 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

2 S.S.I., ESSI1, samedi 10 avril 2004 Page 2 Pour 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

3 S.S.I., ESSI1, samedi 10 avril 2004 Page 3 On 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 R=4 La durée de la réponse impulsionnelle est lEaD Et la fonction de transfert Appliquer à :

4 S.S.I., ESSI1, samedi 10 avril 2004 Page 4 Imposer 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 H k est réelle, h n peut être dotée dune partie imaginaire pure, ce qui est à exclure pour une équation aux différences à coefficients réels; Pour assurer h n réelle, on démontre en utilisant la définition de ifft quil faut imposer H k paire : Concevoir Hk pour un filtre passe bas de longueur 16 avec fc=1000Hz et fe=8000Hz

5 S.S.I., ESSI1, samedi 10 avril 2004 Page 5 Matlab peut calculer les coefficients du filtre si on spécifie la réponse harmonique Décrire le filtre réalisé %définir et tracer RH R=32; fe=8000; fc=1000; N = fix(fc*R/fe); n=0:R-1; fr= n*fe/R-fe/2; H=[ones(1,N+1),... zeros(1,R-2*N-1),... ones(1,N)]; stem(fr,fftshift(H)) % calcul et tracé de hn h=fftshift(real(ifft(H))); stem((n-R/2)/fe,h) % calcul et tracé de RH spec=abs(fft(h,R)); stem(fr,fftshift(spec)) xlabel('frequence (Hz)') ylabel('Réponse harmonique') grid on

6 S.S.I., ESSI1, samedi 10 avril 2004 Page 6 Le filtre précedent nest pas rectangulaire ! Conclure : Ici, Matlab calcule plus de points (courbe rouge) sur la réponse harmonique du filtre précédent : H=[ones(1,N-1),0.9,0.5,0.1,zeros(1,R-2*N-3), 0.1,0.5,0.9,ones(1,N-2)]; Voici ce qui advient si on arrondit la forme de la réponse harmonique : hold on fr2=[0:R2-1]*fe/R2-fe/2; spec2= abs(fft(h,5*R)); plot(fr2,fftshift(spec2),'r')

7 S.S.I., ESSI1, samedi 10 avril 2004 Page 7 Pour obtenir des filtres passe-bande, on décale le filtre passe bas précédent Quel est le type de ce filtre, son gain statique, quel est le filtre passe bas que lon a décalé ? La relation ci-dessus, tirée de la définition de ifft, détermine à partir de h n la réponse impulsionnelle dun filtre passe bande. On vérifie avec Matlab :

8 S.S.I., ESSI1, samedi 10 avril 2004 Page 8 Appliqué à un signal audio, un tel filtre en découpe le spectre avec précision % lecture du son à filtrer [e,fe,b]=wavread ('piano.wav'); % définition du filtre R=256; % longueur du filtre fc=500; % bande passante f0=1500; % fréquence centrale N = fix(fc*R/fe); H=[ones(1,N-1),0.9,0.5,0.1,... zeros(1,R-2*N-3),0.1,0.5, ,ones(1,N-2)]; % réponse impulsionnelle h=fftshift(real(ifft(H))); filtre = 2*cos(2*pi*[0:R-1]*f0/fe).*h; % filtrage du signal audio y=filter( filtre,1,e); wavwrite(y,fe,b,'pianofiltre.wav'); % calcul de lénergie du signal E=(y*y)/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 S.S.I., ESSI1, samedi 10 avril 2004 Page 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,b]=wavread ('BBC.wav'); R= 128; M= 4; N= R/(4*M); n=0:R-1; H=[ones(1,N-1),0.9,0.5,0.1, zeros(1,R-2*N-3),0.1,0.5,0.9, ones(1,N-2)]; h=fftshift(real(ifft(H))); for j=0:M-1 % réponses impulsionnelles des filtres bande(j+1,:)=2*cos((2*j+1)*n*pi/(2*M)).*h; end fr=n*fe/R-fe/2; coul=['r','b','g','k','y','m','c','rp']; hold on for j=0:M-1 % calcul et tracé des réponses harmoniques stem(fr,abs(fftshift(fft(bande(j+1,:)))),coul(j+1)) end xlabel('fréquence (Hz)') ylabel('Réponse harmonique') grid on


Télécharger ppt "S.S.I., ESSI1, samedi 10 avril 2004 Page 1 Comment tailler les filtres sur mesure Séance 8, nouvelle application des filtres, 1 heure Version : samedi."

Présentations similaires


Annonces Google