Construire et utiliser un banc de filtres pour analyser le spectre d’un signal

10
S.S.I.I., 2015-16, cours n°7 : Construire et S.S.I.I., 2015-16, cours n°7 : Construire et utiliser un banc de filtres utiliser un banc de filtres Page Page 1 Construire et utiliser un banc de filtres 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 ? Jean-Paul Stromboni, Polytech'Nice Sophia, S.I. 3 ème année cours 7, novembre 2015, durée : 50mn, vidéoprojecteur 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.

description

Construire et utiliser un banc de filtres pour analyser le spectre d’un signal. Jean-Paul Stromboni, Polytech'Nice Sophia, S.I. 3 ème année séance 7, novembre 2012, durée : 50mn, vidéoprojecteur. Les objectifs de ce cours :. Définir le concept de banc de filtre et d’analyse du signal - PowerPoint PPT Presentation

Transcript of Construire et utiliser un banc de filtres pour analyser le spectre d’un signal

Page 1: Construire et utiliser un banc de filtres pour analyser le spectre d’un signal

S.S.I.I., 2015-16, cours n°7 : Construire et utiliser un banc de filtresS.S.I.I., 2015-16, cours n°7 : Construire et utiliser un banc de filtres Page Page 11

Construire et utiliser un banc de filtres

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 ?

Jean-Paul Stromboni, Polytech'Nice Sophia, S.I. 3ème année cours 7, novembre 2015, durée : 50mn, vidéoprojecteur

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.

Page 2: Construire et utiliser un banc de filtres pour analyser le spectre d’un signal

S.S.I.I., 2015-16, cours n°7 : Construire et utiliser un banc de filtresS.S.I.I., 2015-16, cours n°7 : Construire et utiliser un banc de filtres Page Page 22

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 :

.1)/(],1,0[1

M

i ei RkfHRk

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)

1

0

/2)/(R

n

Rnkinek ehRkfHH

Page 3: Construire et utiliser un banc de filtres pour analyser le spectre d’un signal

S.S.I.I., 2015-16, cours n°7 : Construire et utiliser un banc de filtresS.S.I.I., 2015-16, cours n°7 : Construire et utiliser un banc de filtres Page Page 33

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= Xcar H1+ H2+ ...+ HM= ones(1,R)donc x1+x2+ … +xM = x

1..0,)/(1

0

/2

RkeRkfXXX

R

n

Rnkiek

Exemple avec M=4:

filtre1 filtre2 filtre3 filtre4

NnnTxx e ,0),(

NnnTxx e ,0),(11 NnnTxx e ,0),(44 2x 3x

XHXxx

XHXxx

XHXxx

MMTFD

Mh

TFDh

TFDh

M

222

111

2

1

Page 4: Construire et utiliser un banc de filtres pour analyser le spectre d’un signal

S.S.I.I., 2015-16, cours n°7 : Construire et utiliser un banc de filtresS.S.I.I., 2015-16, cours n°7 : Construire et utiliser un banc de filtres Page Page 44

f

Exercice : appliquer graphiquement un banc de 4 filtres au signal x de spectre X donné ci-dessous

X

1,0,1,0, RmXXRnxx mTFD

n

f0 fe

R

R/2

R/4R/8

compléter

f

1X

2X

3X

4X

Découper X en quatre bandes égales, B1, B2, B3 et B4

f

f

1,0,1..0, 1111 RmXXRnxx mTFD

n

1x

B1 B1

B2 B2

B3 B3

B4

3x

4x

2x

Page 5: Construire et utiliser un banc de filtres pour analyser le spectre d’un signal

S.S.I.I., 2015-16, cours n°7 : Construire et utiliser un banc de filtresS.S.I.I., 2015-16, cours n°7 : Construire et utiliser un banc de filtres Page Page 55

Définition de l’énergie d’un signal et comparaison des signaux x1, x2, … xM issus du banc de filtres

1

0

2

2

1)(,0,

N

n nn xxENnxx

1

0

2

2

1)(

1,0,]1,0[,

N

m m

mTFD

n

XN

xE

NmXXNnxx

)(/)(

)(

)(

)(

)(

)(

3

4

3

2

1

xExE

xE

xE

xE

xE

xE

Appliquer à l’exemple de la page précédente : calculer l’énergie de x, x1, x2, x3 et x4

Définition de l’énergie associée à un signal à partir des échantillons de ce signal :

216

32)

