1 / 16

Retour sur les filtres et bancs de filtres

Retour sur les filtres et bancs de filtres. Jean-Paul Stromboni, décembre 2007. en résumé . un banc de filtres est conçu pour découper précisément le spectre d'un signal audio pour constituer un banc de filtres, on peut créer et décaler un filtre générateur

luthando
Télécharger la présentation

Retour sur les filtres et bancs de filtres

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Retour sur les filtres et bancs de filtres Jean-Paul Stromboni, décembre 2007

  2. en résumé • un banc de filtres est conçu pour découper précisément le spectre d'un signal audio • pour constituer un banc de filtres, on peut créer et décaler un filtre générateur • un filtre non récursif peut être mis en œuvre à partir de sa seule réponse impulsionnelle • la réponse impulsionnelle d'un filtre linéaire et stationnaire peut être déduite de la réponse harmonique par transformée de Fourier inverse • pour quantifier l'effet d'un filtre sur un signal, on peut considérer l'énergie du signal filtré

  3. 1. définir un filtre quasi rectangulaire à partir de sa réponse harmonique • Quel est le résultat du script MATLAB suivant ? R=32 fe=8000; H=[ones(1,3),.9,.5,.1,zeros(1,21),.1,.5,.9,1,1]; fr=[0:R-1]*fe/R; stem(fr,H) grid xlabel('f (Hz)') title('réponse harmonique H')

  4. qu'est ce qui change si on utilise l'instruction suivante : stem(fr-4000,fftshift(H)) • tracer le résultat • donner • le type du filtre : • sa fréquence de coupure à – 6 dB, soit fc : • sa longueur : • sa largeur (en Hz) à -6 dB : • sa fréquence d'échantillonnage : • sa résolution fréquentielle :

  5. Mon premier banc de filtres ? • tracer la réponse harmonique HH=1-H ci-dessous • préciser : • le type du filtre HH • sa longueur • sa largeur à -6 dB • Pourquoi H et HH constituent ils un banc de filtres ?

  6. 2. mettre le filtre H en œuvre • les instructions suivantes calculent la réponse impulsionnelle h du filtre de réponse harmonique H h=fftshift(real(ifft(H))); stem(h) grid title(['rép. impuls. h, longueur=',num2str(length(h))]) xlabel('indice n de l''échantillon hn') • length(h) = ? • H est il un filtre FIR ou IIR?

  7. Pour appliquer le filtre de réponse impulsionnelle h=(h0,h1,…h31) au signal e de longueur length(e) • retrouver le résultat : sn=h0en+h1en-1+h2en-2+ … + h31en-31 • que réalise le script suivant ? e=0.6*cos(2*pi*1000*t); s=zeros(size(e)); for n=1:length(e) for k=1:R if n-k+1>0, s(n)=s(n)+h(k)*e(n-k+1); end end end • pour filtrer, on utilisera plus aisément l'instruction 'filter' de MATLAB. Explicitez les arguments : s=filter(h,1,e);

  8. 3. exploiter la réponse harmonique • quel est l'effet du script suivant ? fe=8000; t=0:1/fe:2; e=0.6*cos(2*pi*1000*t); s=filter(h,1,e); plot(t,e,t,s) legend('e','s') • que peut on prévoir au vu de H ? • et si la fréquence de e valait 440Hz ? • et si elle valait 1500Hz ?

  9. 4. Calculer l'énergie d'un signal • rappeler la définition de l'énergie du signal e de longueur length(e) : • que donne Ee=e'*e/2 en Matlab selon que size(e)=(16001,1) ou size(e)=(1,16001) ? • avantage selon vous de Ee=sum(e.*e)/2 ?

  10. 5. créer les filtres du banc en décalant la réponse harmonique H • reprendre H représenté entre –fe/2 et fe/2 et • décaler de k0=4 points vers la droite • décaler de k0=4 points vers la gauche • additionner : caractériser le filtre résultat nommé H1

  11. et si on décale maintenant de k0=12 points, quel est le filtre résultat H2 ? • nature de H2, largeur, … • H1 et H2 constituent ils un banc de filtres ?

  12. Pour décaler H de f0, on peut aussi modifier la réponse impulsionnelle h. • Quel est le résultat du script suivant ? • R=32; • n=0:R-1; • k0=4; • h1=2*cos(2*pi*k0*n/R).*h; • subplot(2,1,1) • stem(fr-4000,fftshift(abs(fft(h1)))) • grid • xlabel('f (Hz)') • title('tracé de H1') • subplot(2,1,2) • k0=12; • h2=2*cos(2*pi*k0*n/R).*h; • stem(fr-4000,fftshift(abs(fft(h2)))) • grid • xlabel('f (Hz)') • title('tracé de H2')

  13. Construire un banc de 4 filtres sur le même principe à l'aide de Matlab • quelle est la largeur du filtre générateur ?chaque filtre est de largeurle filtre générateur est de largeurd'où H= [ • calculer la réponse impulsionnelle h associée à H :h=fftshift(real(ifft(H)); • calculer les 4 réponse impulsionnelles dans une boucle et les stocker dans un tableau ri ( ?, ?) :pour H1, k0= (R/4*M) h1n=2cos(2*pi*n*(R/(4*M))/R)hnpour H2, k0= 3*R/(4*M) h2n=2cos(2*pi*n*3*(R/(4*M))/R)hn pour H2, k0= 5*R/(4*M) h2n=2cos(2*pi*n*5*(R/(4*M))/R)hn pour H2, k0= 7*R/(4*M) h2n=2cos(2*pi*n*7*(R/(4*M))/R)hn for k=0:3 ri(k+1,:)=2*cos(2*(2*k+1)*pi*[0:R-1]/(4*M)).*h;end

  14. Construire un banc de 4 filtres sur le même principe à l'aide de Matlab • Tracer les réponses harmoniques des filtres du bancfor k=1:4 stem(fr-fe/2,fftshift(abs(fft(ri(k,:)))); hold onendhold off • Filtrer e dans une boucle et placer les signaux filtrés dans un tableau efiltre(? , ?) for k=1:4 yfiltre(k,:)=filter(ri(k,:),1,e);end • Calculer et tracer les énergies des signaux filtrésE=diag(yfiltre*yfiltre');bar([0:3]*fe/4,100*E/sum(E))grid

  15. analyse de Bbc.wav

  16. Sujet de travaux dirigés • Filtrer : créer un filtre passe bande de longueur R=256, de fréquences de coupure 500Hz et 1000Hz : • d'abord si fe = 8kHz, • puis en prenant en compte de la valeur de fe. On évaluera l'effet de ce filtre, à l'oreille, à l'aide du spectrogramme, et à l'aide de l'énergie. • Banc de filtres : • créer un banc de M=8 filtres permettant d'analyser un signal tiré d'un fichier wave. La longueur des filtres est R=128. • Appliquer le banc de filtres à différents signaux, et négliger les bandes de plus faible énergie, tant que la qualité du signal approximé est jugée bonne.

More Related