Vous êtes sur la page 1sur 5

Filtres numériques

1. FIR (Finite Impulse Response)

2. IIR (Infinit impulse response)

2.1 Exemple de IIR

2.1 a. Réponse du filtre à une impulsion

2.1 b. Fonction de transfert du filtre analogique

Le filtre IIR est l’équivalent numérique du filtre analogique.

Les fonctions de transfert H(s) des filtres analogiques serviront de point de départ pour le
calcul des fonctions de transfert H(z) des filtres numériques, moyennant une transformation
de s vers z. L’expression de permettra d’obtenir les coefficients Ai et Bj des filtres
numériques.

2.2 Fonction de transfert d’un filtre IIR

Y ( z ) B1 + B2 z −1 + ...Bm +1 z − m
H (z) = =
X ( z ) 1 + A2 z −1 + ... + An +1 z − n

2.3 La transformation bilinéaire

2.4 Exercices

Objectif : Filtrer un signal sonore, un sinus noyé dans du bruit (bsin-440.wav).

• Calculer « à la main » les coefficients d’un filtre passe-bande, de type Butterworth.

1
On part de la fonction de transfert d’un filtre passe-bas, H ( s ) = .
s +1

Pour passer d’un passe-bas à un passe-bande, on réalise le changement de variable : on


remplace s par (s2 + ωr2)/sL avec ωr2 = ωA1 ωA2 et L = ωA2 - ωA1

z −1
Pour passer de H(s) à H(z), on réalise le changement de variable s =
z +1

B1 + B2 z −1 + ...Bm +1 z − m
On exprime H(z) sous la forme H ( z ) = pour obtenir les Ai et
1 + A2 z −1 + ... + An +1 z − n
Bj.. Attention, le terme indépendant du dénominateur doit valeur 1, A1 = 1.

On obtient une expression des Ai et Bj en fonction de ωr, L, …


• Dans un programme Matlab (voir ci-dessous):

Calculer les coefficients du filtre pour les fréquences de coupure, fN1 et fN2 et
2π f NiT 1
ω Ai = tan( ),T = .
2 fs

Représenter la fonction de transfert du filtre.

Filtrer le signal sonore (fonction filter) et l’exporter en signal son pour l’écouter…

% ex7.m : filtrage passe-bande IIR

% Lecture du Signal Son : Y


[Y,fs]=audioread('bsin-440.wav'); % Y est un vecteur colonne
Y=Y';
N=length(Y);
i=[0:N-1];
dt=1/fs;
t=i*dt;

% calcul des coefficients du filtre


fN1=438;
fN2=442;
omA1=tan(3.14159*fN1/fs);
omA2=tan(3.14159*fN2/fs);
L=omA2-omA1;
omr2=omA2*omA1;
den=1+L+omr2;
b(1)=L/den; % C’est le B1 calculé ci-dessus
b(2)=0; % C’est le B2 calculé ci-dessus
b(3)=-b(1);
a(1)=1;
a(2)=(2*omr2-2)/den;
a(3)=(1-L+omr2)/den;

% signal impulsion, filtrage et fct de transfert


Imp=[1 zeros(1,N-1)];
Impfil=filter(b,a,Imp);
FImpfil=fft(Impfil);
FImpfil=fftshift(FImpfil);
f=-fs/2:fs/N:(N-1)/2*fs/N;
subplot(3,1,1);
plot(f,abs(FImpfil));
title('fct de transfert du filtre');

% TF du signal
FY=fft(Y);
FY=fftshift(FY);
subplot(3,1,2);
plot(f,abs(FY));
title('fft du signal');

% Filtrage du signal
Yfil=filter(b,a,Y);
audiowrite('bsin-440-filtre-IIR.wav',Yfil,fs);
% sur Webcampus – dossier « signaux »

% TF du signal filtré
FYfil=fft(Yfil);
FYfil=fftshift(FYfil);
subplot(3,1,3);
plot(f,abs(FYfil));
title('fft du signal filtré');

pause;
close all;
clear;
Zoom sur la fct de transfert :
Notez la différence par rapport à la fct de transfert d’un FIR

Zoom sur les fft :

Les IIR avec Matlab – pour info

Tous les filtres sont calculés à partir des fonctions de transfert des filtres analogiques
les plus connus : Bessel, Butterworth, Chebyshev,…
Un filtre IIR est d’ordre n si H(s) = 1/P(s) avec P(s), un polynôme de degré n.

Exemple : un filtre Butterworth d’ordre 2 a comme fonction de transfert :


1
H (s) =
s + 2 s +1
2

BUTTER : Butterworth digital and analog filter design

[b,a] = butter(N,Wn) designs an Nth order lowpass digital


Butterworth filter and returns the filter coefficients in length N+1 vectors B
(numerator) and A (denominator). The coefficients are listed in descending
powers of z. The cutoff frequency Wn must be 0.0 < Wn < 1.0, with 1.0
corresponding to half the sample rate.
[b,a] = butter(N,Wn,'ftype') , cf FIR1 pour 'ftype'
If Wn is a two-element vector, Wn = [W1 W2], butter returns an order 2N
bandpass filter with passband W1 < W < W2.

Pour obtenir les coefficients calculés plus haut, “à la main” :

[b,a] = butter(1,[fN1/(fs/2)) fN2/(fs/2))])

Vous aimerez peut-être aussi