Vous êtes sur la page 1sur 13

Classes pour le traitement numérique du signal

UEF MINA – Mathématiques et informatique du signal

Jean-Luc C HARLES
Éric D UCASSE
Thomas M ILCENT

ÉD, JLC, TM (Arts & Métiers PT) Classes pour le traitement du signal V1.2 – Octobre 2021 1/9
Signal numérique La classe numSig

classe numSig
« attributs » en lecture-écriture
+ Ts : float Période d’échantillonnage
+ t0 : float Instant de début du signal
+ label : string Étiquette du signal
« attributs » en lecture seule
+ values : vector of floats Valeurs du signal
+ nt : integer Nombre de valeurs
+ timeValues : floats Instants d’échantillonnage
..........................................
« variable de classe » en lecture seule
+ instances : list of numSig Tous les signaux numériques créés
Méthodes publiques
+ numSig( values : floats, Ts : float, t0 : float, label : string )
+ copy() : numSig Renvoie une copie du signal

Restriction On fera toujours en sorte que le nombre de valeurs soit pair. Le constructeur rajoute
automatiquement un zéro à la fin si la liste de valeurs qu’on lui fournit comporte un nombre impair
de valeurs.

ÉD, JLC, TM (Arts & Métiers PT) Classes pour le traitement du signal V1.2 – Octobre 2021 2/9
Représentation de signaux La classe signalPlotter

classe signalPlotter
Attributs
- filePath : string Chemin du fichier où l’on mémorise le dernier tracé
- signals_to_be_plotted : list Signaux et directives graphiques
- FTs_to_be_plotted : list Transformées de F OURIER et directives graphiques
Méthodes
+ signalPlotter( file_path : string )
- restore() Restauration du dernier tracé
- save() Sauvegarde du dernier tracé

ÉD, JLC, TM (Arts & Métiers PT) Classes pour le traitement du signal V1.2 – Octobre 2021 3/9
Analyse spectrale d’un signal à temps continu Transformée de F OURIER

Signal à temps continu s


Transformée de Fourier du signal à temps continu :
Z +∞
s(f ) =
b s(t) exp(−2 i π f t) dt , avec b
s(−f ) = b
s(f )
−∞

Décomposition spectrale du signal à temps continu :


