Anda di halaman 1dari 6

TD n◦2 : Notion de Fréquence v. 1.

0
MASTER 2 mention Electronique, Energie Electrique,
Automatique
Parcours Traitement de l’Information et Instrumentation pour
l’Ingénieur (T3I)
Semestre 9 - UE 6 Traitement du Signal
Campus Roannais / LASPI

Frédéric
c BONNARDOT 2018, Reproduction interdite.
2018 - 2019

1 Objectifs
L’objectif de ce TD est de :
— Générer des signaux à fréquence constante ou variable,
— Estimer la fréquence instantanée.

1
Table des matières
1 Objectifs 1

2 Signal stationnaire (sinusoïde + bruit) 2


2.1 Génération du signal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.2 Estimation du spectre . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

3 Signal non stationnaire (chirp) 4


3.1 Génération du signal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.2 Estimation du spectre . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

4 Fréquence instantanée 4
4.1 Estimation de la fréquence instantanée . . . . . . . . . . . . . . . . . . . 4
4.2 Application à la sinusoïde . . . . . . . . . . . . . . . . . . . . . . . . . . 5
4.3 Application au chirp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
4.4 Application à un sifflement . . . . . . . . . . . . . . . . . . . . . . . . . 5
4.4.1 Lecture du fichier wav . . . . . . . . . . . . . . . . . . . . . . . . 5
4.4.2 Estimation module et fréquence instantannée . . . . . . . . . . . 6
4.5 Signal avec deux composantes . . . . . . . . . . . . . . . . . . . . . . . . 6

Introduction
L’analyse temps fréquence permet d’analyser des signaux non stationnaires, c’est
à dire dont les caractéristiques varient dans le temps. Nous allons voir ici comment
générer de tels signaux.
Nous nous intéresserons ensuite à l’estimation de la fréquence instantanée dans le
cas d’un signal avec une seule fréquence.

2 Signal stationnaire (sinusoïde + bruit)


2.1 Génération du signal
Nous allons ici étudier le signal :

x (t) = sin(2πf1 t) + b (t) (1)

Nous choisirons les paramètres suivant :


fréquence d’échantillonnage fech = 20 kHz
Durée du signal Tsig = 20 ms
Fréquence f1 f1 = 1 kHz
Bruit Gaussien centré SNR=10 dB
On rappel que :
P
— SN R = 10 log10 Psignal
bruit
= 20 log10 VVef f (signal)
ef f (bruit) (où Veff est la valeur efficace)

2

