Vous êtes sur la page 1sur 3

TP 2.

SYNTHESE DE FILTRES RIF


APPLICATIONS : ELIMINATION DUNE NOTE DE LA GAMME
MUSICALE & NUMEROTATION DTMF

1. SYNTHESE DE FILTRES RIF


1.1 SYNTHESE DE FILTRES PAR LA METHODE DE LA FENETRE SOUS MATLAB
On sintresse dans cette partie la synthse de filtres RIF par la mthode de la fentre l'aide de la fonction Matlab
FIR1. On considrera la conception d'un filtre RIF passe-bas, passe-haut, passe-bande ou coupe-bande.
fir1

Synthse de filtre RIF par la mthode de la fentre

num = fir1(M,fn) permet la conception d'un filtre passe-bas RIF d'ordre spcifi. Les coefficients du filtre sont retourns
dans un tableau num de longueur ordre+1. La frquence de coupure fn doit tre rduite entre 0 et 1, le 1 correspondant la
moiti de la frquence d'chantillonnage (fn=fc/(fe/2) o fc correspond l frquence dsire du filtre en Hz).
Si fn est un tableau de deux lments, fn = [fn1 fn2], fir1 donne les coefficients d'un passe-bande avec fn1 la frquence
mini et fn2 la frquence maxi de la bande passante.
num = fir1(M,fn,'high') permet de synthtiser un filtre passe-haut.
num = fir1(M,fn,'stop') permet de synthtiser un rjecteur de bande avec fn = [fn1 fn2].
Pour les passe-haut et rjecteur de bande, l'ordre doit tre pair, donc le nombre de coefficients N du filtre et de la
fentre associe sont impairs.
La procdure fir1 utilise par dfaut une fentre de Hamming. Toutefois, d'autres fentres sont disponibles : rectangulaire
(Boxcar), Hanning, Bartlett, Blackman, Kaiser et Chebwin en indiquant un argument optionnel. Par exemple,
num = fir1(M,fn,boxcar(M+1)) pour la fentre rectangulaire
num = fir1(M,fn,'high',balckman(M+1)) pour la fentre de Blackman
num = fir1(M,fn,kaiser(M+1,beta) pour la fentre de Kaiser.
Attention, pour certains types de filtre, lordre et le filtre doivent avoir la mme valeur.

Pour vrifier que le filtre conu rpond bien au cahier des charges, on tracera les rponses frquentielles en amplitude
et en phase (votre fichier repfreqz ou bien directement avec freqz).

1.2 CONCEPTION DE FILTRES NUMERIQUES RIF


1.2.1. Concevoir un filtre RIF passe-bas obissant aux caractristiques ci-dessous :
frquence de coupure 1.875 kHz
largeur de la zone de transition 625 Hz
ondulations en bande attnue : > 51 dB
frquence d'chantillonnage : 8 kHz
Prciser les fentres utilisables et les caractristiques du filtre (ordre, frquence de coupure centre dans la zone de
transition et normalise par rapport fe/2). Choisir une fentre et justifier le choix.
1.2.2. Concevoir un filtre RIF passe-bande obissant aux caractristiques ci-dessous :
bande passante 1500-2500 Hz
largeur de la zone de transition 500 Hz
ondulations en bande passante : 0.1 dB
ondulations en bande attnue : > 60 dB
frquence d'chantillonnage : 10 kHz
Prciser les fentres utilisables et leurs caractristiques (ordre, frquences de coupure centre dans la zone de transition
et normalises par rapport fe/2).
1.2.3. Concevoir un filtre RIF passe-haut obissant aux caractristiques ci-dessous :
frquence de coupure idale : 2400 Hz
largeur de la zone de transition 1000 Hz
ondulations en bande passante : 0.01 dB
ondulations en bande attnue : > 40 dB
frquence d'chantillonnage : 20 kHz
H. Garnier

-7-

TP 3

On utilisera ici la fentre de Kaiser, prciser l'ordre et la valeur de .


1.2.4. Concevoir un filtre rjecteur de bande ayant les caractristiques suivantes :
largeur de la zone de transition 30 Hz
ondulations en bande attnue : > 40 dB
frquence de coupure : 392 Hz
frquence d'chantillonnage : 8192 Hz

Implantation sous Matlab


Sous Matlab, on pourra sinspirer des lignes suivantes :
>>num=fir1(54,0.23,'high',hamming(55)); % numrateur du filtre RIF
>>den=1; % dnominateur du filtre RIF
>>freqz(num,den,512,fe) % pour visualiser la rponse frquentielle de ce filtre

1.2.5. Choisissez les rsultats obtenus avec une fentre de Hamming pour le filtre analys en 1.2.1 et tracer sa rponse
frquentielle laide de votre programme repfreqz dans la fentre command de Matlab. Vrifier que les
spcifications demandes sont obtenues (frquence de coupure, attnuation en bande attnue, ondulations en bande
passante, largeur de la zone de transition...).
1.2.6. Idem pour le filtre passe-bande tudi en 1.2.2 dans le cas dune fentre de Blackman.
1.2.7. Idem pour le filtre passe-haut tudi en 1.2.3 dans le cas dune fentre de Kaiser.
1.2.8. Idem pour le filtre rjecteur de bande tudi en 1.2.4 dans le cas dune fentre de Hanning.

2. ELIMINATION DUNE NOTE DE LA GAMME MUSICALE


2.1. SYNTHESE DUNE GAMME DE MUSIQUE - RAPPELS
Les notes de musique produites par un piano peuvent tre synthtises approximativement numriquement. En effet,
chaque note peut tre considre comme tant un son pur produit par un signal sinusodal. La frquence correspondant
au son La est par exemple de 440 Hz.
Crer un programme gamme.m qui permet de gnrer une gamme de musique. La frquence de chaque note est
prcise dans le tableau ci-dessous. Chaque note aura une dure de 1s.
Rappel : la mise bout bout de deux tableaux X et Y seffectue sous Matlab laide de la commande Z=[X Y] ;

Do

Mi

Fa

Sol

La

Si

Do

262 Hz

294

330

349

392

440

494

523

La dure de la gamme sera donc de 8s. La frquence dchantillonnage pourra tre fixe fe=8192 Hz. Sauvegarder
dans une variable s le signal synthtis.
En cas de difficult vous pouvez rcuprer sur le site web du cours le fichier gamme.mat (puis load gamme sous
Matlab). A laide la fonction sound de Matlab, coutez la gamme gnre.

2.2. SPECTRE DE LA GAMME DE MUSIQUE


Les commandes ci-dessous permettent de tracer le spectre damplitude de la gamme entre 250 et 550 Hz uniquement :
N=length(s);
Sfft=fft(s);
m=(0:(N-1)/2);
f=(m)/N*fe; % trac du spectre damplitude entre [250;550]Hz
n0=2001;
nf=4300;
plot(f(n0:nf),abs(Sfft(n0:nf)))
xlabel('frquence (Hz)'),title('Spectre d''amplitude de la gamme')

H. Garnier

-8-

TP 3

2.3. ELIMINATION DE LA NOTE SOL DE LA GAMME DE MUSIQUE


Synthtiser un filtre RIF rjecteur de bande qui limine la note SOL de la gamme musicale. Donner le cahier des
charges de votre filtre :
frquence de coupure (en Hz) :
largeur de la zone de transition (en Hz) :
ondulations en bande attnue (en dB) :
frquence d'chantillonnage :
fentre choisie :
On sera particulirement vigilent pour le choix de la valeur des ondulations en bande attnue ainsi que pour le choix
de la largeur de la zone de transition.
Tracer le diagramme de Bode en amplitude du filtre et relever la valeur en dB des ondulations en bande attnue.
Raliser le filtrage numrique de la gamme musicale la laide de la fonction filter.
Tracer sur une mme figure les spectres de la gamme originale et filtre entre 250 et 550 Hz.
Ecouter les rsultats. Commentaires.
Les commandes ci-dessous permettent de tracer la reprsentation temps-frquence) de la gamme originale et filtre :
figure
subplot(2,1,1)
specgram(s,[],fe);
subplot(2,1,2)
specgram(sf,[],fe);
xlabel('temps (s)')
Faire valider votre programme par lenseignant.

