TP2 – Synthèse des Filtres Numériques RII | Traitement Numérique du Signal
COMPTE RENDU
Travaux Pratiques – TP 2
Synthèse des filtres numériques à Réponses Impulsionnelles Infinies
(RII)
Matière Traitement Numérique du Signal
Filière Licence / Master – Électronique &
Télécommunications
Date Février 2025
Logiciel utilisé MATLAB
Réalisé par
1 Ayoub Ait Boubker
2 Ait Omar Nabil
3 El Barae Hassane
I. Objectif du TP
L'objectif de ce TP est d'étudier la synthèse de filtres numériques à réponses
impulsionnelles infinies (RII) à l'aide du logiciel MATLAB. Il s'agit de comprendre les
méthodes de synthèse des filtres RII et leurs caractéristiques.
Deux méthodes principales sont étudiées :
• La méthode de l'invariance impulsionnelle
• La méthode de la transformation bilinéaire
II. Rappels théoriques
II.1. Définition d'un filtre RII
Un filtre numérique à réponse impulsionnelle infinie (RII) a une rétroaction de la sortie vers
l'entrée. Sa sortie est fonction des échantillons de sortie précédents et des échantillons
d'entrée présents et passés :
Page 1
TP2 – Synthèse des Filtres Numériques RII | Traitement Numérique du Signal
y(m) = SUM_{k=0}^{M} b_k * x(m-k) + SUM_{k=1}^{N} a_k * y(m-k)
La fonction de transfert, obtenue par transformée en z, est :
H(z) = Y(z)/X(z) = [SUM b_k * z^(-k)] / [1 - SUM a_k * z^(-k)]
L'ordre du filtre est égal à sup(N, M). Lorsqu'il est excité par une impulsion, la sortie persiste
théoriquement indéfiniment, d'où le nom de filtre récursif.
II.2. Propriétés des filtres RII
Avantages :
• Très efficaces en temps de calcul : l'introduction de pôles dans H(z) réduit
considérablement le nombre de coefficients par rapport à un filtre RIF équivalent.
• Ordre plus faible qu'un filtre RIF pour des spécifications identiques.
Inconvénients :
• Réponse en phase non linéaire en général.
• Instabilité numérique possible : le filtre est récursif, les erreurs de précision
numérique peuvent s'amplifier. La stabilité doit être vérifiée lors de la conception.
II.3. Méthodes de synthèse
Le principe général consiste à concevoir un filtre analogique de référence Ha(p), puis à le
convertir en filtre numérique via une transformation du plan p vers le plan z.
Méthode de l'invariance impulsionnelle : on échantillonne la réponse impulsionnelle du filtre
analogique. La réponse impulsionnelle du filtre numérique sera identique à celle du filtre
analogique échantillonnée. Cette méthode n'est pas adaptée aux filtres passe-haut et
passe-bande à large bande (chevauchement spectral).
Méthode de la transformation bilinéaire : on substitue dans Ha(p) la variable p par la
relation :
p = (2/Te) * (1 - z^(-1)) / (1 + z^(-1))
Cette transformation conserve la stabilité mais introduit une compression des fréquences. Il
est donc nécessaire de pré-déformer le gabarit analogique selon la relation :
f_a = (Fe / pi) * tan(pi * f_num / Fe)
III. Travail réalisé sous MATLAB
III.1. Synthèse par la méthode de l'invariance impulsionnelle
III.1.1. Spécifications du filtre
Paramètre Valeur
Type de filtre Passe-bas récursif – Butterworth ordre 3
Fréquence de coupure numérique (fdc) 100 Hz
Fréquence d'échantillonnage (Fe) 1000 Hz
Méthode Invariance impulsionnelle
Page 2
TP2 – Synthèse des Filtres Numériques RII | Traitement Numérique du Signal
III.1.2. Question 1 – Fonction de transfert normalisée
La fonction de transfert normalisée d'un filtre passe-bas Butterworth du 3ème ordre est
donnée directement par les tables :
Ha(s) = 1 / [(s + 1)(s² + s + 1)]
Soit sous forme développée :
Ha(s) = 1 / (s³ + 2s² + 2s + 1)
III.1.3. Question 2 – Fonction de transfert dénormalisée
La dénormalisation s'obtient en remplaçant s par p / omega_dc, avec omega_dc = 2*pi*fdc =
2*pi*100 = 628,31 rad/s.
On décompose d'abord Ha(s) en éléments simples (A=1, B=-1, C=0) :
Ha(s) = 1/(s+1) - s/(s²+s+1)
La fonction dénormalisée devient :
Ha(p) = omega_dc/(p+omega_dc) -
p*omega_dc/(p²+omega_dc*p+omega_dc²)
III.1.4. Question 3 – Fonction de transfert du filtre numérique
On met le dénominateur du second terme sous la forme (p+a)²+b² avec :
a = omega_dc/2 = 314,16 rad/s
b = (sqrt(3)/2)*omega_dc = 544,14 rad/s
En appliquant les tables de transformée en Z, on obtient :
Hd(z) = 628,31 * [ 1/(1-0,7304*z^-1)
- (1-0,8432*z^-1)/(1-1,25*z^-1+0,5337*z^-2) ]
Après simplification et mise sous forme de fraction rationnelle :
Hd(z) = (203,07*z^-1 - 51,39*z^-2)
/ (1 - 1,98*z^-1 + 1,4462*z^-2 - 0,3896*z^-3)
Valeurs numériques intermédiaires utilisées :
Grandeur Valeur numérique
omega_dc = 2*pi*100 628,31 rad/s
e^(-omega_dc * Te) 0,5337
e^(-omega_dc/2 * Te) 0,7304
cos((sqrt(3)/2)*omega_dc*Te) 0,8556
sin((sqrt(3)/2)*omega_dc*Te) 0,5177
III.1.5. Question 4 – Équation de récurrence
À partir de Hd(z) = S(z)/E(z), on déduit l'équation de récurrence :
s(n) = 203,067*e(n-1) - 51,39*e(n-2)
+ 1,98*s(n-1) - 1,4462*s(n-2) + 0,389*s(n-3)
Page 3
TP2 – Synthèse des Filtres Numériques RII | Traitement Numérique du Signal
III.1.6. Question 5 – Programme MATLAB
Fe = 1000; % Fréquence d'échantillonnage
fdc = 100; % Fréquence de coupure numérique
wdc = 2*pi*fdc; % Pulsation de coupure
% Filtre analogique Butterworth d'ordre 3 normalisé
[z, p, k] = buttap(3);
[num, den] = zp2tf(z, p, k);
% Dénormalisation
[numd, dend] = lp2lp(num, den, wdc);
% Conversion en filtre numérique par invariance impulsionnelle
[numz, denz] = impinvar(numd, dend, Fe);
% Réponse impulsionnelle du filtre numérique
[y, n] = impz(numz, denz, 50);
figure;
stem(n, y);
title('Réponse impulsionnelle – Filtre numérique RII (Invariance
impuls.)');
xlabel('n'); ylabel('h(n)'); grid on;
% Réponse fréquentielle du filtre numérique
[H, f] = freqz(numz, denz, 1024, Fe);
figure;
plot(f, 20*log10(abs(H)));
title('Réponse fréquentielle – Filtre numérique RII');
xlabel('Fréquence (Hz)'); ylabel('|H(f)| (dB)'); grid on;
III.1.7. Questions 7 & 8 – Réponses du filtre analogique
% Réponse fréquentielle du filtre analogique de référence
w = linspace(0, 2*pi*Fe/2, 1024);
Ha = freqs(numd, dend, w);
figure;
plot(w/(2*pi), 20*log10(abs(Ha)));
title('Réponse fréquentielle – Filtre analogique Butterworth ordre
3');
xlabel('Fréquence (Hz)'); ylabel('|Ha(f)| (dB)'); grid on;
% Réponse impulsionnelle du filtre analogique
t = 0 : 1/Fe : 50/Fe;
ha = impulse(tf(numd, dend), t);
figure;
plot(t, ha);
title('Réponse impulsionnelle – Filtre analogique');
xlabel('t (s)'); ylabel('ha(t)'); grid on;
Page 4
TP2 – Synthèse des Filtres Numériques RII | Traitement Numérique du Signal
III.1.8. Question 9 – Observations et conclusions
La comparaison des réponses fréquentielles et impulsionnelles permet de constater :
• La réponse impulsionnelle du filtre numérique correspond bien à l'échantillonnage de
la réponse impulsionnelle du filtre analogique (les valeurs coïncident aux instants
d'échantillonnage nTe).
• Les réponses fréquentielles sont proches dans la bande [0, Fe/2] : le filtre numérique
approxime bien le gabarit du filtre analogique.
• Un léger effet de repliement spectral (aliasing) peut apparaître si le filtre analogique
n'est pas suffisamment atténué à Fe/2. Pour un filtre Butterworth d'ordre 3 avec
fc=100 Hz et Fe=1000 Hz, cet effet est négligeable.
• La méthode est bien adaptée aux filtres passe-bas dont le spectre est limité en haute
fréquence.
III.2. Synthèse par la méthode de la transformation bilinéaire
III.2.1. Spécifications du filtre
Paramètre Valeur
Type de filtre Passe-bas récursif – Butterworth ordre 2
Fréquence de coupure numérique (fdc) 100 Hz
Fréquence d'échantillonnage (Fe) 1000 Hz
Méthode Transformation bilinéaire
III.2.2. Question 1 – Fonction de transfert normalisée
La fonction de transfert normalisée du filtre Butterworth du 2ème ordre est :
Ha(s) = 1 / (s² + sqrt(2)*s + 1)
III.2.3. Question 2 – Pré-déformation de fréquence
La fréquence analogique correspondant à la fréquence numérique fdc = 100 Hz est calculée
par la relation de pré-distorsion :
f_ac = (Fe/pi) * tan(pi * fdc/Fe)
f_ac = (1000/pi) * tan(pi * 100/1000)
f_ac = (1000/pi) * tan(0.1*pi) = 103,42 Hz
Le glissement de fréquence dû à la compression est :
Delta_f = f_ac - fdc = 103,42 - 100 = 3,42 Hz
omega_ac = 2*pi*f_ac = 649,81 rad/s
Ce glissement de 3,42 Hz est faible mais non nul. Il est la conséquence directe de la
distorsion fréquentielle inhérente à la transformation bilinéaire. La pré-déformation du gabarit
analogique permet de compenser cet effet.
III.2.4. Question 3 – Fonction de transfert dénormalisée
On remplace s par p/omega_ac dans Ha(s) :
Page 5
TP2 – Synthèse des Filtres Numériques RII | Traitement Numérique du Signal
Ha(p) = omega_ac² / (p² + sqrt(2)*omega_ac*p + omega_ac²)
Ha(p) = 4,2225×10^5 / (p² + 918,97*p + 4,2225×10^5)
III.2.5. Question 4 – Fonction de transfert numérique
On applique la substitution bilinéaire p = 2*Fe*(1-z^-1)/(1+z^-1) = 2000*(1-z^-1)/(1+z^-1)
dans Ha(p). Après développement et simplification :
Hd(z) = 0,06744*(1 + 2*z^-1 + z^-2)
/ (1 - 1,143*z^-1 + 0,4128*z^-2)
Les coefficients calculés par MATLAB (commande bilinear) sont :
numz = [0,0640 0,1279 0,0640]
denz = [1,0000 -1,1683 0,4241]
Les légères différences avec le calcul manuel sont dues aux arrondis dans la pré-
déformation.
III.2.6. Question 5 – Équation de récurrence
À partir de Hd(z) = S(z)/E(z), on déduit :
s(n) = 0,067*e(n) + 0,134*e(n-1) + 0,067*e(n-2)
+ 1,143*s(n-1) - 0,413*s(n-2)
Calcul manuel des premières valeurs de la réponse impulsionnelle :
n 0 1 2
e(n) 1 0 0
s(n) 0,067 0,210 0,270
III.2.7. Question 6 – Programme MATLAB
Fe = 1000;
fdc = 100;
wdc = 2*pi*fdc;
% Pré-déformation de la fréquence de coupure
fac = (Fe/pi) * tan(pi * fdc / Fe);
wac = 2*pi*fac;
fprintf('f_analogique = %.2f Hz\n', fac);
fprintf('Glissement = %.2f Hz\n', fac - fdc);
% Filtre analogique Butterworth ordre 2 normalisé
[z, p, k] = buttap(2);
[num, den] = zp2tf(z, p, k);
% Dénormalisation à fac
[numd, dend] = lp2lp(num, den, wac);
% Transformation bilinéaire
[numz, denz] = bilinear(numd, dend, Fe);
Page 6
TP2 – Synthèse des Filtres Numériques RII | Traitement Numérique du Signal
fprintf('numz = '); disp(numz);
fprintf('denz = '); disp(denz);
% Réponse impulsionnelle
[y, n] = impz(numz, denz, 60);
figure;
stem(n, y);
title('Réponse impulsionnelle – Filtre numérique (Bilinéaire)');
xlabel('n'); ylabel('h(n)'); grid on;
% Réponse fréquentielle – module
[H, f] = freqz(numz, denz, 1024, Fe);
figure;
subplot(2,1,1);
plot(f, 20*log10(abs(H)));
title('Réponse fréquentielle – Module'); xlabel('Hz'); ylabel('dB');
grid on;
% Réponse fréquentielle – phase
subplot(2,1,2);
plot(f, angle(H)*180/pi);
title('Réponse fréquentielle – Phase'); xlabel('Hz');
ylabel('Degrés'); grid on;
III.2.8. Questions 8 & 9 – Réponses du filtre analogique
% Réponse fréquentielle du filtre analogique
w = linspace(0, 2*pi*Fe/2, 1024);
Ha = freqs(numd, dend, w);
figure;
subplot(2,1,1);
plot(w/(2*pi), 20*log10(abs(Ha)));
title('Réponse analogique – Module'); xlabel('Hz'); ylabel('dB');
grid on;
subplot(2,1,2);
plot(w/(2*pi), angle(Ha)*180/pi);
title('Réponse analogique – Phase'); xlabel('Hz'); ylabel('Degrés');
grid on;
% Réponse impulsionnelle analogique
t = 0 : 1/Fe : 60/Fe;
ha = impulse(tf(numd, dend), t);
figure; plot(t, ha);
title('Réponse impulsionnelle – Filtre analogique');
xlabel('t (s)'); ylabel('ha(t)'); grid on;
III.2.9. Question 10 – Observations et conclusions
La comparaison des réponses du filtre numérique et du filtre analogique met en évidence :
• La réponse fréquentielle en module du filtre numérique est très proche de celle du
filtre analogique dans la bande utile [0, Fe/2]. La coupure est nette à 100 Hz.
Page 7
TP2 – Synthèse des Filtres Numériques RII | Traitement Numérique du Signal
• La transformation bilinéaire garantit une correspondance exacte entre les fréquences
analogiques et numériques aux points de pré-déformation. La fréquence de coupure
effective est bien 100 Hz.
• La réponse en phase du filtre numérique est non linéaire, comme attendu pour un
filtre RII. Elle diffère de celle du filtre analogique, mais reste du même type.
• La réponse impulsionnelle du filtre numérique est une séquence infinie qui décroît
exponentiellement, ce qui est caractéristique des filtres récursifs.
• Contrairement à la méthode d'invariance impulsionnelle, la transformation bilinéaire
ne présente pas de repliement spectral (la transformation est bijective entre [0, Fe/2]
et [0, +inf)).
IV. Comparaison des deux méthodes
Critère Invariance impulsionnelle Transformation bilinéaire
Préservation RI analogique Oui (par construction) Non
Repliement spectral Possible (si spectre large) Aucun
Distorsion de fréquence Faible Présente (compression)
Adaptée aux filtres PH/PB Non Oui
large
Phase linéaire Non (filtre récursif) Non (filtre récursif)
V. Conclusion
Ce TP a permis de mettre en pratique la synthèse de filtres numériques RII selon deux
approches complémentaires.
La méthode de l'invariance impulsionnelle (impinvar) préserve fidèlement la réponse
impulsionnelle du filtre analogique. Elle est simple à mettre en oeuvre mais est limitée aux
filtres dont le spectre est bien limité en hautes fréquences (passe-bas), sous peine de
repliement spectral.
La méthode de la transformation bilinéaire (bilinear) est plus générale et évite tout
repliement spectral grâce à la correspondance bijective qu'elle établit entre les fréquences
analogiques et numériques. Elle nécessite cependant une étape de pré-déformation des
fréquences du gabarit. Elle est applicable à tous les types de filtres (passe-bas, passe-haut,
passe-bande).
Dans les deux cas, les filtres RII obtenus offrent de bonnes performances fréquentielles
avec un ordre peu élevé, au prix d'une phase non linéaire. Pour les applications nécessitant
une phase linéaire, on préférera les filtres RIF.
Page 8