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

MATLAB Discussion :

mettre un filtre dans un graphique situé dans une interface


Sujet :

MATLAB

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 120
    Points : 51
    Points
    51
    Par défaut mettre un filtre dans un graphique situé dans une interface
    Bonjour à tous!!

    Voila j'ai une interface qui contient 3 tableaux et une fenêtre pour tracer des courbes que j'ai superposé. Se que je voudrai faire maintenant c'est mettre une valeur dans un textedit et ensuite lorsque l'on clique sur un bouton cette valeur place une filtre. C'est à dire que sur le graphique cette valeur deviens un seuil (on trace une ligne sur cette valeur dans l'axe des ordonnées et cette ligne nous montre les pics qui sont situé au dessus) et ensuite avec cette valeur on supprime toute les valeurs en dessous de celle-ci dans le tableau (par rapport à la 2e colonne du tableau et ensuite on supprime les lignes qui sont associées aux valeurs supprimées). J'ai sais pas trop comment m'y prendre quelqu'un aurait il une idée ?

    Merci d'avance et c'est très important.

  2. #2
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 120
    Points : 51
    Points
    51
    Par défaut
    Bonjour a tous!!

    Voila j'ai résolu le problème au niveau graphique.

    J'ai un nouveau problème, en faite j'ai une matrice de 3 colonne avec des valeurs dans chacune et donc je souhaite comparer les valeurs de la 2e colonne et si elles est inférieure alors je supprime la ligne entière de la matrice ou se trouve la valeur inférieure au seuil.

    j'ai essayé ceci mais sa fonctionne pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for i=1:taille1
        if courbe1(i,2)<seuil
            courbe1(i,:)=[];
        end
    end
    Car si je rentre une grande valeur j'ai ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Index exceeds matrix dimensions.
     
    Error in interfacegraph>pushbutton4_Callback (line 268)
        if courbe1(i,2)<seuil
    J'ai des valeurs assez grande dans la 2e colonne. Svp aidez moi je sais pas comment résoudre le problème

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Prenons un exemple pour comprendre cette erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    v= 1:5; % 1 2 3 4 5
    seuil = 4;
    taille = length(v); % = 5
    for i=1:taille
        if v(i)<seuil
            v(i)=[];
        end
    end
    1. Première passe : v(1) est bien inférieur à seuil = 4, on supprime donc ce premier élément, et se retrouve avec :
    2. Deuxième passe : v(i) = v(2) = 3 (eh oui le 2 a pris la place de l'élément supprimé, tu as donc un premier problème : chaque élément suivant un élément supprimé ne sera pas vérifié). 3 étant inférieur au seuil, il est aussi supprimé, on a donc :
    3. Troisième passe : v(i) = v(3) = 5 (idem on saute le 4) non inférieur au seuil, on le garde donc, et reste donc au v précédent.
    4. Quatrième passe : tu te dis que nous avons fais le 5, et donc avons terminé ? Et bien non, tu as une boucle for i=1:taille avec taille = 5, il te reste donc à parcourir v(4) et v(5). Mais tu as supprimé des éléments, et ton tableau n'est plus aussi grand. Tu te retrouves donc avec cette erreur de dépassement.

    Voilà pour les explications.

    Maintenant tu as deux solutions à ce problème :
    1. Soit tu parcours ton tableau à l'envers : for i=taille:-1:1
    2. Soit tu utilises l'indexage logique :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      courbe1(courbe1(:,2)<seuil , :) = [];

  4. #4
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 120
    Points : 51
    Points
    51
    Par défaut
    Merci beaucoup pour ta réponse!!

    Elle m'a aidé à trouvé ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    res=courbe1(find(courbe1(:,2)>=seuil),:);
    J'ai trouvé un moyen j'ai utilisé l'indexage logique et la fonction find.
    Je retiens seulement les valeurs qui sont supérieur ou égale au seuil.

    Je te remercie encore pour ta réponse.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par FAQ indexage logique
    L'indexage logique consiste simplement à se passer de find :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    res=courbe1(find(courbe1(:,2)>=seuil),:);

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2010] Appliquer filtre à un sous formulaire situé dans un onglet
    Par Peps0u dans le forum IHM
    Réponses: 0
    Dernier message: 09/07/2010, 21h55
  2. Réponses: 2
    Dernier message: 26/03/2008, 14h59
  3. Clic dans uen drawingArea située dans une scrolledWindow
    Par phyn04 dans le forum GTK+ avec C & C++
    Réponses: 4
    Dernier message: 05/01/2008, 23h11
  4. Définition des variable dans un fichier.m d'une interface graphique
    Par developpeur82 dans le forum Interfaces Graphiques
    Réponses: 1
    Dernier message: 10/05/2007, 14h53
  5. [Graphiques] Cumul dans un graphique
    Par Herman dans le forum IHM
    Réponses: 14
    Dernier message: 30/03/2007, 10h17

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