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 :

Condition sur la dérivée d'un signal


Sujet :

Signal

  1. #1
    Candidat au Club
    Inscrit en
    Septembre 2013
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Septembre 2013
    Messages : 15
    Points : 4
    Points
    4
    Par défaut Condition sur la dérivée d'un signal
    Salut,

    Alors en fait, mon problème c'est que maintenant que j'ai le signal, je voudrais imposer comme condition que si en fait le signal est a 1 puis repasse a 0 puis a 1 dans la foulée, alors je voudrais modifier le signal pour que le 0 deviennent 1.

    J'ai pense que pour cela, il faudrait que je mette une condition sur la dérivée et donc d'étudier la dérivée. Que si la dérivé change de signe 2 fois en peut de temps alors faut modifier le signal. Mais le problème c'est que j'ai essayé avec la fonction diff mais je n'y arrive pas.

    Je sais pas si c'est très clair, ou si l'idée de la dérivé est la bonne.

    Merci d'avance pour les réponses

  2. #2
    Invité
    Invité(e)
    Par défaut
    Avec la fonction strfind :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    x = [1 1 0 0 1 0 1 0 0 1 0 1 0];
    idx = strfind(x, [1 0 1]);
    x(idx+1) = 1;
    Dernière modification par Invité ; 30/09/2013 à 15h46.

  3. #3
    Candidat au Club
    Inscrit en
    Septembre 2013
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Septembre 2013
    Messages : 15
    Points : 4
    Points
    4
    Par défaut
    Merci de ta réponse.
    J'ai essayer d'adapter a mon cas la fonction que tu proposes.
    Donc j'ai voulu remplacer la fonction x que tu avais crée par la 3 colonne de mon tableau précédent.

    Donc j'ai pose :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    x = signal_sonde( col2eq1,3);
    Pour dire que x représente la 3ème colonne, j'ai suppose que comme j'avais lancé le programme précédent avant, il est déjà trier selon la colonne 2. Je me trompe ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    idx = strfind(x, [1 0 1]);
    X(idx+1) = 1;
    Ensuite j'ai pensé que ça ne servait a rien de changer ça mais ça ne fonctionne pas. Il comprend pas le idx = strfind(x, [1 0 1])

  4. #4
    Invité
    Invité(e)
    Par défaut
    Plutôt que de dire "il ne comprend pas" qui n'est pas du tout explicite, prend l'habitude de donner l'erreur.
    Ici je présume que l'erreur est due au fait que tu lui donnes une colonne plutôt qu'une ligne.
    Opère simplement une transposée.

    Attention aussi à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    idx = strfind(x, [1 0 1]);
    X(idx+1) = 1;
    MATLAB est sensible à la casse.

  5. #5
    Candidat au Club
    Inscrit en
    Septembre 2013
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Septembre 2013
    Messages : 15
    Points : 4
    Points
    4
    Par défaut
    ah pardon. L'erreur qu'il me dit c'est :

    Error using strfind
    Input strings must have one row.

    Je vais essayer la transposé

    J'ai remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    idx = strfind(x, [1 0 1]);
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    idx = strfind(x, [1; 0;1])
    C'est bien comme ça qu'on a un vecteur colonne non ?

    Il m'affiche toujours la même erreur :

    Error using strfind
    Input strings must have one row.
    
    Error in modify_signal (line 2)
    idx = strfind(x, [1; 0;1]);
    Merci de prendre le temps de me répondre, c'est gentil, je débute sur matlab.

  6. #6
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 165
    Points
    53 165
    Par défaut
    L'erreur vient du premier argument, pas du deuxième.

    Vérifie ce que renvoi ceci :

    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  7. #7
    Candidat au Club
    Inscrit en
    Septembre 2013
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Septembre 2013
    Messages : 15
    Points : 4
    Points
    4
    Par défaut
    il me renvoit :

    size(x)
    
    ans =
    
            1388           1
    C'est bien ce que je veut, c'est a dire la 3 ème colonne.
    Ca veut bien dire que ya 1388 ligne et 1 colonne.
    Je comprend pas où est le problème ?

  8. #8
    Invité
    Invité(e)
    Par défaut
    Dut vient pourtant de te mettre le doigt dessus...
    Citation Envoyé par TheKing1992 Voir le message
    Ca veut bien dire que ya 1388 ligne et 1 colonne.
    Citation Envoyé par TheKing1992 Voir le message
    Input strings must have one row.
    row de l'anglais = ligne ok ?
    La fonction strfind ne veut qu'une seule ligne. Donc comme je t'ai déjà dit : opère une transposée sur ton x et non sur les 3 valeurs.

  9. #9
    Candidat au Club
    Inscrit en
    Septembre 2013
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Septembre 2013
    Messages : 15
    Points : 4
    Points
    4
    Par défaut
    Ah ok je vois.
    J'ai changé ça a marche, mais j'ai vu aussi que c'était pas ça que je voulais.

    En fait dans l'idéal je voudrais définir une valeur que je pourrais changer, du genre 10ms, car la première colonne de mon tableau est le temps. Et donc ce que je voudrais faire c'est que si jamais j'ai sur ma 3 eme colonne des valeur [0 1 0] mais que le 1 ne dure pas plus de cette valeur (donc 10ms) alors le 1 devient 0.

    DOnc je suppose que pour ça j'aurais besoin de faire une boucle.

Discussions similaires

  1. [2005] Colonne dérivée (Condition sur une colonne)
    Par Bb.siham dans le forum SSIS
    Réponses: 0
    Dernier message: 26/04/2011, 16h39
  2. UPDATE avec condition sur d'autres tables
    Par guda dans le forum Langage SQL
    Réponses: 7
    Dernier message: 10/03/2005, 11h20
  3. [XSLT][ACCESS]condition sur valeur
    Par kor dans le forum XSL/XSLT/XPATH
    Réponses: 23
    Dernier message: 10/01/2005, 14h14
  4. [SQL] Conditions sur une date dans une requete
    Par poufouille dans le forum Bases de données
    Réponses: 4
    Dernier message: 17/03/2004, 14h25
  5. Condition sur debug et release
    Par xave dans le forum MFC
    Réponses: 3
    Dernier message: 04/02/2004, 15h04

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