TP T.S
TP T.S
TP T.S
I-BUT :
Etudes des outils de base des filtres numériques, ainsi mettre en évidences, au
niveau temporel et fréquentiel, les caractéristiques d’un filtre, d’étudier son régime
transitoire et permanent et de réaliser l’opération de filtrage de deux signaux de fréquences
différentes.
I- NTRODUCTION :
Equation récurrente :
n0
an (k) . y (k-n) =
m0
b (k).x(k-m) ,
III- MANIPULATION :
1ère étapes :
Détermination de la réponse fréquentielle d’un filtre numérique.
Par exemple, on prend le filtre causal suivant régit par l’équation récurrente suivante :
Y(k)=0.0422 x(k) +0.0843 x (k-1) +0.0422 x (k-2) +1.3993 y (k-1) – 0.5779 y (k-2).
fe=8000 ;
N=512 ;
[H,f]= freqz(b,a,N,fe) ;
fe=8000 ;
N=512 ;
[H,f]= freqz(b,a,N,fe) ;
plot(f,abs(H)) ;
grid ;
2éme étape :
1- on peut prévoir à l’ avance le signal de sortie puisque le signal x(k) est un signal propre de
forme « cosinus » avec une amplitude qui est égale à |H (f0)|.
Définition :
Fe=8000;
Te=1/Fe;
k=[0:1:199];
F0=500;
x=cos(2*pi*(F0/Fe)*k*Te);
Détermination de y(k) :
Fe=8000;
Te=1/Fe;
k=[0:1:199];
F0=500;
x=cos(2*pi*(F0/Fe)*k*Te);
Graphe de x(k) :
plot(k,x)
Figure 2 : la courbe x(k)
Remarque : On obtient presque la même valeur, donc on dit que l’accord est satisfait.
3éme étape :
Dans cette étape, nous allons essayer de modifier la fréquence du signal d’entré c-à-d au
lieu de f0=500Hz, on choisit f0=2500Hz.
Programme du travaille
Fe=8000;
Te=1/Fe;
k=[0:1:199];
F0=2500;
x1=cos(2*pi*(F0/Fe)*k*Te);
Traçage :
stem(k,y1);
6-
4émé etape :
a=[1,-1.3993,0.5779];
b=[0.0422,0.0843,0.0422];
[h,k]=impz(b,a);
fe=8000;
te=1/fe;
f0=2500;
plot(k,h);
grid;
Tracé de [h,k]
a=[1,-1.3993,0.5779];
b=[0.0422,0.0843,0.0422];
[h,k]=impz(b,a);
fe=8000;
te=1/fe;
f0=2500;
plot(k,h)
x=cos(2*pi*f0*k*te);
y=filter(b,a,x);
hold on
plot(y,'r') ;
grid ;
-------graphe
7-Interprétation
ére
1 ;
I-BUT :
L’étude des méthodes de conception, par simulation, des filtres numériques non récursifs
RIF et récursive RII.
II-INTRODUCTION :
2-1-Fréquence normalisée :
°
La fréquence normalisée est donnée par la relation : f= ; ou Fe est la fréquence
d’échantillonnage.
Nous voulons réaliser un filtre numérique RIF à partir du gabarit ci-dessous selon le cahier
de charges du filtre numérique à réaliser : commande b=fir1 (N,fc/fe) ;
N=16;
fc=300;
fe=8000;
b=fir1(N,(2*fc)/fe);
a=1;
[H,w]=freqz(a,b,512,fe);
plot(w/(2*pi),20*log10(abs(H)));
grid;
Pour an =1 c’est déjà fixé par le prof, donc il reste juste a déterminer le bm à travers :
- an=[1].
- bn=[0.0051 0.0088 0.0190 0.0361 0.0586 0.0831 0.1053 0.1208
0.1264 0.1208 0.1053 0.0831 0.0586 0.0361 0.0190 0.0088 0.0051].
III- MANIPULATION :
Filtre analogique CR :
RC=1ms
.
La fonction de transfert est : H(p)= .
ba= [ 0.001,0] ;
aa= [ 0.001,1] ;
Remarque :
[H,f]= freqs(ba,aa) ;
plot(f,abs(H)) ;
grid ;
4-tracé le module :
Théoriquement on a wc=1000=2pfc
fc=1,6kHz=160 Hz
Remarque :
D’après la figure « 2 » :
- numérisation
1- transformation de p vers z-
On trouve
.
H(p)=
.
[bn,an]=bilinear(ba,aa,fe);
N veut dire numérique
ba= [ 0.001,0] ;
aa= [ 0.001,1] ;
fe=8000 ;
[bn,an]=bilinear(ba,aa,fe);
On trouve :
bn =
0.9412 -0.9412
an =
1.0000 -0.8824
2- calcul de la réponse en fréquence
H(f); On utilise la commande freqz
Le programme est le suivant :
ba= [ 0.001,0] ;
aa= [ 0.001,1] ;
bn=[0.9412 , -0.9412] ;
an=[ 1.0000 , -0.8824] ;
fe=8000 ;
N=512 ;
[Hn,fn]= freqz(bn,an,N,fe) ;
[Ha,fa]=freqz(ba,aa,512,fe);
plot(fn,20*log10(abs(Hn)),'r');
hold on
plot(fa,20*log10(abs(Ha)));
H=1------------------Gdb=0db
H=0,7--------------Gdb=-3db
Conclusion :
La commande bilinéaire est une commande optimale pour faire la numérisation d’un filtre
analogique.
B.F iltrage d’un signal composite par deux filtres numériques de Tchebychev:
Nous allons utiliser maintenant deux filtres de Tchebychev, l’un passe haut et l’autre passe
bas
2-définir le signal x :
fe=8000;
fc1=128;
fc2=382;
te=1/fe;
k=[0:1:149];
x=10*cos(2*pi*fc1*k*te)+10*sin(2*pi*fc2*k*te);
On définit les deux filtres à l’aide de la commande « cheby1 » par le programme suivant :
N=4;
fe=8000;
r=0.5;
fc1f=216;
fc2f=293;
te=1/fe;
k=[0:1:149];
x=10*cos(2*pi*128*k*te)+10*sin(2*pi*382*k*te);
[b1,a1]=cheby1(N,r,(2*fc1f)/fe);
[b2,a2]=cheby1(N,r,(2*fc2f)/fe,'high');
[H2,f2]= freqz(b2,a2,512,fe) ;
plot(f1,abs(H1));
hold on;
plot(f2,abs(H2
----tracé :
N=4;
fe=8000;
r=0.5;
fc1f=216;
fc2f=293;
te=1/fe;
k=[0:1:149];
x=10*cos(2*pi*128*k*te)+10*sin(2*pi*382*k*te);
[b1,a1]=cheby1(N,r,(2*fc1f)/fe);
[b2,a2]=cheby1(N,r,(2*fc2f)/fe,'high');
[H1,f1]= freqz(b1,a1,512,fe) ;
[H2,f2]= freqz(b2,a2,512,fe) ;
y1=filter(b1,a1,x);
y2=filter(b2,a2,x);
plot(k1,abs(y1)) ;
hold on ;
plot(k2,abs(y2),'r') ;
grid ;
Tracé :
12
y1(k) y2((k)
10
0
0 50 100 150
D’après la figure on voit que signal y1(k)[ à travers le filtre passe bas] à une ondulation
III- CONCLUSION :
I-BUT :
II- MANIPULATION :
1-Enregistrer votre son voisé (la lettre <A> ) sur une durée de T=1s avec une fréquence
avec la commande x=wavrecord(N,fe)
T=1;
fe=8000;
N=T*fe;
x=wavrecord(N,fe);
Astute:
après avoir validé le programme sur Matlab , il faut appuyer sur entrer en dictant
« AAAAAAAAA »
On trouve :
2-Définir l’axe temporel :
T=1;
fe=8000;
N=T*fe;
f=[0:fe/N:fe-(fe/N)];
X=fft(x);
T=1;
fe=8000;
N=T*fe;
f=[0:fe/N:fe-(fe/N)];
X=fft(x);
plot(f,abs(X));
grid;
-----le spectre n’est pas décroissant par ce que le son qui sort de la bouche qui est lui-même
un filtre, donc normalement puisqu’il est périodique ça doit être décroissant ms la bouche
à jouer sur les amplitudes (basses fréquence, hautes fréquences).
x=x(3000 :4000 ) ;
-tracé ;
x=x(3000 :4000 ) ;
plot(x) ;
grid ;
---- commentaire :
f=226,
----- pour N=1001 ; on va enregistrer un nouveau signal x , et on poursuit les même étapes
pour avoir les fondamentales.
T=1;
fe=8000;
N=1001 ;
X=wavrecord(N,fe) ;
f=[0:fe/N:fe-(fe/N)];
X=fft(x);
Plot(f,abs(X)) ;
grid;
---la figure de X
x=x(3000 :4000 ) ;
plot(x);
B-AUTOCCORELATION :
Remarque :
2-traçage :
R=xcorr(x,x) ;
Plot(R) ;
--- commentaire :
R1=R(kmax :end) ;
Plot(R1);
Traçage :
4- localiser :
On trouve :
K0=60
Te, on trouve :
Fréquence fondamentale
F0=1/T0 ;
III- CONCLUSION :
Le but de cette manipulation et de détecter les numéros DTMF d’un téléphone fixe a
partir de l’enregistrement des sons des tonalités de ces numéros.
Dans ce TP, a partir du son émet à partie de l’haut parleur, on peut tirer l’information
II- MANIPULATION :
plot(x) ;
grid ;
[x,fe,Nbits]=wavread(‘1.wav’) ;
plot(x) ;
grid ;
Figure 2 : Signal x(k) avec stéréo (Enregistré 1 du dossier DTMF3)
Comparaison :
er
D’après les deux coures 1 et 2, on peut dire que le 1 fichier est un
enregistrement mono stéréo par un seul microphone par rapport au
2éme fichier : il s’agit d’un enregistrement stéréo qui utilisent deux
microphones.
[x,fe,Nbits]=wavread('1.wav');
x=x(1 :end/2) ;
plot(x);
grid;
Figure 3 : Signal x(k) sans stéréo avec une valeur moyenne non
nulle (Enregistré 1 du dossier DTMF3)
[x,fe,Nbits]=wavread('1.wav');
x=x(1 :end/2) ;
x=x-mean(x);
plot(x);
grid;
Figure 4 : Signal x(k) sans stéréo avec une valeur moyenne
nulle (Enregistré 1 du dossier DTMF3)
N=lengh(x) ;
Le programme est :
[x,fe,Nbits]=wavread('1.wav');
x=x(1 :end/2) ;
x=x-mean(x);
N=length(x);
6- -supprimer
7- -Définir l’axe fréquentielle f=[0 :fe/N :fe -fe/N] ;
[x,fe,Nbits]=wavread('1.wav');
x=x(1 :end/2) ;
x=x-mean(x);
N=length(x);
fe=8000;
f=[0:fe/N:fe-(fe/N)];
[x,fe,Nbits]=wavread('1.wav');
x=x(1 :end/2) ;
x=x-mean(x);
N=length(x);
fe=8000;
f=[0:fe/N:fe-fe/N];
X=fft(x);
On aura les valeurs qui sont :
Figure 5 : qcq valeurs de valeurs de spectre
[x,fe,Nbits]=wavread('1.wav');
x=x(1 :end/2) ;
x=x-mean(x);
N=length(x);
fe=8000;
f=[0:fe/N:fe-fe/N];
X=fft(x);
plot(f,abs(X));
grid;
Figure 6 : le spectre d’amplitude en fct de f
Remarque :
Dans cette partie on va concevoir un filtre passe bande pour filtres les fréquence qui vas
nous renseigner sur le numéro approprié , on aura donc de 7 filtres passe bande , cela veut
dire que le signal d’entré va passer a travers les 7 filtres à la fin , on va avoir deux fréquence
correspond a un numéro , on va faire les questions 1-2-3 les fréquence correspondant au
numéro « 1 » , et c’est le même enchainement pour les autres filtres , on donne dans la
question directement les programmes de conception des filtres.
bandpass');
2- -Calculer H(f) et faire le traçage avec la
commande [H,f]=freqz(b,a,512,fe) ;
[H1,f1]=freqz(b1,a1,512,fe);
plot(f1,abs(H1));
grid;
….ect
e,'bandpass');
[H2,f2]=freqz(b2,a2,512,fe);
plot(f2,abs(H2));
grid;
[H3,f3]=freqz(b3,a3,512,fe);
plot(f3,abs(H3));
grid;
[H4,f4]=freqz(b4,a4,512,fe);
plot(f4,abs(H4));
grid;
[H5,f5]=freqz(b5,a5,512,fe);
plot(f5,abs(H5));
grid;
[H6,f6]=freqz(b6,a6,512,fe);
plot(f6,abs(H6));
grid;
[H7,f7]=freqz(b7,a7,512,fe);
plot(f7,abs(H7));
grid;
1-Filtrer le signal enregistré par l’ensemble des 7 filtres par la commande y=filter(b,a,x1):
Avec :
y1=filter(b1,a1,x);
y2=filter(b2,a2,x);
y3=filter(b3,a3,x);
y4=filter(b4,a4,x);
y5=filter(b5,a5,x) ;
y6=filter(b6,a6,x);
y7=filter(b7,a7,x);
2-mesurer les 7 puissances avec la commande P1=var(y1) ;
p1=var(y1);
p2=var(y2);
p3=var(y3);
p4=var(y4);
p5=var(y5);
p6=var(y6);
p7=var(y7);
p=[p1,p2,p3,p4,p5,p6,p7];
stem(p);
Figure 8 : le spectre d’amplitude en fct de f
Remarque :
Pour ne pas avoir des valeurs assez grande, on travaille avec les fréquences normalisés avec
la commande « max(p) ; »
[H,f]=freqz(b1,a1,512,fe);
plot(f,abs(H))
[H,f]=freqz(b2,a2,512,fe);
plot(f,abs(H))
[H,f]=freqz(b3,a3,512,fe);
plot(f,abs(H))
[H,f]=freqz(b4,a4,512,fe);
plot(f,abs(H))
[H,f]=freqz(b5,a5,512,fe);
plot(f,abs(H))
dpass');
[H,f]=freqz(b6,a6,512,fe);
plot(f,abs(H))
[H,f]=freqz(b7,a7,512,fe);
plot(f,abs(H))
y1=filter(b1,a1,x);
p1=var(y1);
y2=filter(b2,a2,x);
p2=var(y2);
y3=filter(b3,a3,x);
p3=var(y3);
y4=filter(b4,a4,x);
p4=var(y4);
y5=filter(b5,a5,x);
p5=var(y5);
y6=filter(b6,a6,x);
p6=var(y6);
y7=filter(b7,a7,x);
p7=var(y7);
clf
p=[p1,p2,p3,p4,p5,p6,p7] ;
a=max(p) ;
p=p/a ;
stem(p) ;
On va voir
Figure 9 : le spectre d’amplitude en fct de f
Conclusion :
Dans cette manipulation, on a fait la détection les numéros DTMF d’un téléphone fixe à
partie de l’enregistrement des sons des tonalités de ces numéros.
I-BUT :
Cette manipulation a pour but de synthétiser les notes musicales d’un piano après avoir les
modéliser : La méthode additive.
II- MANIPULATION :
Les méthodes de synthèse du son d’une note musicale sont nombreux, en particulier , il
existe la méthode additive qui consiste a modéliser un signal original déjà enregistrée puis
faire synthèse en lui attaquant par la courbe d’ADSR pour se rapprocher du signal original.
A-MODELISATION :
[x,fe,Nbits]=wavread('1piano_do.wav');
Traçage du signal:
[x,fe,Nbits]=wavread('1piano_do.wav');
plot(x);
grid;
[x,fe,Nbits]=wavread('1piano_do.wav');
x=x(1:end/2);
N=length(x) ;
plot(x);
grid;
On trouve exactement : N =75797
T=Te*N ;
[x,fe,Nbits]=wavread('1piano_do.wav');
x=x(1:end/2);
N=75797;
Fe=8000;
Te=1/Fe;
T=N*Te;
t=[0:Te:T-Te];
plot(t,x) ;
-----adsr :
b=[400,500,1600,2300,3400,4700,6000,16000] ;
adsr=[0,0.5,0.2,0.16,0.09,0.08,0.07,0] ;
plot(b,adsr);
>> grid;
Figure 3 : courbe
Remarque :
Avec hold on , on trace les deux signaux , et on les compare :
Le programme est le suivant :
[x,fe,Nbits]=wavread('1piano_do.wav');
x=x(1:end/2);
N=length(x);
plot(x);
grid;
hold on;
b=[400,500,1600,2300,3400,4700,6000,16000] ;
adsr=[0,0.5,0.2,0.16,0.09,0.08,0.07,0] ;
plot(b,adsr);
grid;
Le tracé :
Comparaison :
[x,fe,Nbits]=wavread('1piano_do.wav');
x=x(1:end/2);
N=length(x);
Fe=8000;
f=[0:Fe/N:Fe-(Fe/N)];
plot(x);
[x,fe,Nbits]=wavread('1piano_do.wav');
x=x(1:end/2);
N=length(x);
Fe=8000;
f=[0:Fe/N:Fe-(Fe/N)];
X=fft(x);
On aura les valeurs qui sont :
Figure 5 :
7-Relever les amplitudes des différentes harmoniques et les placer sur un vecteur nommé
A:
F0=74 HZ
F0 A1
2f0-----
3f0=
A=[180,220,200,120,50,20] ;
B-SYNTHESE :
1-créer un signal x1 contenant des cosinus de fréquence harmoniques celles qui sont
relevés dans le vecteur A :
On a trouvé :
[x,fe,Nbits]=wavread('1piano_do.wav');
x=x(1:end/2);
N=75797;
Fe=8000;
Te=1/Fe;
T=N*Te;
t=[0:Te:T-Te];
F0=75 ;
A=[180,220,200,120,50,20] ;
x1=180*cos(2*pi*F0*t) +220* cos(2*pi*2*F0*t)
+200*cos(2*pi*3*F0*t) +120* cos(2*pi*4*F0*t)
+50*cos(2*pi*5*F0*t) +20* cos(2*pi*6*F0*t) ;
b=[400,500,1600,2300,3400,4700,6000,16000] ;
adsr=[0,0.5,0.2,0.16,0.09,0.08,0.07,0] ;
ADSR=interp1(b,adsr,t/Te,'linear') ;
x2=x1.*ADSR ;
x2=x2/max(x2);
plot(x/max(x));
hold on;
plot(x2,'r');
grid;
Traçage du spectre de :
4-Ecouter
[x,fe,Nbits]=wavread('1piano_do.wav');
x=x(1:end/2);
N=75797;
Fe=8000;
Te=1/Fe;
T=N*Te;
t=[0:Te:T-Te];
F0=75 ;
A=[180,220,200,120,50,20] ;
x1=180*cos(2*pi*F0*t) +220* cos(2*pi*2*F0*t)
+200*cos(2*pi*3*F0*t) +120* cos(2*pi*4*F0*t)
+50*cos(2*pi*5*F0*t) +20* cos(2*pi*6*F0*t) ;
b=[400,500,1600,2300,3400,4700,6000,16000] ;
adsr=[0,0.5,0.2,0.16,0.09,0.08,0.07,0] ;
ADSR=interp1(b,adsr,t/Te,'linear') ;
x2=x1.*ADSR ;
x2=x2/max(x2);
plot(x/max(x));
hold on;
plot(x2,'r');
grid;
4- écouter les deux par la commande soundsc(x,fe), pause(2),soundsc(x2,fe)
5- Conclusion
III- CONCLUSION :
Dans ce TP on a pu faire la réalisation et la synthèse d’une note musicale d’un piano à partir
de la méthode additive.