- Traitement du Signal - Site perso Benoit...

3
CESI Mont-Saint-Aignan fØvrier 2007 Benot Decoux 1 - Traitement du Signal – Travaux Pratiques – n°5 Objectifs : 1) Filtrage de type RII 2) Filtrage temps-réel 3) Filtrage de type RIF 4) Filtrage d’un signal réel par programmation Scilab. 1) Filtrage de type RII 1.1) GØnØrer quelques pØriodes dun signal constituØ par la somme de 2 signaux sinusodaux de mŒmes amplitudes et de frØquences respectives f 1 =10Hz et f 2 =100Hz. 1.2) Filtrer ce signal laide des fonctions iir et flts de Scilab (voir annexe). On prendra pour le filtre le type Butterworth passe-bas et lordre 8. Afficher le signal original et le signal filtrØ dans la mŒme fenŒtre. Commenter les rØsultats. 1.3) Recommencer avec le type passe-haut. Commenter. 1.4) A laide de la fonction bode de Scilab, afficher le diagramme de Bode de ce dernier filtre, et linterprØter. Indiquer notamment la pente de la variation du gain en dB/dØcade. 1.5) PrØcisez les coefficients du filtre numØrique utilisØ (en affichant le rØsultat de la fonction iir), et lØquation aux diffØrences correspondante (s(n) en fonction de s(n-i), i=1,2, et e(n-j), j=0,1,. 2) Filtrage temps-réel Le filtrage rØalisØ ci-dessus nest pas temps-rØel. Pour sapprocher dune implantation temps-rØel, il faut programmer soi-mŒme lØquation aux diffØrences. On choisit de programmer la version numØrique du filtre passe-bas du 2 e ordre programmØ pour le TP4, dont lØquation aux diffØrences est : 2.1) En utilisant les formules du cours, calculer ( laide de Scilab) les coefficients a i et b i du filtre numØrique pour avoir une frØquence de coupure f c =50Hz et un coefficient damortissement ξ=0,7. 2.2) Programmer lØquation aux diffØrences et lappliquer au signal prØcØdent. Commenter. 3) Filtrage de type RIF 3.1) En utilisant la mØthode de synthLse des filtre RIF pas dØveloppement en sØrie de Fourier de la rØponse frØquentielle (voir algorithme et programme vu en cours), calculer les coefficients dun filtre RIF passe-bas dont la frØquence de coupure est 50Hz. On prendra un nombre de coefficients N Øgal 10. 3.2) Afficher le diagramme de Bode de ce filtre en utilisant le programme suivant : d(N)=1; num=poly(h, "z", "coef"); den=poly(d, "z", "coef"); sys=syslin('d', num, den); //->sys=système linéaire xbasc; //effacement graphique bode(sys, 0.0001, 0.5); 3.3) Diminuer le phØnomLne dondulations dans la bande passante en pondØrant les coefficients par une fenŒtre de Hamming. Commentez. 3.4) Recommencer avec N=30. Commenter les diffØrences. ) 2 n ( s b ) 1 n ( s b ) 2 n ( e a ) 1 n ( e a ) n ( e a ) n ( s 2 1 2 1 0 + + + + =

Transcript of - Traitement du Signal - Site perso Benoit...

Page 1: - Traitement du Signal - Site perso Benoit Decouxbenoit.decoux.free.fr/ENSEIGNEMENT/SIGNAL/CESI/CESI_signal_0607… · CESI Mont-Saint-Aignan Œ fØvrier 2007 Œ Benoît Decoux 1

CESI Mont-Saint-Aignan � février 2007 � Benoît Decoux

1

- Traitement du Signal – Travaux Pratiques – n°5

Objectifs : 1) Filtrage de type RII 2) Filtrage temps-réel 3) Filtrage de type RIF 4) Filtrage d’un signal réel par programmation Scilab.

1) Filtrage de type RII 1.1) Générer quelques périodes d�un signal constitué par la somme de 2 signaux sinusoïdaux

de mêmes amplitudes et de fréquences respectives f1=10Hz et f2=100Hz. 1.2) Filtrer ce signal à l�aide des fonctions iir et flts de Scilab (voir annexe). On prendra

pour le filtre le type Butterworth passe-bas et l�ordre 8. Afficher le signal original et le signal filtré dans la même fenêtre. Commenter les résultats.

1.3) Recommencer avec le type passe-haut. Commenter. 1.4) A l�aide de la fonction bode de Scilab, afficher le diagramme de Bode de ce dernier

filtre, et l�interpréter. Indiquer notamment la pente de la variation du gain en dB/décade. 1.5) Précisez les coefficients du filtre numérique utilisé (en affichant le résultat de la

fonction iir), et l�équation aux différences correspondante (s(n) en fonction de s(n-i), i=1,2,� et e(n-j), j=0,1,�.

2) Filtrage temps-réel

