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

Construire et utiliser un banc de filtres

Présentations similaires


Présentation au sujet: "Construire et utiliser un banc de filtres"— Transcription de la présentation:

1 Construire et utiliser un banc de filtres
Jean-Paul Stromboni, Polytech'Nice Sophia, S.I. 3ème année cours 7, novembre 2015, durée : 50mn, vidéoprojecteur Les objectifs de ce cours : Définir le concept de banc de filtre et d’analyse du signal Expliquer la fonction et l’utilisation d’un banc de filtre Calculer l’énergie associée à un signal Construire un banc de filtres à partir d’un filtre générateur Créer et utiliser un banc de filtres : un exemple avec Scilab. TD n°7 : création et utilisation d’un banc de filtres en Scilab Qu’est ce qu’un banc de filtres ? Banc de filtres : il s’agit d’un ensemble de M filtres de même taille R opérant à la même fréquence d’échantillonnage fe, et conçus pour analyser automatiquement la composition fréquentielle d’un signal audio présenté à l’entrée du banc de filtre. Analyse d’un signal par un banc de M filtres : consiste à découper le spectre du signal en M bandes de fréquences, ou encore à décomposer le signal analysé en M signaux différents à la sortie des filtres du banc. Reconstitution du signal : l’addition des signaux de sortie des filtres du banc de filtre permet de reconstituer le signal initial.

2 Définition d’un banc de filtres et exemple
Notation : on désigne un filtre de taille R par le vecteur de ses coef-ficients h= (hn, n= 0..R-1) ou par H= (Hk, k= 0..R-1), sa réponse fréquentielle, avec H= fft(h) si h=ifft(H) mais h= fftshift(real(ifft(H))) ! On trace H=abs(fft(h)) ou on calcule H=fft(fftshift(h)) ! Un banc de M filtres sera donc constitué de filtres désignés par hi ou Hi, i = 1 .. M avec Hi= fft(hi) Contrainte de définition d’un banc de filtres : Exemple d’un banc de M=4 filtres de taille R=64 (attention, H1, H2, H3, H4 tracés entre –fe/2 et fe/2)

3 Utilisation d’un banc de filtres
On désigne par le vecteur x = (xn=x(nTe), n= 0..N-1) le signal à l’entrée du banc (x contient N échantillons) et par le vecteur X=fft (x(1:R)) le spectre de x calculé par Transformée de Fourier Discrète (TFD) de taille R x est filtré tour à tour par les M filtres du banc, et on note x1, x2, x3, … xM les signaux filtrés avec : X1+X2+ … +XM= (H1+H2+..+HM)*X= X car H1+ H HM= ones(1,R) donc x1+x2+ … +xM = x Exemple avec M=4: filtre1 filtre2 filtre3 filtre4

4 Découper X en quatre bandes égales, B1, B2, B3 et B4
Exercice : appliquer graphiquement un banc de 4 filtres au signal x de spectre X donné ci-dessous compléter f fe R R/2 R/4 R/8 Découper X en quatre bandes égales, B1, B2, B3 et B4 B1 B1 f f B2 f B3 f B4

5 Définition de l’énergie d’un signal et comparaison des signaux x1, x2, … xM issus du banc de filtres
Définition de l’énergie associée à un signal à partir des échantillons de ce signal : Calcul de l’énergie à partir du spectre (théorème de Parseval) : Appliquer à l’exemple de la page précédente : calculer l’énergie de x, x1, x2, x3 et x4 Quelle est l’erreur faite si on approxime x par x3 ? On perd 10% de l’énergie du signal x, mais on peut com-presser x3 dans un facteur C=4

6 Création d’un banc de filtres par décalages et additions successifs d’un filtre générateur unique
Soit le filtre de vecteur de coefficients h, et de réponse fréquentielle H, donc H=fft(h), length(h)= length(H)= R et hn complexe HkHk-k0 hn réel et Pour décaler de la réponse fréquentielle du filtre H, il suffit de multiplier le coefficient hn par où k0 entier vaut Exemple : k0 =6, R=32, fe=8000 Hz, que vaut f0 ? f0? Hk? Hk-k0? Hk+k0?

7 Exercice : créer les quatre filtres H1, H2, H3 et H4 engendrés de cette manière par H0 pour R=32
k0= fe= H1 f0=500Hz k0=2 H2 f0= k0= H3 f0=2500Hz k0= H4 f0= k0= Comment vérifier que ces quatre filtres constituent bien un banc ?

8 Création d’un banc de filtres et analyse par le banc du signal audio tiré d’un fichier wave
function [s, E, Esignal, fe]=bancfiltres(M, R, fichier, play) //fichier ‘bancfiltres.sce’ //utilisation [s,e,es,fe]=bancfiltres(8,128,'piano.wav',0); [e,fe]=wavread(fichier); N= R/(4*M); 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))); n=0:R-1; for j=0:M-1 bande(j+1,:)=2*cos((2*j+1)*n*%pi/(2*M)).*h; end sfiltre=convol(e,bande(j+1,:)); s(j+1,:)=sfiltre(1:length(e)); wavwrite(s(j+1,:),fe,['s'+string(j+1)+'.wav']); Esignal= e*e'/2; E=diag(s*s')/2; disp(['sum(E):',string(sum(E))]) bar([0:M-1]*fe/(2*M),100*E/Esignal) xtitle(['Analyse de ',fichier],'frequence (Hz)'... ,'energie (% energie totale)') xgrid(); if play then sound(sum(s,1),fe); endfunction Lit le signal audio dans e et fe Crée le filtre générateur h Crée un banc de M filtres à partir du filtre générateur h Filtre e dans sfiltre, réduit length(sfiltre) sauve au format wave Calcule et trace le diagramme des énergies des signaux issus du banc de filtre Joue sum(s,1) si play!=0

9 Étudier le script ‘bancfiltres.sce’ et préciser :
les dimensions des matrices bande et s : le contenu de la ligne bande(1,:) : le contenu de s(1,:) : le contenu de Esignal le contenu de E(1) la raison de la ligne s(j+1,:)=sfiltre(1:length(e)); le contenu du fichier s2.wav ? l’énergie de e conservée selon les bandes de fréquence conservées ci-dessous matrice bande matrice s h1 h2 hM s1 s2 sM Bandes de fréquence Énergie (en % énergie de e) 1 (basse fréquence) E(1) 1 et 2 E(1)+E(2) = 1, 2, 3 1, 2, 3 et 4 1, 2, 3, 4, 5, 6, 7 et 8

10 Application à la compression du signal x dans un rapport C=4 avec une perte d’énergie de 10%
f fe R R/2 R/4 R/8 R/4 f fe R R/2 R/8 R/4 f fe R R/2 R/8 R/4 f fe R R/2 R/8 R/4 f fe R R/2 R/8 En perdant 10% de l’énergie du signal x, on obtient C=4


Télécharger ppt "Construire et utiliser un banc de filtres"

Présentations similaires


Annonces Google