cos ( 2 * np. pi / T1 * t) + np. sin ( 2 * np. pi / T2 * t) # affichage du signal plt. plot ( t, signal) # calcul de la transformee de Fourier et des frequences fourier = np. fft ( signal) n = signal. size freq = np. fftfreq ( n, d = dt) # affichage de la transformee de Fourier plt. plot ( freq, fourier. real, label = "real") plt. imag, label = "imag") plt. legend () Fonction fftshift ¶ >>> n = 8 >>> dt = 0. 1 >>> freq = np. fftfreq ( n, d = dt) >>> freq array([ 0., 1. 25, 2. 5, 3. 75, -5., -3. 75, -2. 5, -1. 25]) >>> f = np. Python | Transformation de Fourier rapide – Acervo Lima. fftshift ( freq) >>> f array([-5., -3. 25, 0., 1. 75]) >>> inv_f = np. ifftshift ( f) >>> inv_f Lorsqu'on désire calculer la transformée de Fourier d'une fonction \(x(t)\) à l'aide d'un ordinateur, ce dernier ne travaille que sur des valeurs discrètes, on est amené à: discrétiser la fonction temporelle, tronquer la fonction temporelle, discrétiser la fonction fréquentielle.
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. Transformée de fourier python examples. Par exemple sur un oscilloscope numérique, T peut être ajusté par le réglage de la base de temps.
absolute(tfd) freq = (N) for k in range(N): freq[k] = k*1. 0/T plot(freq, spectre, 'r. ') xlabel('f') ylabel('S') axis([0, fe, 0, ()]) grid() return tfd Voyons le spectre de la gaussienne obtenue avec la TFD superposée au spectre théorique: T=20. 0 fe=5. 0 figure(figsize=(10, 4)) tracerSpectre(signal, T, fe) def fourierSignal(f): return ()*(**2*f**2) f = (start=-fe/2, stop=fe/2, step=fe/100) spectre =np. Transformée de fourier python 4. absolute(fourierSignal(f)) plot(f, spectre, 'b') axis([-fe/2, fe, 0, ()]) L'approximation de la TF pour une fréquence négative est donnée par: S a ( - f n) ≃ T exp ( - j π n) S N - n La seconde moitié de la TFD ( f ∈ f e / 2, f e) correspond donc aux fréquences négatives. Lorsque les valeurs du signal sont réelles, il s'agit de l'image de la première moitié (le spectre est une fonction paire). Dans ce cas, l'usage est de tracer seulement la première moitié f ∈ 0, f e / 2. Pour augmenter la résolution du spectre, il faut augmenter T. Il est intéressant de maintenir constante la fréquence d'échantillonnage: T=100.