Méthode de Welch — Estimation de la densité spectrale de puissance
Contexte et problématique
Pourquoi estimer le contenu fréquentiel d'un signal ?
En SII, de nombreux systèmes produisent des signaux dont le contenu fréquentiel est riche d'informations : vibrations d'une structure, bruit d'un capteur, fluctuations d'un signal de commande... L'outil naturel pour analyser ce contenu est la Transformée de Fourier, mais son application directe à des signaux réels mesurés pose un problème fondamental.
Le problème du périodogramme simple
La méthode naïve consiste à appliquer une FFT à l'intégralité du signal mesuré et à calculer le carré du module, obtenant le périodogramme :
Ce périodogramme est une estimation de la Densité Spectrale de Puissance (DSP), notée \(S_{xx}(f)\), qui décrit la répartition de la puissance du signal en fonction de la fréquence.
Le problème : variance élevée
Le périodogramme simple est un estimateur inconsistant : même si l'on augmente la durée du signal \(N \to \infty\), la variance de l'estimateur ne diminue pas. Le spectre obtenu est "bruité", avec des fluctuations aléatoires importantes qui rendent l'interprétation difficile.
Cette propriété, démontrée par Schuster dès 1898, est le problème central de l'estimation spectrale.
L'intuition de Welch (1967)
Peter D. Welch a proposé une solution simple et efficace : diviser pour mieux régner.
Plutôt que d'analyser un long signal d'un seul tenant, on le découpe en plusieurs segments courts que l'on analyse séparément, puis on moyenne les périodogrammes obtenus.
La moyenne réduit la variance d'un facteur proportionnel au nombre de segments, au prix d'une résolution fréquentielle réduite. C'est un compromis biais–variance classique en traitement du signal.
Principe de la méthode de Welch
Les trois ingrédients clés
1. Segmentation avec recouvrement
Le signal de \(N\) échantillons est découpé en \(K\) segments de longueur \(L\), avec un recouvrement (overlap) de \(R\) échantillons entre deux segments consécutifs. Le recouvrement classique est de 50 % (\(R = L/2\)), ce qui permet de récupérer l'information "perdue" aux bords lors du fenêtrage.
2. Fenêtrage
Chaque segment est multiplié par une fenêtre \(w[n]\) (Hann, Hamming, Blackman...) avant le calcul de la FFT. Cela atténue les effets de bord (fuite spectrale) dus à la troncature du signal.
3. Moyennage des périodogrammes
La DSP est estimée en faisant la moyenne des \(K\) périodogrammes pondérés :
où \(U = \frac{1}{L}\sum_{n=0}^{L-1} w^2[n]\) est un facteur de normalisation de la fenêtre.
Organigramme de la méthode
flowchart TD
A[/"Signal mesuré x(t)\nN échantillons à Fe"/] --> B
B["Découpage en K segments\nde longueur L\navec recouvrement R"]
B --> C1["Segment 1\nx₁[n]"]
B --> C2["Segment 2\nx₂[n]"]
B --> C3["..."]
B --> CK["Segment K\nxK[n]"]
C1 --> D1["× fenêtre w[n]\n(Hann, Hamming...)"]
C2 --> D2["× fenêtre w[n]"]
CK --> DK["× fenêtre w[n]"]
D1 --> E1["FFT\nX₁(f)"]
D2 --> E2["FFT\nX₂(f)"]
DK --> EK["FFT\nXK(f)"]
E1 --> F1["|X₁(f)|² / (L·U)\nPériodogramme 1"]
E2 --> F2["|X₂(f)|² / (L·U)\nPériodogramme 2"]
EK --> FK["|XK(f)|² / (L·U)\nPériodogramme K"]
F1 --> G["Moyenne des K périodogrammes"]
F2 --> G
FK --> G
G --> H[/"DSP estimée Ŝxx(f)"/]
style A fill:#e8f4f8,stroke:#2196F3
style H fill:#e8f5e9,stroke:#4CAF50
style G fill:#fff3e0,stroke:#FF9800
Compromis résolution–variance
La méthode de Welch introduit un compromis fondamental :
| Paramètre | Effet sur la variance | Effet sur la résolution fréquentielle |
|---|---|---|
| \(K\) grand (beaucoup de segments) | Variance faible ✓ | Résolution dégradée ✗ |
| \(L\) grand (segments longs) | Variance élevée ✗ | Résolution fine ✓ |
| Recouvrement 50 % | Meilleur rapport variance/résolution ✓ | — |
La résolution fréquentielle est directement liée à la longueur des segments :
On ne peut pas avoir simultanément une faible variance et une haute résolution fréquentielle avec un signal de durée finie : c'est l'expression du principe d'incertitude temps-fréquence.
Règle pratique
Un recouvrement de 50 % avec une fenêtre de Hann est le réglage par défaut le plus courant. Il offre un bon compromis et est utilisé dans la plupart des implémentations, dont MATLAB (pwelch).
Exemple de réglage des paramètres
Pour un signal de \(N = 8192\) échantillons, \(F_e = 1000\) Hz :
| Choix | \(L\) | \(K\) (à 50 % overlap) | \(\Delta f\) |
|---|---|---|---|
| Haute résolution | 4096 | ~3 | 0,24 Hz |
| Compromis | 1024 | ~15 | 0,98 Hz |
| Faible variance | 256 | ~63 | 3,9 Hz |
Implémentation (Python / MATLAB)
=== "Python (scipy)"
```python
from scipy.signal import welch
import numpy as np
# Signal x, fréquence d'échantillonnage Fe
Fe = 1000 # Hz
f, Sxx = welch(x, fs=Fe, window='hann', nperseg=1024, noverlap=512)
# f : vecteur fréquences (Hz)
# Sxx : DSP estimée (V²/Hz)
```
=== "MATLAB"
```matlab
% Signal x, fréquence d'échantillonnage Fe
Fe = 1000; % Hz
[Sxx, f] = pwelch(x, hann(1024), 512, 1024, Fe);
% f : vecteur fréquences (Hz)
% Sxx : DSP estimée (V²/Hz)
```
Références
- Article original — Welch, P.D. (1967). The use of fast Fourier transform for the estimation of power spectra: A method based on time averaging over short, modified periodograms. IEEE Transactions on Audio and Electroacoustics, 15(2), 70–73.
- MATLAB Documentation —
pwelch— Power spectral density estimate - Wikipedia (FR) — Méthode de Welch
- Wikipedia (EN) — Welch's method
- SciPy Documentation —
scipy.signal.welch - NumPy/SciPy Lectures — Spectral analysis