Frédéric Legrand Licence Creative Commons 1 Introduction à l’analyse spectrale
Frédéric Legrand Licence Creative Commons 1 Introduction à l’analyse spectrale 1. Introduction Ce document est une introduction à l’analyse spectrale des signaux périodiques. Après avoir expliqué la décomposition d’un signal périodique en somme de fonctions sinusoï- dales, on verra comment effectuer l’analyse spectrale d’un signal échantillonné. 2. Série de Fourier et spectre d’un signal périodique On considère un signal périodique, représenté par une fonction u d’une variable t réelle à valeurs réelles, de période T et de classe C1 par morceaux. La fréquence fondamentale du signal est : f1 = 1 T (1) D’après le théorème de Fourier, cette fonction peut s’écrire comme une somme de si- nusoïdes dont les fréquences sont multiples de la fréquence fondamentale. La somme obtenue est la série de Fourier : u(t) = A0 2 + P X n=1 An cos n2π T t + φn (2) Dans certains cas, la somme peut être stoppée à un rang P fini. Dans d’autres cas, il faut en principe considérer la limite P →∞. Le terme de rang n est appelé l’harmonique de rang n du signal : c’est une sinusoïde de fréquence fn = nf1 = n T (3) L’harmonique de rang n est défini par son amplitude An (positive) et son déphasage ϕn. Le terme constant A0/2, qui peut être vu comme le terme de fréquence nulle, est la valeur moyenne du signal : A0 2 = 1 T Z T 0 u(t) dt (4) Considérons comme exemple une fonction dont la série de Fourier s’arrête au rang P = 3. On dit dans ce cas que le signal comporte trois harmoniques. Par convention, la période est prise égale à 1 : import numpy import math f1=1.0 def u(t): return 0.4+1.0*numpy.cos(2*numpy.pi*f1*t)\ +0.5*numpy.cos(2*2*numpy.pi*f1*t-numpy.pi/3)\ Frédéric Legrand Licence Creative Commons 2 +0.2*numpy.cos(3*2*numpy.pi*f1*t+numpy.pi/4) Pour tracer ce signal, il faut l’échantillonner, c’est-à-dire calculer les valeurs de u(t) pour des instants régulièrement répartis sur un intervalle et les placer dans un tableau. Voici un échantillonnage sur deux périodes comportant 500 points : import numpy N = 500 Tmax = 2.0 Te = Tmax/N t = numpy.arange(N)*Te x = u(t) La courbe du signal est obtenue avec la fonction plot, qui relie les points par des segments de droites. Si la période d’échantillonnage Te est petite par rapport à la période du dernièr harmonique (ici celui de rang 3), on obtient ainsi une bonne représentation graphique du signal. from matplotlib.pyplot import * figure(figsize=(10,4)) plot(t,x) xlabel(’t’) ylabel(’u’) axis([0,2,-2,2]) grid() 0.00 0.25 0.50 0.75 1.00 1.25 1.50 1.75 2.00 t 2.0 1.5 1.0 0.5 0.0 0.5 1.0 1.5 2.0 u Le spectre du signal est la représentation graphique de l’amplitude An en fonction de la fréquence. Un signal périodique a en théorie un spectre discret formé de raies, chacune correspondant à un harmonique. Pour cet exemple, il y a 4 raies : une pour la valeur moyenne (fréquence nulle) et 3 raies pour les harmoniques de rang 1, 2 et 3 : figure(figsize=(8,4)) stem([0,1,2,3],[0.8,1.0,0.5,0.2],’r’) xlabel(’f’) Frédéric Legrand Licence Creative Commons 3 ylabel(’A’) axis([-1,5,0,2]) grid() 1 0 1 2 3 4 5 f 0.00 0.25 0.50 0.75 1.00 1.25 1.50 1.75 2.00 A La raie de fréquence nulle a une amplitude égale au double de la valeur moyenne du signal (la composante dite continue). La première courbe (u en fonction de t) est la représentation temporelle du signal. Le spectre est la représentation fréquentielle du signal. En principe, il faudrait aussi tracer la phase ϕn pour avoir une représentation complète. Pour les calculs, il est commode d’introduire la série de Fourier sous forme complexe : u(t) = P X n=−P cn exp in2π T t (5) Le coefficient cn est un nombre complexe appelé coefficient de Fourier. Il se calcule à partir de la fonction u avec l’intégrale suivante : cn = 1 T Z T 0 u(t) exp −in2π T t (6) Puisque u(t) est réel, le coefficient de Fourier vérifie la propriété suivante : cn = c∗ −n (7) où l’étoile désigne le complexe conjugué. La somme s’écrit donc : u(t) =c0 + P X n=1 cn exp in2π T t + c−n exp −in2π T t (8) =c0 + P X n=1 2 Re cn exp in2π T t (9) Par identification, on en déduit : Frédéric Legrand Licence Creative Commons 4 c0 = A0 2 (10) cn = An 2 eiφn (n > 0) (11) 3. Transformée de Fourier discrète 3.a. Définition La transformée de Fourier discrète (TFD) est la transformation qui permet de calculer le spectre d’un signal discret, obtenu par échantillonnage d’un signal continu. Considérons un échantillonnage de la fonction u sur l’intervalle [0, T], comportant N points et défini par : tk = k T N (0 ≤k ≤N −1) (12) uk = u(tk) (13) On définit la période d’échantillonnage et la fréquence d’échantillonnage par : Te = T N (14) fe = 1 Te (15) Une valeur approchée de l’intégrale (6) définissant les coefficients de Fourier peut être obtenue par la méthode des rectangles : cn ≃1 T N−1 X k=0 T N uk exp −i2π n k N (16) Par définition, la transformée de Fourier discrète ([1]) est l’application qui aux N nombres uk associe les N nombres complexes suivants (0 ≤n ≤N −1) : ˜ Un = 1 N N−1 X k=0 uk exp −i2πnk N (17) La TFD vérifie la propriété suivante (si uk est réel) : ˜ Un = ˜ U ∗ N−n (18) La transformée de Fourier discrète est calculée numériquement avec l’algorithme dit de Transformée de Fourier rapide. La fonction qui effectue ce calcul (sur un oscilloscope ou dans un logiciel) est souvent désignée par FFT (Fast Fourier Transform). Frédéric Legrand Licence Creative Commons 5 3.b. Exemple : polynôme trigonométrique Si u est un polynôme trigonométrique, il existe un rang P fini tel que ∀n > P on a cn = 0. Autrement dit, la série de Fourier s’arrête à un rang fini. Il existe donc dans le spectre du signal une fréquence maximale : fmax = P T (19) On suppose que la condition de Nyquist-Shannon est vérifiée : la fréquence d’échantillon- nage est supérieure au double de la fréquence maximale du spectre fe > 2fmax (20) ou encore : N > 2P (21) Si cette condition est vérifiée, alors les P +1 premières valeurs de la TFD sont exactement les coefficients de Fourier : cn = ˜ Un pour 0 ≤n ≤P (22) Cette propriété est étonnante puisque la TFD est initialement définie pour donner des valeurs approchées des coefficients de Fourier. Sa démonstration est donnée plus loin (paragraphe 3.d). Pour voir comment la TFD permet d’obtenir le spectre du signal, reprenons l’exemple précédent. Comme la période est égale à 1, l’indice n correspond exactement à la fré- quence. La plus grande fréquence du spectre est P = 3 (harmonique de rang 3). Pour respecter la condition, il faut donc échantillonner à au moins 6 points par période. Voyons le résultat pour N = 10. La période du signal étant connue a priori, on peut échantillon- ner exactement 10 points sur une période : N = 10 Tmax = 1.0 Te = Tmax/N t = numpy.arange(0,N)*Te x=u(t) figure(figsize=(10,4)) stem(t,x) xlabel(’t’) ylabel(’u’) grid() Frédéric Legrand Licence Creative Commons 6 0.0 0.2 0.4 0.6 0.8 t 0.5 0.0 0.5 1.0 1.5 u Voici le calcul de la transformée de Fourier discrète : import numpy.fft tfd = numpy.fft.fft(x) print(tfd) --> array([ 4.00000000e+00 +0.00000000e+00j, 5.00000000e+00 -2.10942375e-15j, 1.25000000e+00 -2.16506351e+00j, 7.07106781e-01 +7.07106781e-01j, 7.49400542e-16 +4.44089210e-16j, 1.77635684e-15 +2.22044605e-15j, 7.49400542e-16 -4.44089210e-16j, 7.07106781e-01 -7.07106781e-01j, 1.25000000e+00 +2.16506351e+00j, 5.00000000e+00 -2.60902411e-15j]) On trace le module en fonction de la fréquence. On doit diviser par N car la fonction numpy.fft.fft calcule la TFD sans le facteur 1/N. Ici la fréquence est égale à l’indice n : figure(figsize=(10,5)) f=numpy.arange(0,N,1) stem(f,numpy.absolute(tfd)/N) xlabel("f") ylabel("|cn|") axis([-1,11,0,1]) grid() Frédéric Legrand Licence Creative Commons 7 0 2 4 6 8 10 f 0.0 0.2 0.4 0.6 0.8 1.0 |cn| Les 4 premières valeurs de la TFD donnent bien les coefficients de Fourier de rang 0 à 3. Les éléments d’indice 4,5 et 6 sont nulles, aux erreurs d’arrondis près (erreurs de l’ordre de 1e−16). Les trois derniers éléments (indices 7 à 9) sont les conjugués des trois coefficients c1, c2 et c3 ; ils ont donc le même module. Le terme d’indice 1 est conjugué du terme d’indice 9, celui d’indice 2 conjugué du terme d’indice 8, etc. La fréquence centrale du spectre est égale à la moitié de la fréquence d’échantillonnage ; c’est la fréquence de Nyquist. Ici, la fréquence de Nyquist est fn = 5. Comme la condition de Nyquist-Shannon est respectée, cette fréquence est supérieure à P = 3. La partie du spectre située à gauche de cette fréquence est le spectre du signal continu u(t). La totalité du spectre est celui du signal discret. La partie située à droite de la fréquence de Nyquist est l’image de la partie gauche (à l’exclusion de la composante de fréquence nulle). uploads/Histoire/ analyse-expose-sss-pdf.pdf
Documents similaires
-
12
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Apv 18, 2021
- Catégorie History / Histoire
- Langue French
- Taille du fichier 0.3272MB