3. NUMEROTATION TELEPHONIQUE DTMF


La numrotation tlphonique DTMF associe chaque chiffre du cadran du tlphone, un couple de frquences dans la
bande passante audible. Le signal gnr est alors la somme de deux signaux sinusodaux ces deux frquences.

frquences
en Hz
697
770
852
941

1209

1335

1477

1633

1
4
7
*

2
5
8
0

3
6
9
#

A
B
C
D

3.1. Ecrire un programme qui reprsente le signal sur la ligne tlphonique lorsque lon appuie sur un chiffre pass en
paramtre au programme ( fonction input ). On utilisera linstruction if, elseif, end pour tester la valeur entre. Pour dfinir
laxe des temps on utilisera les variables et les valeurs suivantes afin de respecter les contraintes sur les signaux
numriques (Shannon)
tf=1/20;
pas=tf/1000;
t=0:pas:tf;
3.2. Pour chaque touche de 0 9, prciser si le signal est priodique et relever sa priode.
3.3. La fonction sound de Matlab permet denvoyer le signal vers la carte son. Pour couter votre signal, il faut
augmenter sa dure : fixez tf et remplacer laffichage par : sound(s,1/pas), quentendez-vous ?
3.4. Tracer le spectre du signal correspondant chaque touche du tlphone.
3.5. A lautre de bout de la ligne tlphonique lautocommutateur va devoir interprter le signal pour vous mettre en
relation avec votre correspondant, proposer un dispositif qui soit capable didentifier les frquences.
3.6. Complter votre programme pour composer un numro deux chiffres. On pourra utiliser un tableau et une
boucle for par exemple. Fixez le pas tf/10000.
3.7. Tester votre programme en apposant un combin tlphonique sur le haut parleur de votre ordinateur.
H. Garnier

-9-

TP 3

Vous aimerez peut-être aussi