Le filtrage réalisé ci-dessus n�est pas temps-réel. Pour s�approcher d�une implantation temps-réel, il faut programmer soi-même l�équation aux différences.

On choisit de programmer la version numérique du filtre passe-bas du 2e ordre programmé pour le TP4, dont l�équation aux différences est :

2.1) En utilisant les formules du cours, calculer (à l�aide de Scilab) les coefficients ai et bi du

filtre numérique pour avoir une fréquence de coupure fc=50Hz et un coefficient d�amortissement ξ=0,7.

2.2) Programmer l�équation aux différences et l�appliquer au signal précédent. Commenter. 3) Filtrage de type RIF 3.1) En utilisant la méthode de synthèse des filtre RIF pas développement en série de Fourier

de la réponse fréquentielle (voir algorithme et programme vu en cours), calculer les coefficients d�un filtre RIF passe-bas dont la fréquence de coupure est 50Hz. On prendra un nombre de coefficients N égal à 10.

3.2) Afficher le diagramme de Bode de ce filtre en utilisant le programme suivant : d(N)=1; num=poly(h, "z", "coef"); den=poly(d, "z", "coef"); sys=syslin('d', num, den); //->sys=système linéaire xbasc; //effacement graphique bode(sys, 0.0001, 0.5);

3.3) Diminuer le phénomène d�ondulations dans la bande passante en pondérant les coefficients par une fenêtre de Hamming. Commentez.

3.4) Recommencer avec N=30. Commenter les différences.

)2n(sb)1n(sb)2n(ea)1n(ea)n(ea)n(s 21210 −+−+−+−+=

Page 2: - Traitement du Signal - Site perso Benoit Decouxbenoit.decoux.free.fr/ENSEIGNEMENT/SIGNAL/CESI/CESI_signal_0607… · CESI Mont-Saint-Aignan Œ fØvrier 2007 Œ Benoît Decoux 1

CESI Mont-Saint-Aignan � février 2007 � Benoît Decoux

2

4) Filtrage d’un signal réel 4.1) Appliquer un filtrage passe-bas de type RII, avec une fréquence de coupure de 200 Hz

(environ) à un signal sonore stocké dans un fichier de type WAV. Ecouter et interpréter le résultat.

4.2) Même chose avec un filtrage passe-haut avec une fréquence de coupure de 500 Hz (environ).

4.3) Visualiser le spectrogramme du son non-filtré et celui du son filtré, et interpréter les différences entre eux.

Page 3: - Traitement du Signal - Site perso Benoit Decouxbenoit.decoux.free.fr/ENSEIGNEMENT/SIGNAL/CESI/CESI_signal_0607… · CESI Mont-Saint-Aignan Œ fØvrier 2007 Œ Benoît Decoux 1

CESI Mont-Saint-Aignan � février 2007 � Benoît Decoux

3

Annexe : Quelques fonctions Scilab de filtrage Fonction iir : génération d’un filtre de type RII

Cette fonction renvoie une structure de filtre (sous la forme d�une fonction de transfert) pouvant

être passé directement à la fonction de filtrage flts décrite après. Syntaxe : [hz]=iir(n,ftype,fdesign,frq,delta) Entrées : ! L�argument n est l�ordre du filtre (un entier positif). ! L�argument ftype est le type du filtre ; il peut prendre les valeurs

’lp’ : passe-bas, ’hp’ : passe-haut, ’bp’ : passe-bande ’sb’ : stoppe-bande

! L�argument fdesign indique le type de la technique de synthèse de filtre analogique ! La valeur de fdesign peut être

’butt’ pour un filtre de Butterworth filter design, ’cheb1’ for a Chebyshev filter design of the first type, ’cheb2’ for a Chebyshev filter design of the second type, or ’ellip’ for an elliptic filter design.

! L�argument frq est un vecteur à 2 élements contenant les fréquences de coupure du filtre désiré. Pour les filtres passe-bas et passe-haut, seul le 1er élément est utilisé (il faut quand même exprimer les 2 élements du vecteur avec la syntaxe [val1, val2], où val1 et val2 sont les valeurs des 2 éléments). Le 2e élément est utilisé pour les types passe-bande et stoppe-bande. Dans Scilab, les fréquences sont exprimées en proportion de la fréquence d�échantillonnage fe : cette proportion va de 0 à 1. Mais comme on est dans le domaine échantillonné, il faut respecter la condition de Shannon et ne pas travailler à des fréquences supérieures à fe/2, donc de 0 à 0,5. Par exemple, un signal de 1000 Hz, échantillonné à 10kHz, correspond à 0,1.

! delta : non utilisé avec les filtres de Butterworth (on le remplace alors [0 0]). Sortie : ! hz est la sortie de la fonction, un polynôme donnant les coefficients du filtre désiré. Fonction flts : application d’un filtre de type RII à un signal Syntaxe : [s]=flts(e,f) Entrées : ! e : le signal d�entrée ! f : le filtre (retourné par la fonction iir) Sortie : ! s : signal de sortie