La décomposision empirique modale d'ensemble (EEMD) améliore la méthode EMD en incorporant du bruit blanc de diverses amplitudes et en répétant la décomposition pour réduire les effets de bord et le mélange de modes.
function resultats = eemd_decomposition(signal_entree, ratio_bruit, iterations_ensemble)
% Fonction EEMD
% signal_entree : données d'entrée (1-D)
% ratio_bruit : rapport de l'écart-type du bruit ajouté à celui du signal
% iterations_ensemble : nombre d'itérations pour l'EEMD
% resultats : matrice contenant les données originales, IMF et résidus
% Normalisation des données
ecart_type_signal = std(signal_entree);
signal_normalise = signal_entree / ecart_type_signal;
% Initialisation des variables
taille_donnees = length(signal_normalise);
nombre_imf = fix(log2(taille_donnees)) - 5; % Nombre total d'IMF
modes_totaux = nombre_imf + 2; % Inclut données originales et résidus
resultats = zeros(taille_donnees, modes_totaux); % Matrice de sortie
% Boucle EEMD
for idx = 1:iterations_ensemble
% Ajout de bruit au signal original
signal_bruite = signal_normalise + randn(size(signal_normalise)) * ratio_bruit;
% Décomposition EMD
[composantes, ~] = emd(signal_bruite, 'MaxNumIMFs', nombre_imf);
% Accumulation des résultats
if idx == 1
resultats(:, 2:end-1) = composantes;
else
resultats(:, 2:end-1) = resultats(:, 2:end-1) + composantes;
end
end
% Moyenne des résultats
resultats(:, 2:end-1) = resultats(:, 2:end-1) / iterations_ensemble;
% Rétablissement de l'amplitude originale
resultats = resultats * ecart_type_signal;
% Ajout du signal original et du résidu
resultats(:, 1) = signal_entree;
resultats(:, end) = signal_entree - sum(resultats(:, 2:end-1), 2);
end
Procédure d'utilisasion
1. Charger les données : Importez le signal à décomposer.
load('signal_a_traiter.mat'); % Remplacez par le fichier de signal réel
signal = variable_signal; % Remplacez par le nom de variable approprié
2. Configurer les paramètres :
ratio_bruit: rapport de l'écart-type du bruit blanc ajouté, généralement entre 0.1 et 0.4.iterations_ensemble: nombre de répétitions pour l'EEMD, typiquement de 10 à 50.
ratio_bruit = 0.2; % Rapport de l'écart-type du bruit
iterations_ensemble = 100; % Nombre d'itérations
3. Exécuter la fonction EEMD :
resultats = eemd_decomposition(signal, ratio_bruit, iterations_ensemble);
4. Analyser les résultats :
- La première colonne de
resultatsest le signal original, les colonnes intermédiaires sont les IMF, et la dernière est le résidu.
figure;
plot(resultats);
legend('Signal Original', 'IMF1', 'IMF2', '...', 'Résidu');
title('Décomposition EEMD');
Considérations importantes
- Ajout de bruit : L'amplitude du bruit blanc doit être calibrée pour assurer la stabilité et la précision de la décomposition.
- Sélection des paramètres : Les valeurs de
ratio_bruitetiterations_ensemblenécessitent des ajustements selon le signal spécifique. - Complexité calculatoire : L'EEMD est intensif en calculs, surtout pour les jeux de données volumineux.