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

Scilab Discussion :

Calcul d'extrema locaux


Sujet :

Scilab

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Calcul d'extrema locaux
    Bonjour à tous,

    Je travaille actuellement dans un laboratoire de recherche et j'ai plusieurs séries de données à traiter sous Scilab. Mes essais en laboratoire m'ont permis d'obtenir 3 paramètres: débit, pression et temps pour plusieurs cyles de respiration (inspiration + respiration). Je souhaite déterminer le volume inspiré ou expiré pour chaque cycle. J'ai donc créer un code pour cela mais le problème est que ma courbe de volume en fonction du temps présente des minima et maxima locaux (correspondants à la fin de l'inspiration et de l'expiration). J'aimerais pouvoir déterminer ces valeurs cependant je n'arrive pas à calculer le min ou le max sur une plage donnée (par exemple entre la Xe et la (X+N)e valeur de mon vecteur volume).

    Voici ce que j'ai déjà codé mais quelqu'un pourrait-il me renseigner sur le code à exécuter ?

    Par avance merci !

    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
    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
     
    Fichier=mopen('Test2_SegA.txt','rt')
    Info=mgetl(Fichier, 16)
    [n,time,flow,pressureout,pressurein,trig]=mfscanf(-1,Fichier,'%s \t %s \t %s \t %s \t %s')
    mclose(Fichier)
     
    temps=strsubst(time,',','.')
    debit=strsubst(flow,',','.')
    pressionext=strsubst(pressureout,',','.')
    pressionint=strsubst(pressurein,',','.')
    trigger=strsubst(trig,',','.')
     
    t=strtod(temps)
    Q=strtod(debit)
    Pe=strtod(pressionext)
    P=strtod(pressionint)
    trg=strtod(trigger)
     
    i=1
    while trg(i)<0
        i=i+1
    end
    disp("Le trigger est déclenché à "+string(t(i))+" s.")
     
    Q1=zeros(length(t)-i+1)
    P1=zeros(length(t)-i+1)
    toffset=zeros(length(t)-i+1)
    for j=0:length(t)-i
        Q1(j+1)=Q(i+j)
        P1(j+1)=P(i+j)
    end
    for k=1:length(t)-i
        toffset(k+1)=toffset(k)+0.001
    end
    Q=[]; P=[];
     
    Vol=zeros(length(t)-i+1)
    for l=1:length(t)-i
        Vol(l+1)=Vol(l)+Q1(l)
    end
     
    V=abs(Vol)
    [Max1,x1]=max(V)
    disp("Inspiration 1: "+string(Max1)+" mL.")
     
    V1=zeros(40001-x1)
    for q=1:40000-x1
        V1(q)=V(q+x1)
    end
    [Min1,n1]=min(V1)
    disp("Expiration 1: "+string(Max1-Min1)+" mL.")
     
    Vol(n1+x1+1)=0
    for r=n1+x1+1:length(t)-i
        Vol(r+1)=Vol(r)+Q1(r)
    end
    V=abs(Vol)

  2. #2
    Membre averti
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Juin 2012
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 257
    Points : 321
    Points
    321
    Par défaut
    Bonjour,

    Pour détecter les extrema : balayer le vecteur de la dérivée du signal, à chaque changement de signe on a un minimum ou un maximum.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    signal=[1 2 3 1 -1 -2 -3 -1 4 5];
    disp(signal);
     
    deriv=diff(signal);
    disp(deriv);

  3. #3
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bonjour,
    Merci pour cette réponse !
    Le problème est que mon signal est très bruité : il n'y a pas de variations strictes de ma fonction mais plutôt des oscillations permanentes... Je voudrais calculer les extrema locaux sans tenir compte de ces oscillations. Peut-être en utilisant un filtre d'abord pour débruiter ?

  4. #4
    Membre averti
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Juin 2012
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 257
    Points : 321
    Points
    321
    Par défaut
    Oui, si l'on peut filtrer ces oscillations cela semble une bonne solution.

  5. #5
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    D'accord, merci de ton aide !

Discussions similaires

  1. Extraction extrema locaux
    Par takout dans le forum Images
    Réponses: 0
    Dernier message: 24/04/2012, 11h09
  2. Réponses: 9
    Dernier message: 02/04/2012, 18h56
  3. Calculer le nombre des extrema locaux dans une image
    Par highlight dans le forum Traitement d'images
    Réponses: 6
    Dernier message: 02/07/2010, 17h56
  4. Calcul de descripteurs locaux
    Par amira88 dans le forum Traitement d'images
    Réponses: 1
    Dernier message: 09/12/2009, 12h16

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