Partage
  • Partager sur Facebook
  • Partager sur Twitter

Dérivee d'une liste de données sous Scilab

Sujet résolu
    10 novembre 2022 à 14:49:00

    Salut tous le monde

    Je viens vers vous pour m'aider à faire une dérivée sous Scilab.
    J'ai une liste de données accélérométries (.csv) pour de la vibration mécanique (projet electronique).

    Objectif:

    Je souhaite dissocier automatiquement  : La vibration courante et la fin de vibration car le signal vibre encore mais faiblement jusqu' a extinction manuel. (voir image ci-dessous) Lequel le signal est lisser en courbe de tendance, sa permet aussi de supprimer certains parasites. Puis avec la dérivée permettrait de mieux distinguer les deux états.

    Je veux connaitre la durée de vibration courante et la fin de vibration.
    Normalement je dois utilisé diff() mais en graphique c'est pas cohérent.
    J'ai essayer avec un logiciel mathématique (sigview) pour vérifier et sa donne pas le même résultat.

    Voir images en pj. La dérivée (graph rouge) est cohérente. A la coupure cela correspondant à la fin de vibration. En Scilab je l'ai aussi, mais sa n'a pas la même représentation. Pourquoi le signal est différent (see code - ci dessous) ?


    Contexte :

    J'ai plusieurs fichiers .csv avec des valeur accélérométries (Time,XYZ), ici un exemple :

    -J'arrive a visualiser le graphe accélérométrie

    -J'arrive a faire une courbe de tendance : le signal est mis en absolue + Moyenne sur x Échantillons pour avoir une représentation la plus fine du signal.

    Maintenant : Je veux faire la dérivée de ma courbe de tendance. Et j'arrive pas avec les fonctions scilab(diff, numderivat...), je n'ai pas le même résultat que le logiciel mathématique.

    Comment fait -on?

    De mon coté, j'ai fait ça:

    M=csvread(filename)  //open file
    tabx = M(:,1)  //temps
    taby  =M(:,3) //accelerometrie Axe Y
    dy= diff(taby) ./ diff(tabx)
    plot(tabx(1:$-1), dy)

    Le résultat obtenu n'est pas correcte.Correspond pas du tout au signal du logiciel mathématique.

    J'ai essayé aussi :

    for i=1:N-2  //me deplace dans le tableau
    TabDy(i)= taby(i+1)-taby(i);
    end
    [m,k]= min(Taby) //recherche la coupure de la dérivée. Pour ensuite récupérer dans tabx le temps grâce à l'indice k.
    tempsFinVibration =tabx(k); 

    Merci à ceux qui pourront m'aider

    -
    Edité par f14speedking 10 novembre 2022 à 15:47:49

    • Partager sur Facebook
    • Partager sur Twitter
      10 novembre 2022 à 16:35:20

      que donne 

      dy=diff(taby ./ tabx)


      Sinon il faut le faire sur les valeurs de la courbe de tendance peut-être

      Pas moyen de savoir ce que fait ton logiciel mathématique pour ces courbes ?

      -
      Edité par umfred 10 novembre 2022 à 16:36:11

      • Partager sur Facebook
      • Partager sur Twitter
        10 novembre 2022 à 17:45:15

        Merci de ta réponse.

        Tab x et tab y sont les valeurs de la courbe de tendance. 

        Je vais essayer ton calcul dans la soirée.

        • Partager sur Facebook
        • Partager sur Twitter
          10 novembre 2022 à 17:47:50

          je tenterai aussi juste dy=diff(taby) ça ne mange pas de pain
          • Partager sur Facebook
          • Partager sur Twitter
            11 novembre 2022 à 17:27:44

            Aucune ne donne satisfaction. J'ai le même graph que mon post. 

            Je voie pas pourquoi j'ai pas le même résultat  que le soft mathématiques....

            • Partager sur Facebook
            • Partager sur Twitter
              14 novembre 2022 à 13:47:57

              Salut,

              Du coup c'est bon. J'ai résolu mon problème.

              Cela venait de ma courbe de tendance qui était mal programmée.

              Elle avait beaucoup trop de valeur.

              Merci de l'aide Umfred.

              • Partager sur Facebook
              • Partager sur Twitter

              Dérivee d'une liste de données sous Scilab

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown