Implémentation de la fonction EEMD pour la décomposition de signaux

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 resultats est 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_bruit et iterations_ensemble nécessitent des ajustements selon le signal spécifique.
  • Complexité calculatoire : L'EEMD est intensif en calculs, surtout pour les jeux de données volumineux.

Étiquettes: MATLAB EEMD EMD décomposition de signaux traitement du signal

Publié le 25 juin à 17h02