— la valeur efficace d’une sinusoïde est 22
En vous aidant :
— du précédent TD qui liste les fonctions de manipulation de matrices et vecteurs,
— des exemples du cours,
— de la documentation de NumPy et notamment de la liste des fonctions mathéma-
tiques (https://docs.scipy.org/doc/numpy/reference/routines.math.html).
créez un script Python nommé gen_sin.py permettant de générer un tel signal en
complétant le modèle si dessous.
# Import des modules (fonctionnalités)
import numpy as np # Gestion des vecteurs et matrices
import matplotlib.pyplot as plt # Affichage de courbes

# Déclaration des constantes


fech=

# Création du vecteur temps


t=

# Création du signal
x=

# Affichage du signal
plt.figure("Sinusoide + bruit")
plt.plot(t,x)
plt.xlabel("Temps [s]")
plt.ylabel("Amplitude")
plt.title("x(t) = sin(2 pi f_1 t)+b(t)")
plt.show()

# Affichage et calcul du spectre (pour partie suivante estimation du spectre)


plt.figure("Spectre")

plt.show ()

2.2 Estimation du spectre


Aller dans Aide -> Documentation de Nympy et Scipy, choisir Scipy Reference Guide
(ou aller directement à l’url https://docs.scipy.org/doc/scipy/reference/).
Dans API Reference, choisir signal processing (scipy.signal). Une liste de fonctions
classées par thème s’affiche. Allez dans le thème Spectral Analysis. Trouvez le nom de
la fonction qui permet d’estimer le spectre par la méthode de Welch. Cliquez sur le
nom de cette méthode. Le mode d’emploi et une série d’exemples s’affichent.
Nous n’utiliserons que les deux premiers paramètres : x et fs. Nous ne renseignerons
pas les autres qui prendront leurs valeurs par défaut. En étudiant l’exemple, faites le
nécessaire pour afficher le spectre (échelle semilog).
Interprétez le spectre.
Que se passe-t-il si l’on change le SNR (essayer 0 dB, 20 dB, 40 dB, -10 dB) ?

3
3 Signal non stationnaire (chirp)
3.1 Génération du signal
On désire générer un signal y(t) défini par :

x (t) = chirp(t) + b (t) (2)

où chirp(t) est un signal dont la fréquence varie entre fmin et fmax sur toute la
durée du signal Tsig .
Nous choisirons les paramètres suivants :
fréquence d’échantillonnage fech = 20 kHz
Durée du signal Tsig = 20 ms
Fréquence fmin fmin = 1 kHz
Fréquence fmax fmax = 3 kHz
Bruit Gaussien centré SNR=10 dB
Créer un script Python nommé gen_chirp.py permettant de générer un tel signal.
Vous vous inspirerez de votre précédent script et du script disponible dans le cours.

3.2 Estimation du spectre


Estimez le spectre de la même manière que précédemment.
Est-ce que le résultat vous satisfait ?
Que se passe t’il si l’on change le SNR (essayer 0 dB, 20 dB, 40 dB, -10 dB) ?
Que se passe t’il si l’on change fmax ?

4 Fréquence instantanée
4.1 Estimation de la fréquence instantanée
Le but de cette partie est d’estimer la fréquence instantanée en utilisant le signal
analytique.
Lancez votre script gen_sin.py pour charger en mémoire la sinusoïde (ce signal est
plus facile pour interpréter les résultats).
En vous aidant du cours créez un script est_finst.py qui calcule la fréquence instan-
tanée, module du signal et les affiche dans une figure. Utilisez une échelle qui débute à
0 les axes des ordonnée du module et de la fréquence instantanée (fonction plt.ylim).
A l’aide de la fonction print (documentation à l’url http://thomas-cokelaer.
info/tutorials/python/print.html), affichez pour le module et la fréquence ins-
tantanée leurs valeurs moyenne et leurs écart type. Affichez également le SNR.
Vous pourrez utiliser la fonction subplot de matplotlib.pyplot afin de superposer
trois graphes dans la même figure (exemple d’utilisation de pyplot dans le cours ou
dans le Tutoriel de matplotlib Pyplot à l’url https://matplotlib.org/tutorials/
introductory/pyplot.html).

4
4.2 Application à la sinusoïde
Comment doit être la fréquence instantané pour une sinusoïde ?
Faites varier le SNR 0 à 40 par pas de 10 pour
— observer l’influence du bruit sur la mesure de fréquence,
— relever l’écart type des mesures en fonction du SNR.
Tracez sur échelle semilog en y l’évolution de l’écart type en fonction du SNR exprimé
en dB.
En utilisant la courbe, trouvez quel SNR permet d’avoir une mesure avec un écart
type représentant 5% de la fréquence instantanée (donnez le SNR en dB et sur une
échelle linéaire). Faites le test pour vérifier.

4.3 Application au chirp


Estimez la fréquence instantanée et le module sur le signal chirp avec un SNR de 10
dB.
Que pensez vous des résultats ?
Faites de même avec le SNR trouvé à la question précédente.
Que ce passe t’il au début et surtout à la fin du signal ? Superposez sur le même
graphe la partie réelle et imaginaire du signal analytique. Affichez sur un autre gra-
phique la phase non déballée. Commentez ce qu’il ce passe à la fin.
Doublez la longueur du signal généré et allez jusqu’à fmax = 3, 9 kHz. Estimez la
fréquence instantané. Est-ce qu’il y a toujours le problème d’estimation à 2 kHz ou
est ce qu’il ce situe à la fin ? Concluez.

4.4 Application à un sifflement


4.4.1 Lecture du fichier wav
Récupérez le fichier sifflet.wav sur Claroline Connect et placer le dans le répertoire où
ce trouvent vos scripts. Pour obtenir ce signal j’ai simplement sifflé dans un microphone.
Utilisez le script suivant pour lire le fichier wav
# Import des modules (fonctionnalités)
import numpy as np # Gestion des vecteur et matrices
import matplotlib.pyplot as plt # Affichage de courbes
import scipy.io.wavfile as wav # Gestion des fichiers wav

# Lecture du fichier wav et de sa fréquence d’échantillonnage


fech, x = wav.read("Sifflet.wav")

# Création du vecteur temps


t=np.arange(0,signal.size/fech,1/fech)

ATTENTION : Dans le futur, vous devrez être capable de lire des fichiers wav sans
que je vous rappel comment faire.

5
4.4.2 Estimation module et fréquence instantannée
Visualisez le signal temporel. Est-ce que ce signal est une signal monocomposante ?
Estimez la fréquence instantanée et le module. Pourquoi la fréquence est mal estimée
dans certaines zones ?
Ecoutez le son, est-ce que le résultat obtenu est logique ?

4.5 Signal avec deux composantes


Ajoutez au signal du sifflet une sinusoïde d’amplitude 5000 et de fréquence 1 kHz.
Est-ce que l’estimation de la fréquence instantanée fonctionne ? Pourquoi ?
Même question avec une sinusoïde d’amplitude 1000.
Quelles sont les limites de l’utilisation du signal analytique ?

Anda mungkin juga menyukai