Analyse Fréquentielle D'un Signal Par Transformée De Fourier - Les Fiches Cpge
La transformée de Fourier permet de représenter le spectre de fréquence d'un signal non périodique. Note Cette partie s'intéresse à un signal à une dimension. Signal à une dimension ¶ Un signal unidimensionnel est par exemple le signal sonore. Il peut être vu comme une fonction définie dans le domaine temporel: Dans le cas du traitement numérique du signal, ce dernier n'est pas continu dans le temps, mais échantillonné. Le signal échantillonné est obtenu en effectuant le produit du signal x(t) par un peigne de Dirac de période Te: x_e(t)=x(t)\sum\limits_{k=-\infty}^{+\infty}\delta(t-kT_e) Attention La fréquence d'échantillonnage d'un signal doit respecter le théorème de Shannon-Nyquist qui indique que la fréquence Fe d'échantillonnage doit être au moins le double de la fréquence maximale f du signal à échantillonner: Transformée de Fourier Rapide (notée FFT) ¶ La transformée de Fourier rapide est un algorithme qui permet de calculer les transformées de Fourier discrète d'un signal échantillonné.
- Transformée de fourier python sur
- Transformée de fourier python download
- Transformée de fourier python answers
- Transformée de fourier python pdf
Transformée De Fourier Python Sur
linspace ( tmin, tmax, 2 * nc) x = np. exp ( - alpha * t ** 2) plt. subplot ( 411) plt. plot ( t, x) # on effectue un ifftshift pour positionner le temps zero comme premier element plt. subplot ( 412) a = np. ifftshift ( x) # on effectue un fftshift pour positionner la frequence zero au centre X = dt * np. fftshift ( A) # calcul des frequences avec fftfreq n = t. size f = np. fftshift ( freq) # comparaison avec la solution exacte plt. subplot ( 413) plt. plot ( f, np. real ( X), label = "fft") plt. sqrt ( np. pi / alpha) * np. exp ( - ( np. pi * f) ** 2 / alpha), label = "exact") plt. subplot ( 414) plt. imag ( X)) Pour vérifier notre calcul, nous avons utilisé une transformée de Fourier connue. En effet, pour la définition utilisée, la transformée de Fourier d'une gaussienne \(e^{-\alpha t^2}\) est donnée par: \(\sqrt{\frac{\pi}{\alpha}}e^{-\frac{(\pi f)^2}{\alpha}}\) Exemple avec visualisation en couleur de la transformée de Fourier ¶ # visualisation de X - Attention au changement de variable x = np.
Transformée De Fourier Python Download
Considérons par exemple un signal périodique comportant 3 harmoniques: b = 1. 0 # periode w0=1* return (w0*t)+0. 5*(2*w0*t)+0. 1*(3*w0*t) La fréquence d'échantillonnage doit être supérieure à 6/b pour éviter le repliement de bande. La durée d'analyse T doit être grande par rapport à b pour avoir une bonne résolution: T=200. 0 fe=8. 0 axis([0, 5, 0, 100]) On obtient une restitution parfaite des coefficients de Fourier (multipliés par T). En effet, lorsque T correspond à une période du signal, la TFD fournit les coefficients de Fourier, comme expliqué dans Transformée de Fourier discrète: série de Fourier. En pratique, cette condition n'est pas réalisée car la durée d'analyse est généralement indépendante de la période du signal. Voyons ce qui arrive pour une période quelconque: b = 0. 945875 # periode On constate un élargissement de la base des raies. Le signal échantillonné est en fait le produit du signal périodique défini ci-dessus par une fenêtre h(t) rectangulaire de largeur T. La TF est donc le produit de convolution de S avec la TF de h: H ( f) = T sin ( π T f) π T f qui présente des oscillations lentement décroissantes dont la conséquence sur le spectre d'une fonction périodique est l'élargissement de la base des raies.
Transformée De Fourier Python Answers
show () Cas extrême où f=Fe ¶ import numpy as np Te = 1 / 2 # Période d'échantillonnage en seconde t_echantillons = np. linspace ( 0, Durée, N) # Temps des échantillons plt. scatter ( t_echantillons, x ( t_echantillons), color = 'orange', label = "Signal échantillonné") plt. title ( r "Échantillonnage d'un signal $x(t$) à $Fe=2\times f$") Calcul de la transformée de Fourier ¶ # Création du signal import numpy as np f = 1 # Fréquence du signal A = 1 # Amplitude du signal return A * np. pi * f * t) Durée = 3 # Durée du signal en secondes Te = 0. 01 # Période d'échantillonnage en seconde x_e = x ( te) plt. scatter ( te, x_e, label = "Signal échantillonné") plt. title ( r "Signal échantillonné") from import fft, fftfreq # Calcul FFT X = fft ( x_e) # Transformée de fourier freq = fftfreq ( x_e. size, d = Te) # Fréquences de la transformée de Fourier plt. subplot ( 2, 1, 1) plt. plot ( freq, X. real, label = "Partie réel") plt. imag, label = "Partie imaginaire") plt. xlabel ( r "Fréquence (Hz)") plt.
Transformée De Fourier Python Pdf
0 axis([0, fe/2, 0, ()]) 2. b. Exemple: sinusoïde modulée par une gaussienne On considère le signal suivant (paquet d'onde gaussien): u ( t) = exp ( - t 2 / a 2) cos ( 2 π t b) avec b ≪ a. b=0. 1 return (-t**2/a**2)*(2. 0**t/b) t = (start=-5, stop=5, step=0. 01) u = signal(t) plot(t, u) xlabel('t') ylabel('u') Dans ce cas, il faut choisir une fréquence d'échantillonnage supérieure à 2 fois la fréquence de la sinusoïde, c. a. d. fe>2/b. fe=40 2. c. Fenêtre rectangulaire Soit une fenêtre rectangulaire de largeur a: if (abs(t) > a/2): return 0. 0 else: return 1. 0 Son spectre: fe=50 Une fonction présentant une discontinuité comme celle-ci possède des composantes spectrales à haute fréquence encore non négligeables au voisinage de fe/2. Le résultat du calcul est donc certainement affecté par le repliement de bande. 3. Signal à support non borné Dans ce cas, la fenêtre [-T/2, T/2] est arbitrairement imposée par le système de mesure. Par exemple sur un oscilloscope numérique, T peut être ajusté par le réglage de la base de temps.
On note pour la suite X(f) la FFT du signal x_e(t). Il existe plusieurs implantations dans Python de la FFT: pyFFTW Ici nous allons utiliser pour calculer les transformées de Fourier. FFT d'un sinus ¶ Création du signal et échantillonnage ¶ import numpy as np import as plt def x ( t): # Calcul du signal x(t) = sin(2*pi*t) return np. sin ( 2 * np. pi * t) # Échantillonnage du signal Durée = 1 # Durée du signal en secondes Te = 0. 1 # Période d'échantillonnage en seconde N = int ( Durée / Te) + 1 # Nombre de points du signal échantillonné te = np. linspace ( 0, Durée, N) # Temps des échantillons t = np. linspace ( 0, Durée, 2000) # Temps pour le signal non échantillonné x_e = x ( te) # Calcul de l'échantillonnage # Tracé du signal plt. scatter ( te, x_e, color = 'orange', label = "Signal échantillonné") plt. plot ( t, x ( t), '--', label = "Signal réel") plt. grid () plt. xlabel ( r "$t$ (s)") plt. ylabel ( r "$x(t)$") plt. title ( r "Échantillonnage d'un signal $x(t$)") plt. legend () plt.