TP : Analyse et Filtrage de Signal ECG par Ondelette
Introduction
Les ondelettes sont des fonctions mathématiques permettant d’analyser les
signaux dans le domaine temps-fréquence. Contrairement à la transformée de
Fourier, qui ne fournit qu’une information spectrale globale, les ondelettes
permettent :
• De décomposer un signal en composantes basse et haute fréquence.
• D’effectuer une analyse multi-résolution, particulièrement utile pour les
signaux non stationnaires comme l’ECG.
• De filtrer ou débruiter un signal en supprimant les détails de haute
fréquence tout en conservant la forme globale.
Dans ce TP, nous utiliserons la décomposition en ondelettes discrètes (DWT)
avec la famille Daubechies (db4) pour analyser un signal ECG bruité.
Partie 1 : Chargement et visualisation du signal
Charger le signal ECG bruité
clc; clear;
% Chargement du signal ECG bruité
load [Link]; % signal ECG
Fe = 600; % fréquence d'échantillonnage
t = (0:length(ecgb)-1)/Fe;
% Tracé du signal brut
figure;
plot(t, ecgb);
title('Signal ECG Brut');
xlabel('Temps (s)'); ylabel('Amplitude'); grid on;
Questions Partie 1 :
1. Que pouvez-vous dire sur la forme du signal ECG brut ?
2. Quels composants fréquentiels semblent présents dans ce signal ?
3. Pourquoi l’analyse du spectre est importante avant tout filtrage ?
Partie 2 : Décomposition en ondelettes
Décomposition en 3 niveaux avec db4 :
% Décomposition en 3 niveaux avec db4
niveaux = 3;
[coeffs, L] = wavedec(ecgb, niveaux, 'db4');
% Extraction approximation et détails
A3 = appcoef(coeffs, L, 'db4', 3); % approximation basse fréquence
D3 = detcoef(coeffs, L, 3); % détail niveau 3
D2 = detcoef(coeffs, L, 2); % détail niveau 2
D1 = detcoef(coeffs, L, 1); % détail niveau 1 (hautes fréquences)
% Tracé comparatifs :
% Tracé comparatif
figure;
subplot(5,1,1); plot(t, ecgb); title('ECG Brut');
subplot(5,1,2); plot(A3); title('Approximation Niveau 3 (Basse fréquence)');
subplot(5,1,3); plot(D3); title('Détails Niveau 3');
subplot(5,1,4); plot(D2); title('Détails Niveau 2');
subplot(5,1,5); plot(D1); title('Détails Niveau 1 (Hautes fréquences)');
xlabel('Temps (s)');
Questions Partie 2 :
1. Que représentent les coefficients A3, D3, D2 et D1 ?
2. Pourquoi choisit-on ici 3 niveaux de décomposition ?
3. Que peut-on dire de l’énergie contenue dans les détails par rapport à
l’approximation ?
Partie 3 : Reconstruction avec approximation uniquement
% Mettre à zéro les détails pour reconstruire seulement A3
coeffs_rec = coeffs;
coeffs_rec(L(1)+1:end) = 0;
% Reconstruction du signal filtré
ecg_rec = waverec(coeffs_rec, L, 'db4');
% Tracé comparatif
figure;
subplot(2,1,1); plot(t, ecgb); title('ECG Brut'); grid on;
subplot(2,1,2); plot(t, ecg_rec,'r'); title('Reconstruction approximation Niveau
3'); grid on;
xlabel('Temps (s)'); ylabel('Amplitude');
Questions Partie 3 :
1. Comparez le signal brut et le signal reconstruit avec l’approximation A3.
Que constatez-vous ?
2. Quelle partie du signal correspond au bruit haute fréquence ? Comment
est-elle isolée ?
3. Expliquez pourquoi la reconstruction à partir de l’approximation permet
de filtrer le signal.
Partie 4 : Exploration avancée
1. Essayez d’augmenter le nombre de niveaux de décomposition à 4 ou 5 et
comparez les résultats.
2. Testez une autre ondelette (par exemple db6) et comparez la
reconstruction avec db4.
Questions Partie 4 :
1. Que se passe-t-il lorsque le nombre de niveaux augmente ?
2. Quelle différence observe-t-on avec l’utilisation d’une autre ondelette ?
3. Quelle combinaison de niveaux et de type d’ondelette semble la plus
adaptée pour débruiter l’ECG ?