(
Z +∞ Z +∞ as (f ) = 2 b
s(f )
s(t) = s(f ) exp(2 i π f t) df =
b as (f ) cos(2 π f t+φs (f )) df 
−∞ 0 s(f )
φs (f ) = arg b

ÉD, JLC, TM (Arts & Métiers PT) Classes pour le traitement du signal V1.2 – Octobre 2021 4/9
Analyse spectrale d’un signal à temps continu Transformée de F OURIER

Signal à temps continu s


Transformée de Fourier du signal à temps continu :
Z +∞
s(f ) =
b s(t) exp(−2 i π f t) dt , avec b s(f )
s(−f ) = b
−∞

Décomposition spectrale du signal à temps continu :


(
Z +∞ Z +∞ as (f ) = 2 b
s(f )
s(t) = s(f ) exp(2 i π f t) df =
b as (f ) cos(2 π f t+φs (f )) df 
−∞ 0 s(f )
φs (f ) = arg b

ÉD, JLC, TM (Arts & Métiers PT) Classes pour le traitement du signal V1.2 – Octobre 2021 4/9
Analyse spectrale d’un signal à temps continu Transformée de F OURIER

Signal à temps continu s


Transformée de Fourier du signal à temps continu :
Z +∞
s(f ) =
b s(t) exp(−2 i π f t) dt , avec b
s(−f ) = b
s(f )
−∞

Décomposition spectrale du signal à temps continu :


(
Z +∞ Z +∞ s(f )
as (f ) = 2 b
s(t) = s(f ) exp(2 i π f t) df =
b as (f ) cos(2 π f t+φs (f )) df 
−∞ 0 s(f )
φs (f ) = arg b

ÉD, JLC, TM (Arts & Métiers PT) Classes pour le traitement du signal V1.2 – Octobre 2021 4/9
Analyse spectrale d’un signal à temps continu La classe anaSig

classe anaSig
« Attributs publics en lecture seule » :
+ tmin Instant avant lequel le signal est nul
+ tmax Instant après lequel le signal est nul
+ fmax Fréquence au-delà de laquelle la transf. de F OURIER du signal est nulle
+ label Étiquette du signal
+ array Tableau à 2 lignes pour un tracé de courbe du signal avec une résolution acceptable
+ FTarray Tableau à 3 lignes pour des tracés corrects de la transf. de F OURIER du signal
Méthodes publiques :
+ anaSig(func_or_vec, t_beg, t_end, label[, f_up])
func_or_vec fonction ou vecteur de valeurs, t_beg instant de début, t_end instant
de fin, [optionnel] f_up fréquence au-delà de laquelle on est sûr que la transformée
de F OURIER est nulle, nécessaire uniquement si func_or_vec est une fonction.
+ __call__(Vt:ndarray)
nom(Vt) renvoie les valeurs du signal aux différents instants dans Vt
+ FT(Vf:ndarray)
Renvoie les valeurs complexes de la transf. de F OURIER du signal aux différentes
fréquences dans Vf
+ write() Sauvegarde dans le dossier anaSig.sig_dir (attribut statique)
Méthodes statiques :
+ DAC(sn:numSig) Conversion numérique → analogique, renvoie une instance de anaSig
+ read(file_path:str) Renvoie une instance de anaSig à partir d’un fichier

ÉD, JLC, TM (Arts & Métiers PT) Classes pour le traitement du signal V1.2 – Octobre 2021 5/9
Transformée de F OURIER numérique L’utilisation de la FFT

Signal à temps continu s / Signal échantillonné s? (sk? = s(tk ))


Période d’échantillonnage Ts
fenêtre d’acquisition [t00 , t00 + Tw ], avec t00 = t0 − Ts /2
Transformée de Fourier du signal à temps continu :
Z t00 +Tw
s(f ) ≈
b s(t) exp(−2 i π f t) dt
t00

ÉD, JLC, TM (Arts & Métiers PT) Classes pour le traitement du signal V1.2 – Octobre 2021 6/9
Transformée de F OURIER numérique L’utilisation de la FFT

Transformée de Fourier du signal à temps continu :


nt −1 nt −1
(Ts s(tk )) exp(−2 i π f tk ) = Ts exp(−2 i π f t0 ) sk? exp(−2 i π k f Ts )
X X
s(f ) ≈
b
k =0 k =0

Transformée de Fourier discrète / Pas de discrétisation en fréquence δf = 1/(nt Ts )


nt −1
s(j δf ) ≈ Ts exp(−2 i π j δf t0 ) sk? exp(−2 i π k j/nt )
X [Cooley & Tuckey, 1965]
b
Module numpy.fft
k =0
| {z }
 
TFD de s= s0? ,··· ,sn? −1
t

ÉD, JLC, TM (Arts & Métiers PT) Classes pour le traitement du signal V1.2 – Octobre 2021 7/9
Transformée de F OURIER numérique L’utilisation de la FFT

 rfft nt −1
−→ b
sk? exp(−2 i π j k /nt )
 X
s = s0? , · · · , sn?t −1 irfft S

= S0 , · · · , Snf −1 avec Sj =
←− k =0
 
nf −2
1 
Re Sj exp(2 i π j k /nt ) 
X
k
sk?

= S0 + (−1) Snf −1 + 2
nt
j=1

fs 1
f max = (nf − 1) δf = =
2 2 Ts

ÉD, JLC, TM (Arts & Métiers PT) Classes pour le traitement du signal V1.2 – Octobre 2021 8/9
Transformée de F OURIER numérique L’utilisation de la FFT

 rfft nt −1
−→ b
sk? exp(−2 i π j k /nt )
 X
s = s0? , · · · , sn?t −1 irfft S

= S0 , · · · , Snf −1 avec Sj =
←− k =0
 
nf −2
1 
Re Sj exp(2 i π j k /nt ) 
X
k
sk?

= S0 + (−1) Snf −1 + 2
nt
j=1

fs 1
f max = (nf − 1) δf = =
2 2 Ts

ÉD, JLC, TM (Arts & Métiers PT) Classes pour le traitement du signal V1.2 – Octobre 2021 8/9
Transformée de F OURIER numérique L’utilisation de la FFT

 rfft nt −1
−→ b
sk? exp(−2 i π j k /nt )
 X
s = s0? , · · · , sn?t −1 irfft S

= S0 , · · · , Snf −1 avec Sj =
←− k =0
 
nf −2
1 
Re Sj exp(2 i π j k /nt ) 
X
k
sk?

= S0 + (−1) Snf −1 + 2
nt
j=1

fs 1
f max = (nf − 1) δf = =
2 2 Ts

ÉD, JLC, TM (Arts & Métiers PT) Classes pour le traitement du signal V1.2 – Octobre 2021 8/9
Transformée de F OURIER numérique La classe numFT

classe numFT
« attribut » en lecture-écriture
+ df : float Pas de discrétisation en fréquences
+ label : string Étiquette de la T.F. numérique
« attributs » en lecture seule
+ values : vector of complexes Valeurs de la T.F. numérique
+ ASDValues : vector of floats Valeurs de la D.S.A.*
+ phaseValues : vector of floats Valeurs du déphasage en radians
+ nf : integer Nombre de valeurs, nf=nt//2+1
+ nt : integer Nombre de valeurs du signal correspondant,
nt=2*(nf-1)
+ frequencyValues : vector of floats Fréquences discrétisées
............................................
« variable de classe » en lecture seule
+ instances : list of numFT Toutes les T.F. numériques créées
Méthodes publiques
+ numFT( values : complexes, df : float, label : string )
+ copy() : numFT
*
D.S.A. : Densité Spectrale d’Amplitude / ASD : Amplitude Spectrum Density.

ÉD, JLC, TM (Arts & Métiers PT) Classes pour le traitement du signal V1.2 – Octobre 2021 9/9

Vous aimerez peut-être aussi