Vous êtes sur la page 1sur 18

TP9 : traitement numérique d’un signal

• Rappel: Implémentation de filtres RIF

• Implémentation de filtres RII

• Détection de minimas et maximas locaux

1
Implémentation de filtres RIF

La fonction :
s2 = filter(coef_entrée, coef_sortie, s)

filtre le signal d’entrée s1 et renvoie le signal de sortie filtré s2.


coef_entrée est un vecteur contenant les coefficients de l’entrée.
coef_sortie est un vecteur contenant les coefficients de la sortie.

La fréquence d’échantillonnage est de 20000 Hz.

Le schéma-bloc du filtre RIF est :

Les coefficients des filtres sont :


Coef. Filtre passe- Filtre passe-
bas haut
b0 0.25 -0.25
b1 0.5 0.5
b2 0.25 -0.25 2
Implémentation de filtres RIF

Les différentes étapes:

 Dialogue avec l’utilisateur :


- choix de la fréquence de la cosinusoïde (0, 500, 1000, 1500 ou 2000 Hz)
- choix du type de filtre (passe-bas : 1, passe-haut : 2)

 Implémentation :
• de la cosinusoïde avec une amplitude de 3
• du filtre en fonction du choix de l’utilisateur (passe-haut ou passe-bas).

 Affichage temporel de la cosinusoïde sur une sous-fenêtre du haut.

 Calcul de la cosinusoïde filtrée.

Affichage temporel de la cosinusoïde filtré sur une sous-fenêtre du bas.

Audition des deux sinusoïdes


(durée : 1 seconde par cosinusoïde avec une seconde d’intervalle entre les deux)

3
Implémentation de filtres RIF

Les différentes étapes:

 Dialogue avec l’utilisateur :


- choix de la fréquence de la cosinusoïde (0, 500, 1000, 1500 ou 2000 Hz)
- choix du type de filtre (passe-bas : 1, passe-haut : 2)

4
Implémentation de filtres RIF

Les différentes étapes:

 Implémentation :
• de la cosinusoïde avec une amplitude de 3
• du filtre en fonction du choix de l’utilisateur
(passe-haut ou passe-bas).

5
Implémentation de filtres RIF

Les différentes étapes:

 Affichage temporel de la cosinusoïde sur une sous-fenêtre du haut.

 Calcul de la cosinusoïde filtrée.

Affichage temporel de la cosinusoïde filtré sur une sous-fenêtre du bas.

Audition des deux sinusoïdes


(durée : 1 seconde par cosinusoïde avec une seconde d’intervalle entre les deux)

6
Implémentation de filtres RIF

Les différentes étapes:

 Affichage temporel de la cosinusoïde sur une sous-fenêtre du haut.

Affichage temporel de la cosinusoïde filtré sur une sous-fenêtre du bas.

7
Implémentation de filtres RII

Les filtres les plus utilisés en traitement du signal sont des filtres RII : filtres qui
utilisent les échantillons de l’entrée et les échantillons précédents de la sortie pour
calculer le signal de sortie.

Dans Scilab, il existe une fonction qui calcule automatiquement la fonction de


transfert des filtres de type passe-bas, passe-haut ou passe-bande. La fonction de
transfert peut alors être utilisée pour filtrer le signal.

La fonction :
myfilter = iir(n, «type_filtre», «butt», [fc1 fc2],[0 0])

calcule la fonction de transfert (myfilter) pour un filtre butterworth (butt) d’ordre n de


type type_filtre. Les fréquences de coupure sont indiquées par fc1 et fc2;

8
Implémentation de filtres RII

• type_filtre : lp (low-pass : passe-bas)


bp (band-pass : passe-bande)
hp (high-pass : passe-haut)

• « butt » : filtre numérique butterworth : filtre conçu pour avoir un gain constant dans
la bande passante.

• [fc1 fc2] : définit les fréquences de coupure du filtre.


Pour les filtres passe-bas et les filtres passe-haut, seul fc1 est défini. Pour les filtres
passe-bande, fc1 représente la fréquence de coupure inférieure et fc2, la fréquence de
coupure supérieure.

