IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Signal Discussion :

Segmenter un signal ECG


Sujet :

Signal

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2009
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Segmenter un signal ECG
    Bonjour / bonsoir à tous

    Je suis actuellement en train de traiter un signal comportant 10 "battements cardiaques"
    Je souhaiterais diviser mon vecteur en dix autres entités de manière "automatique".
    Dans un premier temps j'ai appliqué un seuil d'amplitude pour supprimer le bruit lorsqu'il n'y a pas de perturbation importante en amplitude correspondant à mes signaux cardiaques.

    Voici le vecteur initial, suivi d'un autre vecteur sans le bruit quand le signal est au "repos".
    cardiaque_mike_150k_01.rarcardiaque_mike_modif.rar

    Voici le visuel des deux signaux
    Nom : signaux_card.png
Affichages : 1780
Taille : 14,8 Ko

    Le code pour générer tout ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    v1 = pas_mike_150k_01.Y(1,1).Data;
    j=1; k=1; m =0;
    Nv1 = length(v1);
    for i = 1 : Nv1
        Tv1(1,i) = j/10000; j = j+1; 
    end 
     
    for j =1:Nv1
        if abs(v1(1,j)) >= 0.025
            V1(1,k) = v1(1,j);
            k = k+1; m = 1;
        elseif abs(v1(1,j)) < 0.025 && m <=10
            m = m+1;
            V1(1,k) = v1(1,j);
            k = k+1;
        elseif abs(v1(1,j)) < 0.025 && m >10
            V1(1,k) = 0;
            k = k+1;
            m = m+1;
        end 
    end
     
    figure(4)
    plot(Tv1,v1,'b','LineWidth',3)
    grid on
    hold on 
    plot(Tv1,V1,'r','LineWidth',3)

  2. #2
    Membre habitué
    Homme Profil pro
    Doctorant LNE Trappes
    Inscrit en
    Mai 2014
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Doctorant LNE Trappes
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 64
    Points : 174
    Points
    174
    Par défaut
    Je souhaiterais diviser mon vecteur en dix autres entités de manière "automatique".
    Concrètement qu'est ce que tu souhaiterais comme résultat final ?

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2009
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Je voudrais récupérer dans 10 vecteurs différents mais de taille égale les dix "battements cardiaques" du signal initial.

  4. #4
    Membre habitué
    Homme Profil pro
    Doctorant LNE Trappes
    Inscrit en
    Mai 2014
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Doctorant LNE Trappes
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 64
    Points : 174
    Points
    174
    Par défaut
    J’espère que ça te convient, par contre mon code est brouillon :

    Code m : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    clear;clc;
    load('pas_mike_150k_01.mat')
    v1 = pas_mike_150k_01.Y(1,1).Data;
    j=1; k=1; m =0;
    Nv1 = length(v1);
    for i = 1 : Nv1
        Tv1(1,i) = j/10000; j = j+1;
    end
     
    for j =1:Nv1
        if abs(v1(1,j)) >= 0.025
            V1(1,k) = v1(1,j);
            k = k+1; m = 1;
        elseif abs(v1(1,j)) < 0.025 && m <=10
            m = m+1;
            V1(1,k) = v1(1,j);
            k = k+1;
        elseif abs(v1(1,j)) < 0.025 && m >10
            V1(1,k) = 0;
            k = k+1;
            m = m+1;
        end
    end
     
    figure(4)
    % plot(Tv1,v1,'b','LineWidth',3)
    grid on
    hold on
    plot(Tv1,V1,'r','LineWidth',3)
     
    %% Battements dans vecteurs
    vecteur=struct( 'vect', {[]});
    tempbattement=1800;
    nvecteur=0;
    j=0;
     
    nbbat=ceil(size(find(V1(1:size(Tv1,2)))~=0,2)/tempbattement)+2;
    fprintf('Nombres de battements : %d \n', nbbat)
    k=1;
     
    for i=1:size(Tv1,2)
        j=j+i;
        if k<nbbat+1
            if V1(j)~=0
                nvecteur=nvecteur+1;
                vecteur(nvecteur).vect(1,:)=Tv1(j-i+1:j-i+1+tempbattement);
                vecteur(nvecteur).vect(2,:)=V1(j-i+1:j-i+1+tempbattement);
     
                quiver(Tv1(j-i+1),0,0,1,'b');
                quiver(Tv1(j-i+1+tempbattement),0,0,1,'g');
     
                j=j+tempbattement;k=k+1;
            end
        end
    end
     
    for i=1:nbbat;
        figure
        plot(vecteur(i).vect(1,:),vecteur(i).vect(2,:))
    end

Discussions similaires

  1. Comment compresser un signal ecg par la méthode FFT
    Par laura1990 dans le forum Traitement du signal
    Réponses: 6
    Dernier message: 29/04/2013, 16h56
  2. Erreur de segmentation Vim Signal mortel SEGV
    Par Leaffy dans le forum Applications et environnements graphiques
    Réponses: 5
    Dernier message: 16/08/2012, 08h58
  3. besoin d'aide sur le traitement signal ecg
    Par elmhmdi dans le forum Signal
    Réponses: 4
    Dernier message: 17/03/2012, 15h49
  4. Débruitage signal ECG
    Par Papado dans le forum Signal
    Réponses: 3
    Dernier message: 08/05/2011, 11h57
  5. detection de la ligne de base du signal ecg
    Par ocaen dans le forum Signal
    Réponses: 1
    Dernier message: 31/05/2010, 14h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo