Analyse de Fourier et Traitement du Signal avec MATLAB
Transformée de Fourier, Filtrage et Visualisation Spectrale
Introduction
Le traitement du signal est un domaine fondamental dans l’ingénierie, la physique, la biomédicale et même la finance. Parmi les outils mathématiques les plus puissants utilisés pour comprendre les signaux, on retrouve l’analyse de Fourier.
Cette approche permet de représenter un signal dans le domaine fréquentiel, révélant les composantes sinusoïdales cachées à l’intérieur d’un signal complexe.
Dans cet article, nous allons découvrir comment utiliser MATLAB pour effectuer :
-
la transformée de Fourier discrète (FFT),
-
et la manipulation de signaux bruités pour mieux les comprendre.
Chaque section sera accompagnée de codes MATLAB commentés et de graphes illustratifs afin que vous puissiez reproduire l’analyse par vous-même.
🔹 1. Comprendre la Transformée de Fourier
Qu’est-ce que la transformée de Fourier ?
Un signal temporel peut être vu comme une combinaison de plusieurs sinusoïdes. La transformée de Fourier décompose ce signal en une somme de fréquences, chacune avec une amplitude et une phase.
En termes simples :
Le domaine temporel nous dit “quand” quelque chose se passe, le domaine fréquentiel nous dit “quelles fréquences” composent le signal.
La version discrète, appelée Transformée de Fourier Discrète (DFT), est utilisée en pratique à travers la FFT (Fast Fourier Transform), très rapide et intégrée à MATLAB.
Vidéo éducative: Transformée de Fourier : meilleure explication (pour les débutants), par Brain Station Advanced
Avant de continuer cette formation il est important de comprendre les opérations sur les variables avec Matlab, vous trouvez une formation bien structurée sur ce thème au dessous:
Vidéo éducative pour comprendre les bases des variables sur MATLAB, par Ubaly Go
🔹 2. Application pratique de la FFT dans MATLAB
Créons un signal composé de plusieurs fréquences pour illustrer la méthode FFT.
💻 Code MATLAB :
🧩 Interprétation :
-
Plus on ajoute de termes impairs dans la somme, plus la forme du signal se rapproche d’un signal carré parfait.
-
MATLAB permet ainsi de visualiser la convergence et les phénomènes de Gibbs près des discontinuités.
🔹 4. Filtrage numérique : passe-bas et passe-haut
Les filtres sont utilisés pour extraire ou supprimer certaines fréquences d’un signal.
📘 Filtre passe-bas :
-
Laisse passer les basses fréquences et élimine les hautes.
-
Utilisé pour réduire le bruit.
📗 Filtre passe-haut :
-
Laisse passer les hautes fréquences et élimine les basses.
-
Utilisé pour détecter les variations rapides (comme les bords dans une image).
💻 Code MATLAB – Filtrage d’un signal bruité :
% Signal initial avec bruit
Fs = 1000;
t = 0:1/Fs:1-1/Fs;
x = sin(2*pi*50*t) + sin(2*pi*200*t);
x_noisy = x + 0.5*randn(size(t));
% Filtre passe-bas (coupure à 100 Hz)
fc = 100;
[b,a] = butter(6, fc/(Fs/2), 'low');
y_low = filter(b,a,x_noisy);
% Filtre passe-haut (coupure à 100 Hz)
[b,a] = butter(6, fc/(Fs/2), 'high');
y_high = filter(b,a,x_noisy);
% Affichage
figure;
subplot(3,1,1); plot(t, x_noisy); title('Signal bruité');
subplot(3,1,2); plot(t, y_low); title('Signal filtré (passe-bas)');
subplot(3,1,3); plot(t, y_high); title('Signal filtré (passe-haut)');
🧩 Interprétation :
-
Le passe-bas conserve les composantes lentes et élimine le bruit haute fréquence.
-
Le passe-haut isole les variations rapides du signal.
-
Ces opérations sont essentielles dans le traitement audio, la vibration mécanique, ou la biomédecine (ECG, EEG).
🔹 5. Spectre fréquentiel et visualisation 2D
Visualiser le spectre permet d’identifier la puissance du signal en fonction de la fréquence.
💻 Exemple MATLAB : spectrogramme
Fs = 1000;
t = 0:1/Fs:2-1/Fs;
x = chirp(t,0,1,150); % signal à fréquence variable
figure;
spectrogram(x,128,120,128,Fs,'yaxis')
title('Spectrogramme du signal à fréquence variable')
Figure: Spectrogramme du signal à fréquence variable
🧩 Interprétation :
Le spectrogramme affiche comment les fréquences évoluent dans le temps.
Idéal pour analyser des signaux non stationnaires comme :
-
les sons vocaux,
-
ou les signaux biologiques.
🔹 6. Étude comparative : domaine temporel vs fréquentiel
Domaine temporel | Domaine fréquentiel |
---|---|
Montre la forme du signal au cours du temps | Montre les composantes en fréquence |
Facile à comprendre intuitivement | Idéal pour filtrage et analyse spectrale |
Exemple : signal bruité | Exemple : pics à 50 Hz et 120 Hz |
Cette distinction est au cœur de tout le traitement du signal moderne.
🔹 7. Application pratique complète : Analyse d’un signal mixte
💻 Code MATLAB complet :
Fs = 1000;
t = 0:1/Fs:1-1/Fs;
x = sin(2*pi*30*t) + 0.5*sin(2*pi*80*t) + randn(size(t));
figure;
subplot(2,1,1)
plot(t,x)
title('Signal mixte bruité')
xlabel('Temps (s)')
ylabel('Amplitude')
subplot(2,1,2)
Y = fft(x);
L = length(x);
P2 = abs(Y/L);
P1 = P2(1:L/2+1);
P1(2:end-1) = 2*P1(2:end-1);
f = Fs*(0:(L/2))/L;
plot(f,P1)
title('Spectre fréquentiel du signal mixte')
xlabel('Fréquence (Hz)')
ylabel('|P1(f)|')
Figure: Spectre fréquentiel du signal mixte
Résultat :
Vous observerez deux pics à 30 Hz et 80 Hz, preuve de la présence de ces deux sinusoïdes dans le signal d’origine.
🔹 8. Bonnes pratiques et conseils
- Toujours normaliser le signal avant la FFT.
- Utiliser une fenêtre (Hamming, Hann) pour réduire les effets de bord.
- Vérifier la fréquence d’échantillonnage avant d’interpréter le spectre.
- Préférer
fftshift
pour centrer le spectre autour de zéro.
- Utiliser
log
ousemilogy
pour visualiser des spectres sur plusieurs ordres de grandeur.
Téléchargez les Codes MATLAB pour Vos Graphiques
Boostez vos compétences en transformée de Fourier et Traitement du Signal avec ces 5 codes MATLAB téléchargeables ! Chaque fichier contient un exemple complet issu de notre formation, prêt à être exécuté. Des courbes 2D, en passant par les solutions aux erreurs courantes, ces codes sont commentés pour une prise en main facile. Cliquez sur les liens pour télécharger et expérimenter directement dans MATLAB !
Télécharger Tous les codes dans un seul fichier: Lien
Après le téléchargement copier les codes et vous pouvez les utilisés séparément
Formation en ligne Sur UDEMY: Lien
Conclusion
L’analyse de Fourier est un pilier du traitement du signal.
Grâce à MATLAB, il devient facile de :
-
calculer la transformée de Fourier (FFT),
-
visualiser le spectre fréquentiel,
-
et appliquer des filtres passe-bas ou passe-haut.
Ces techniques sont indispensables pour comprendre le comportement fréquentiel d’un système physique, mécanique ou électronique.
Que vous soyez étudiant, ingénieur ou chercheur, maîtriser ces outils vous permettra d’aller bien au-delà de la simple observation temporelle.
❓ FAQ
Q1 : Quelle est la différence entre FFT et DFT ?
La DFT est la formule mathématique, la FFT est son algorithme rapide implémenté dans MATLAB.
Q2 : Comment choisir la fréquence d’échantillonnage ?
Elle doit être au moins deux fois supérieure à la fréquence la plus élevée du signal (théorème de Nyquist).
Q3 : Pourquoi mon spectre est symétrique ?
Parce que la FFT d’un signal réel produit des composantes conjuguées autour de la fréquence zéro.
Q4 : Quel filtre utiliser pour supprimer le bruit ?
Un filtre passe-bas est généralement efficace pour supprimer les hautes fréquences bruitées.
Q5 : Peut-on appliquer la FFT sur des signaux non stationnaires ?
Oui, mais il est préférable d’utiliser la transformée de Fourier à court terme (STFT) ou le spectrogramme.