Les fréquences de coupure doivent être normalisées. Pour normaliser les fréquences
de coupure, on divise la fréquence par la fréquence d’échantillonnage.

Exemple : fréquence de coupure pour un filtre passe-bande 1500-3000 Hz:


fréquence d’échantillonnage = 16000
fréquence de coupure 1 = 1500/16000
fréquence de coupure 2 = 3000/16000
9
Implémentation de filtres RII

Lorsque la fonction de transfert est définie, on peut filtrer le signal d’entrée.

La fonction :
s_output = flts(s_input, myfilter)

filtre le signal d’entrée s_input à l’aide du filtre my_filter et produit en sortie le signal
s_output.

10
Implémentation de filtres RII

Exercice :

Créer un signal qui est le résultat de l’addition de 4 sinusoïdes d’amplitude 1 et de


fréquence 500, 1000, 1500 et 3000 Hz. La fréquence d’échantillonnage est de 8000 Hz.
Visualiser la représentation temporelle et la représentation spectrale de ce signal.

Filtrer ce signal à l’aide de trois filtres butterworth d’ordre 15 :


- un filtre passe-bas de 0 à 750 Hz
- un filtre passe-bande de 750 à 2000 Hz
- un filtre passe-haut de 2000 à 4000Hz(théorème de Shannon)
Visualiser les représentations temporelles et spectrales de ces 3 signaux.

Supprimer les sinusoïdes comprises dans le bande passante 750 – 2000 Hz.

Créer le signal résultant et visualiser sa représentation temporelle et sa représentation


spectrale.

11
Implémentation de filtres RII

Exercice :

Visualiser la représentation temporelle et la représentation spectrale de ce signal.


Visualiser les représentations temporelles et spectrales de ces 3 signaux.

12
Implémentation de filtres RII

Exercice :

Créer le signal résultant et visualiser sa représentation temporelle et sa représentation


spectrale.

13
Implémentation de filtres RII

Exercice :

Lire le signal « GofTmono1.wav » et le récupérer dans s.


Extraire un extrait (de 12s à 20s) dans s_input et visualiser la représentation
temporelle et la représentation spectrale de cet extrait.

Filtrer ce signal à l’aide de 2 filtres butterworth d’ordre 10 :


- un filtre passe-bas de fréquence de coupure 5000 Hz
- un filtre passe-haut de fréquence de coupure 5000 Hz

Visualiser les représentations temporelles et spectrales de ces 2 signaux.

Ecouter ces signaux ainsi que s_input et s. Qu’observez-vous ?

14
Implémentation de filtres RII

Exercice :

15
Détection de minimas et maximas locaux
La détection de minimas ou maximas locaux peut notamment être utilisée pour
différencier certains types de sons : un signal de parole et un bruit constant.

Pour calculer ces minimas et maximas, on peut utiliser la fonction :

[peaktime, peakamp]=MaximaDetection(s, d, fe)

[peaktime, peakamp]=MinimaDetection (s, d, fe)

prédéfinies dans les script MaximaDetection.sci et MinimaDetection.sci.


Ces fonctions prennent en entrée un signal (s), une durée (d) sur laquelle les extrema
sont calculés, et la fréquence d’échantillonnage fe. Elles calculent en sortie deux
vecteurs : un vecteur peaktime qui indique les instants (en échantillons) où les pics
apparaissent et un vecteur peakamp qui indique l’amplitude à ces instants.

On peut ensuite représenter graphiquement ces pics à l’aide de la fonction :

plot2d(peaktime, peakamp)
16
Détection de minimas et maximas locaux

Exercice :
Visualiser la représentation temporelle, les maximas et les minimas locaux du signal
ayant les caractéristiques suivantes :

- fréquence d’échantillonnage : 1000 Hz


- durée : 2 secondes
- dmin-max = 0.01
- composante du signal : trois sinusoïdes :

s1 : f1 = 1 Hz A1 = 0.3
s2 : f2 = 20 Hz A2 = 1.4
s3 : f3 = 50 Hz A3 = 4.2

17
Détection de minimas et maximas locaux

Exercice:
Visualiser la représentation temporelle, les maximas et les minimas locaux du signal
ayant les caractéristiques suivantes :

18