Synthése de Filtres Numériques RIF
Synthése de Filtres Numériques RIF
Synthése de Filtres Numériques RIF
Synthèse de filtres
numériques RIF
Le 08/03/2022
I. But :
Ce TP est dédié aux filtres RIF ou filtres à Réponse Impulsionnelle
Finie. Ces derniers sont des filtres non-récursifs puisqu’ils ne
représentent pas une boucle de réaction de sortie vers l’entrée.
On parle le plus souvent de filtre RIF pour des filtres à temps discret.
Un filtre numérique RIF est caractérisé par une réponse uniquement
basée sur un nombre fini de valeurs du signal d'entrée. Par conséquent,
quel que soit le filtre, sa réponse impulsionnelle sera stable et de durée
finie, dépendante du nombre de coefficients du filtre. Les termes de
filtre non récursif ou de filtre à moyenne mobile sont parfois employés
pour nommer la même classe de filtres, bien que l'expression de filtre à
moyenne mobile désigne en premier lieu les filtres passe-bas.
Parmi les filtres linéaires, les filtres à réponse impulsionnelle finie sont
opposés aux filtres à réponse impulsionnelle infinie (filtre RII) qui ne
peuvent être réalisés que par une implémentation récursive.
𝐻(𝑧) = ∑ ℎ(𝑖) 𝑧 −𝑖
𝑖=0
2.Synthése :
Les filtres RIF ne sont réalisables que dans le domaine discret.
Il existe deux principales méthodes qui permettent de déterminer les
coefficients de la fonction de transfert :
a. Synthèse par développement en série de Fourier :
On considère que la réponse en fréquence désirée est une fonction
périodique de période fe. Elle peut donc être décomposée en série de
Fourier, dont les coefficients permettront d’obtenir ceux du filtre
recherché.
On se donne un gabarit fréquentiel H(f) à respecter. On calcule la
réponse impulsionnelle h(i) du filtre recherché par transformée de
Fourier inverse de ce gabarit .il s’agit alors de faire une troncature afin
de garder un nombre fini N d’éléments dans h(i) qui seront les
coefficients du filtre, puis d’effectuer un décalage afin de rendre le
N=50;
h=hamming(N);
figure(2);
stem(h);
title('fenetre de hamming');
3.fenêtre de Kaiser :
clear all;close all; clc;
N=50;
k1=kaiser(N,1);
k2=kaiser(N,9);
figure(3);
stem(k1);
hold on
stem(k2);
title('fenetre de kaiser');
legend('betta=1','betta=9');
Exercice 2 :
1.Calcul d’un simple filtre passe bas avec la fonction « FIR1 »
fp=6000;
fs=10000;
fe=40000;
delta1=1;
delta2=-35;
calcul de wn :
fp=6000;
fs=10000;
fe=40000;
delta1=1;
delta2=-35;
wn=(fs+fp)/fe
plot(f10,20*log10(amp10));
hold on
plot(f20,20*log10(amp20));
hold on
plot(f50,20*log10(amp50));
hold on
plot(f100,20*log10(amp100));
legend('n=10', 'n=20', 'n=50' ,'n=100')
hold on
gab1=[delta1*ones(fs,1);delta2*ones((fe/2)-
fs,1)];
gab2=[-3*ones(fp,1);-120*ones((fe/2)-fp,1)];
plot(gab1)
plot(gab2)
[hm10,fm10]=freqz(hm20,1,512,fe)
amp10h=abs(hm10);
phase10m=angle(hm10);
[k9,f9]=freqz(ka9,1,512,fe)
amp9=abs(k9);
phase9=angle(k9);
[k21,f21]=freqz(ka21,1,512,fe)
amp21=abs(k21)
phase21=angle(k21) ;
figure(5)
plot(f20,20*log10(amp20));
hold on
plot(fm10,20*log10(amp10h));
hold on
plot(f9,20*log10(amp9));
hold on
plot(f21,20*log10(amp21));
hold on
plot(gab1)
plot(gab2)
legend('rectwin','hamming','kaiser
beta=9','kaiser beta=21')
Interprétations :
Le filtre qui respecte mieux le gabarit est celui de hamming. Si on
augmente encore l’ordre du filtre, sa réponse s’améliorera encore
mieux. On note également que les autres filtres ne sont pas fidèles au
gabarit.
7.temps de propagation de groupe pour chacun des filtres synthétisés :
figure(6)
subplot(2,2,1)
grpdelay(hm20,1,512,fe);
title('hamming')
subplot(2,2,2)
grpdelay(ka9,1,512,fe);
title('kaiser9')
subplot(2,2,3)
grpdelay(ka21,2,512,fe);
title('kaiser21')
subplot(2,2,4)
grpdelay(o20,1,512,fe);
title('rectwin')
Exercice 1 :
Calcul d’un filtre passe bas avec la fonction « FIRPM » satisfaisant les
contraintes suivantes :
[h20,f20]=freqz(p20,1,512,fe)
amp20=abs(h20);
phase20=angle(h20);
[h50,f50]=freqz(p50,1,512,fe)
amp50=abs(h50);
phase50=angle(h50);
[h100,f100]=freqz(p100,1,512,fe)
amp100=abs(h100)
phase100=angle(h100);
figure(4)
plot(f20,20*log10(amp20));
hold on
plot(f50,20*log10(amp50));
hold on
plot(f100,20*log10(amp100));
hold on
gab1=[delta1*ones(fs,1);delta2*ones((fe/2)-
fs,1)];
gab2=[-3*ones(fp,1);-120*ones((fe/2)-fp,1)];
plot(gab1)
plot(gab2)
legend('n=20','n=50','n=100')
Interprétations :
Nous notons que pour n=100 le filtre ne correspond pas au gabarit,
contrairement à la méthode de la fenêtre qui ne tend vers l’idéalité que
pour un ordre important.
Exercice 2 :
Calcul d’un filtre passe bande classique satisfaisant les contraintes de
réponse en amplitude définies comme suit :
fe=40000;
fs1=5000;
fs2= 12000;
fp1=6000;
fp2=10000;
d1=1;
d2=35;
1. Calcul de a et f :
f=[0 5000 6000 10000 12000 fe/2]/(fe/2);
a=[0 0 1 1 0 0];
2.Calcul des filtres avec la fonction « FIRPM » :
p20=firpm(20,f,a);
p50=firpm(50,f,a);
p100=firpm(100,f,a);
2. Traçage des réponses fréquentielle de ces filtres dans la même
fenêtre et les comparer :
fe=40000;
fs1=5000;
fs2= 12000;
fp1=6000;
fp2=10000;
d1=1;
d2=35;
f1=[0 5000 6000 10000 12000 fe/2]/(fe/2);
a1=[0 0 1 1 0 0];
p20=firpm(20,f1,a1);
p50=firpm(50,f1,a1);
p100=firpm(100,f1,a1);
[h20,f20]=freqz(p20,1,512,fe);
amp20=abs(h20);
[h50,f50]=freqz(p50,1,512,fe);
amp50=abs(h50);
[h100,f100]=freqz(p100,1,512,fe);
amp100=abs(h100);
figure(5)
plot(f20,-20*log10(amp20));
hold on
plot(f50,-20*log10(amp50));
hold on
plot(f100,-20*log10(amp100));
hold on;
gab1=[d2*ones(fs1,1);0*ones(fs2-
fs1,1);ones(fe/2-fs2,1)*d2];
gab2=[400*ones(fp1,1);ones(fp2-
fp1,1)*d1;ones(fe/2-fp2,1)*400];
plot(gab1);
plot(gab2);
Interprétations :
Nous remarquons que le filtre d’ordre n=100 est le plus adéquat,
respecte le mieux le gabarit
3.Comparaison des filtres RII et RIF :
Synthèse d’un filtre numérique passe bande satisfaisant les contraintes
de réponse en amplitude définies dans l’exercice précédent
fe=40000;
fs1=5000;
fs2= 12000;
fp1=6000;
fp2=10000;
d1=1;
d2=35;
fs= [fs1 fs2]/((fe/2));
fp= [fp1 fp2]/((fe/2));
Calcul d’un filtre RIF :
1.dtermination de l’argument de l’entrée wn :
fe=40000;
fs1=5000;
fs2= 12000;
fp1=6000;
fp2=10000;
d1=1;
d2=35;
fs= [fs1 fs2]/((fe/2));
fp= [fp1 fp2]/((fe/2));
wn=(fs+fp)/2
gab2=[400*ones(fp1,1);ones(fp2-
fp1,1)*d1;ones(fe/2-fp2,1)*400];
plot(gab1)
plot(gab2)
legend( 'n=20', 'n=50' ,'n=100')
fs2= 12000;
fp1=6000;
fp2=10000;
d1=1;
d2=35;
fs= [fs1 fs2]/((fe/2));
fp= [fp1 fp2]/((fe/2));
wn=(fs+fp)/2
o20=fir1(20,wn,rectwin(20+1))
o50=fir1(50,wn,rectwin(50+1))
o100=fir1(100,wn,rectwin(100+1))
[h20,f20]=freqz(o20,1,512,fe)
amp20=abs(h20);
phase20=angle(h20);
[h50,f50]=freqz(o50,1,512,fe)
amp50=abs(h50)
phase50=angle(h50);
[h100,f100]=freqz(o100,1,512,fe)
amp100=abs(h100);
phase100=angle(h100);
figure(5)
plot(f20,-20*log10(amp20));
hold on
plot(f50,-20*log10(amp50));
hold on
plot(f100,-20*log10(amp100));
hold on
gab1=[d2*ones(fs1,1);0*ones(fs2-
fs1,1);ones(fe/2-fs2,1)*d2];
gab2=[400*ones(fp1,1);ones(fp2-
fp1,1)*d1;ones(fe/2-fp2,1)*400];
plot(gab1)
plot(gab2)
legend( 'n=20', 'n=50' ,'n=100')
[n4,fn4] = ellipord(fp,fs,d1,d2);
[num4, den4]=ellip( n4,d1,d2,fn4);
[h4,f4] = freqz (num4,den4,512,fe ) ;
amp4 = abs(h4) ;
gab1=[d2*ones(fs1,1);0*ones(fs2-
fs1,1);ones(fe/2-fs2,1)*d2];
gab2=[400*ones(fp1,1);ones(fp2-
fp1,1)*d1;ones(fe/2-fp2,1)*400];
figure(6)
plot(f20,-20*log10(amp20));
hold on
plot(f50,-20*log10(amp50));
hold on
plot(f100,-20*log10(amp100));
hold on
plot(f4,20*log10(amp4));
hold on
plot(gab1);
plot(gab2);
legend('rif20','rif50','rif100','rii')
Interprétations :
Le filtre Réponse Impulsionnelle Finie, pour un ordre petit, respecte le
gabarit.
figure(7)
[g20,f20]=grpdelay(o20,1,512,1)
plot(f20,g20)
hold on
[g50,f50]=grpdelay(o50,1,512,1)
plot(f50,g50)
hold on
[g100,f100]=grpdelay(o100,1,512,1)
plot(f100,g100)
hold on
[g4,f4]=grpdelay(num4,den4,512,1)
plot(f4,g4)
legend('20','50','100','ellip')
RIF RII
Stabilité Stables Ne sont pas
forcément stables
Erreurs cumulatives Moins sensibles aux Existent à cause de la
erreurs de récursivité
quantification
Sélectivité Absente
Retard de groupe Ne peut pas avoir un Peut avoir un réponse
réponse impulsionnelle
impulsionnelle symétrique et
symétrique et introduire un retard
introduire un retard sur le signal
sur le signal
Ordre Exige un ordre très Ordre petit + possède
élevé beaucoup moins de
calcul par rapport aux
RIF
IV. Conclusion :
Lors de ces séances de TP, nous avons pratiquer la manipulation des
filtres numériques en se concentrant sur la mise en œuvre du logiciel
Matlab.