4

3

2

1

4

12

8

141(

22

2

2

2

222

RR

R

R

16

29

32

58 RR

RR 1.032

3

32

3R

%9064

58

0

Calcul de l’énergie à partir du spectre (théorème de Parseval) :

On perd 10% de l’énergie du signal x, mais on peut com-presser x3 dans un facteur C=4

3444

333 xxxxxx dec

Bsed

B

Quelle est l’erreur faite si on approxime x par x3 ?

Page 6: Construire et utiliser un banc de filtres pour analyser le spectre d’un signal

S.S.I.I., 2015-16, cours n°7 : Construire et utiliser un banc de filtresS.S.I.I., 2015-16, cours n°7 : Construire et utiliser un banc de filtres Page Page 66

Pour décaler de la réponse fréquentielle du filtre H, il suffit de multiplier le coefficient hn paroù k0 entier vaut

Création d’un banc de filtres par décalages et additions successifs d’un filtre générateur unique

00

00

0

0

0

0

)2

cos(2 0/2/2

0

1

0

/)(2

/2

0

1

0

/)(2

/2

kkkkk

nRink

nRink

nnn

kk

R

n

Rkknink

Rinknn

kk

R

n

Rkknink

Rinknn

HHHR

nkhehehwh

HehH

ehh

HehH

ehh

Exemple : k0 =6, R=32, fe=8000 Hz, que vaut f0 ?

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

Rfkf e /00

1

0

/2 1...0,R

n

Rinknk RkehH

)/2cos(2 0 RnkefRfk /00

f0?Hk?Hk-k0?Hk+k0?

hn réel

et

HkHk-k0

hn complexe

Page 7: Construire et utiliser un banc de filtres pour analyser le spectre d’un signal

S.S.I.I., 2015-16, cours n°7 : Construire et utiliser un banc de filtresS.S.I.I., 2015-16, cours n°7 : Construire et utiliser un banc de filtres Page Page 77

Exercice : créer les quatre filtres H1, H2, H3 et H4 engendrés de cette manière par H0 pour R=32

H0f0=k0=fe=

H1f0=500Hzk0=2

H2f0=k0=

H3f0=2500Hzk0=

H4f0=k0=

Comment vérifier que ces quatre filtres constituent bien un banc ?

Page 8: Construire et utiliser un banc de filtres pour analyser le spectre d’un signal

S.S.I.I., 2015-16, cours n°7 : Construire et utiliser un banc de filtresS.S.I.I., 2015-16, cours n°7 : Construire et utiliser un banc de filtres Page Page 88

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 for j=0:M-1 sfiltre=convol(e,bande(j+1,:)); s(j+1,:)=sfiltre(1:length(e)); wavwrite(s(j+1,:),fe,['s'+string(j+1)+'.wav']); end 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); end endfunction

0 500 1000 1500 2000 2500 3000 35000

10

20

30

40

50

60

70

80

fréquence (Hz)

éner

gie

(% é

nerg

ie tot

ale)

Analyse de piano.wav

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

Lit le signal audio dans e et fe

Joue sum(s,1) si play!=0

Page 9: Construire et utiliser un banc de filtres pour analyser le spectre d’un signal

S.S.I.I., 2015-16, cours n°7 : Construire et utiliser un banc de filtresS.S.I.I., 2015-16, cours n°7 : Construire et utiliser un banc de filtres Page Page 99

É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

h1

h2

hM

s1

s2

sM

matrice bande matrice s

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

Page 10: Construire et utiliser un banc de filtres pour analyser le spectre d’un signal

S.S.I.I., 2015-16, cours n°7 : Construire et utiliser un banc de filtresS.S.I.I., 2015-16, cours n°7 : Construire et utiliser un banc de filtres Page Page 1010

Application à la compression du signal x dans un rapport C=4 avec une perte d’énergie de 10%

4

4

f0 fe

R

R/2

R/4R/8

R/4

ffe

R

R/2

R/8

R/4

ffe

R

R/2

R/8

R/4

ffe

R

R/2

R/8

R/4

ffe

R

R/2

R/8

3B

34 B

En perdant 10% de l’énergie du signal x, on obtient C=4

3444

333 xxxxxx dec

Bsed

B