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 « [Link] » 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 [Link] et [Link].
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