Analyse de Fourier et Traitement du Signal avec MATLAB

Kamel Bousnina
0

Analyse de Fourier et Traitement du Signal avec MATLAB


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 :

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 x(t) 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 :

% Définition du signal
Fs = 1000; % Fréquence d'échantillonnage (Hz)
T = 1/Fs; % Période d'échantillonnage
L = 1000; % Longueur du signal
t = (0:L-1)*T; % Vecteur temps

% Signal composé de 50 Hz et 120 Hz
x = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t);

% Ajout d’un bruit blanc
x = x + 2*randn(size(t));

% Calcul de la FFT
Y = fft(x);

% Calcul du spectre à une seule face
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;

% Visualisation du spectre
figure;
plot(f,P1)
title('Spectre de l’amplitude du signal x(t)')
xlabel('Fréquence (Hz)')
ylabel('|P1(f)|')
grid on;

Application pratique de la FFT dans MATLAB

Figure: Spectre de l’amplitude du signal x(t)


🧩 Interprétation :

  • On observe deux pics nets à 50 Hz et 120 Hz, correspondant aux fréquences du signal.

  • Le bruit ajouté crée un fond de spectre, simulant une mesure expérimentale réelle.


🔹 3. Séries de Fourier : Décomposition en sinusoïdes

Les séries de Fourier sont utilisées pour représenter un signal périodique par une somme infinie de sinusoïdes.
C’est le principe fondamental derrière la FFT.

Exemple conceptuel :

Un signal carré de période TT peut être approximé par :

f(t)=4π(sin(ωt)+13sin(3ωt)+15sin(5ωt)+)f(t) = \frac{4}{\pi}\left(\sin(\omega t) + \frac{1}{3}\sin(3\omega t) + \frac{1}{5}\sin(5\omega t) + \dots \right)

💻 Code MATLAB pour illustrer :

% Approximation d’un signal carré par séries de Fourier
t = linspace(0, 2*pi, 1000);
f = zeros(size(t));

for n = 1:2:15
f = f + (4/pi)*(1/n)*sin(n*t);
end

figure;
plot(t, f, 'LineWidth', 1.5)
title('Approximation du signal carré par séries de Fourier')
xlabel('Temps')
ylabel('Amplitude')
grid on;

Séries de Fourier  Décomposition en sinusoïdes

Figure: Approximation du signal carré par séries de Fourier

 

🧩 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)');

Filtrage numérique  passe-bas et passe-haut
Figure: Filtrage numérique : passe-bas et 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')

Spectre fréquentiel et visualisation 2D

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 :

🔹 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)|')

Application pratique complète  Analyse d’un signal mixte

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

  1. Toujours normaliser le signal avant la FFT.
  2. Utiliser une fenêtre (Hamming, Hann) pour réduire les effets de bord.
  3. Vérifier la fréquence d’échantillonnage avant d’interpréter le spectre.
  4. Préférer fftshift pour centrer le spectre autour de zéro.
  5. Utiliser log ou semilogy 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 :

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.


Mots clés

Enregistrer un commentaire

0 Commentaires
Enregistrer un commentaire (0)
Our website uses cookies to enhance your experience. Check Out
Ok, Go it!