Retour Matlab

Page en construction !!

Calculer la FFT d’un signal

Un des calculs les plus utilisés dans le traitement du signal (électrique ou traitement d’image) est la transformée de Fourier discrète. L’un des algorithmes permettant d’obtenir ce résultat est la FFT (Fast Fourier Transform). Matlab permet de calculer le spectre d’un signal en utilisant la fonction fft.

Cette fonction retourne un vecteur de nombres complexes de la même taille que le vecteur du signal d’entrée dont on veut connaitre la transformée de Fourier. Les fréquences associées sont comprises entre 0 et Fe – où Fe est la fréquence d’échantillonnage utilisée pour acquérir (ou créer) le signal d’entrée.

Le script suivant génère deux signaux sinusoïdaux de N échantillons chacun sur une durée de visualisation TA (en s). Le premier a une fréquence f1 et l’autre f2fa et fb sont les deux signaux numériques. La figure 1 affiche les deux signaux échantillonnées et la figure 2 les transformées de Fourier de deux signaux.

%% Time signals / discrete time
f1 = 12;
f2 = 18;
amp = 25;
N = 201;
TA = 1;
Fe = (N-1)/(TA);    % sampling frequency
ta = linspace(0,TA,N);
tb = [0:TA/(N-1):TA];
fa = amp * sin(2*pi*f1*ta);
fb = amp/2 * sin(2*pi*f2*ta);
figure(1);
plot(ta, fa, ta, fb);
legend('sinus à 12Hz','sinus à 18Hz')
xlabel('temps (s)')
ylabel('signal (V)')
title('Sinus en fonction du temps')
%% FFT calculation and display
freqa = linspace(-Fe/2,Fe/2,N);
tfa = fft(fa);
tfa_s = fftshift(tfa)/N;
tfb = fft(fb);
tfb_s = fftshift(tfb)/N;
figure(2);
plot(freqa,abs(tfa_s),freqa,abs(tfb_s));
xlabel('Fréquence (Hz)')
ylabel('TF (V)')
legend('sinus 12Hz','sinus 18Hz')

Le script précédent permet d’obtenir les deux figures suivantes :

Matlab / Calculer une FFT