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 :

Supprimer les valeurs inférieures à un seuil


Sujet :

MATLAB

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2008
    Messages : 13
    Points : 3
    Points
    3
    Par défaut Supprimer les valeurs inférieures à un seuil
    Bonjour à tous,

    j'aimerais savoir si il existe une fonction qui permet de supprimer les valeurs d'une variables qui se trouvent en dessous d'un seuil (d'une certaine valeur).
    si il n'existe pas de fonction permettant de réaliser l'opération, comment me conseillez-vous de la réaliser?

    Merci à tous pour votre aide.
    a+

  2. #2
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 830
    Points
    14 830
    Par défaut
    Réponse (partielle certes) dans la
    Qu'est-ce que l'indexage logique ?

    Regarde bien le dernier exemple.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2008
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    MErci pour ta réponse. J'arrive à extraire les données avec la fonction find mais uniquement pour une matrice d'une colonne. Comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    function y=threshold(var)
    %Définit le seuil
    threshold=15;
    %Extrait les données dont les données supérieures au seuil
    index=find(var>threshold);
    y=var(index)
    Le probleme c'est si j'applique la fonction sur une matrice de plusieurs colonnes, il trouvera les valeurs demandées mais les inscrira dans une matrice d'une seule colonne! J'aimerais qu'il garde le format de la matrice à traiter.

    Comment faire.

    Merci à tous pour votre support

  4. #4
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 304
    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 304
    Points : 52 882
    Points
    52 882
    Par défaut
    Déjà, tu utilises threshold comme nom de variable à l'intérieur de ta fonction qui s'appelle aussi threshold... c'est pas super

    Tu devrais renommer la variable.

    Ensuite, un seuillage sous MATLAB se code directement sans passer par FIND.

    Analyse ces quelques lignes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    M = rand(3)
     
    M>.5
     
    M.*(M>.5)
     
    max(M,.5)

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2008
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    super ça marche, merci.
    Comment enlever les zeros de la matrice?
    Merci encore

  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 304
    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 304
    Points : 52 882
    Points
    52 882
    Par défaut
    Et tu veux mettre quoi à la place des 0 ?

    Il faut forcément une valeur (ou au moins NaN) sinon la matrice deviendra un vecteur, ou une matrice creuse (Sparse)

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2008
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    je ne veux rien à la place des zéros.
    ex:
    a= 1
    4
    0
    5

    Je voudrais que ca devienne:
    a= 1
    4
    5
    est-ce possible?
    merci

  8. #8
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 830
    Points
    14 830
    Par défaut
    On est d'accord que dans ce cas ce n'est possible que sur des vecteurs.
    Une solution (toujours avec l'indexage logique) :

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2008
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    je voudrais bien faire ça pour une matrice. Est-possible?

  10. #10
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 304
    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 304
    Points : 52 882
    Points
    52 882
    Par défaut
    Citation Envoyé par annael Voir le message
    je voudrais bien faire ça pour une matrice. Est-possible?
    Donne nous un exemple...

  11. #11
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2008
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    Par exemple, une matrice de ce type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    a =
     
         1     1
         2    22
         3     0
         0    10
    Ou, une de ce type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    b =
     
         0     1
         0    22
         3     0
         0    10

  12. #12
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 304
    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 304
    Points : 52 882
    Points
    52 882
    Par défaut
    Et le résultat devait être... ?

  13. #13
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2008
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    a =
     
         1     1
         2    22
         3     0
         0    10
    Réponse attendue:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    a =
     
         1     1
         2    22
         3    10
    Ou, une de ce type:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    b =
     
         0     1
         0    22
         3     0
         0    10
    Réponse attendue:


  14. #14
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 304
    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 304
    Points : 52 882
    Points
    52 882
    Par défaut
    Ce n'est pas possible avec des matrices. Il faudrait utiliser un tableau de cellules ici...

    A quoi cela peut-il bien servir de laisser des "vides" dans un tableau ?

  15. #15
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2008
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    aucun des deux cas n'est possible? Meme si il y a le meme nombre de zero dans les différentes colonnes?

  16. #16
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 304
    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 304
    Points : 52 882
    Points
    52 882
    Par défaut
    Le premier cas est possible mais encore une fois, à quoi cela peut-il bien servir (surtout le second cas) ?

  17. #17
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2008
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    ok si le premier cas est possible, comment procèder?

  18. #18
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 830
    Points
    14 830
    Par défaut
    Citation Envoyé par annael Voir le message
    ok si le premier cas est possible, comment procèder?
    Avant que l'on essaye de te répondre, pourrais-tu s'il te plait nous expliquer à quoi cela sert ?
    Car a priori, et il semble que nous soyons au moins deux à le penser, cela ne sert strictement à rien.
    As-tu regardé si SPARSE pourrait te convenir ?

  19. #19
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2008
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    ok,je fais recording de données. Puis avec matlab, je filtre mon flux de données. Mais dans certains cas, je me retrouve avec des données nulles que je ne voudrais plus voir apparaitre car elles ne sont représentatives de rien.
    Voilà pourquoi ca m'est utile de les supprimer.

  20. #20
    Membre éprouvé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2007
    Messages
    979
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 979
    Points : 1 256
    Points
    1 256
    Par défaut
    Salut,


    Tu peux faire un vecteur (tableau de cellules) de vecteurs (vecteur numerique) :

    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
     
    b =[ 0     1;
         0    22;
         3     0;
         0    10]
     
    %% Indexer suivant les lignes
    Resultat1 = cell(size(b,1),1);
    for u=1:size(b,1)
        tmp = b(u,:);
        Resultat1{u} = tmp(tmp>0.5);
    end
     
    Resultat1
     
    %% Indexer suivant les colones
    Resultat2 = cell(1,size(b,2));
    for u=1:size(b,2)
        tmp = b(:,u);
        Resultat2{u} = tmp(tmp>0.5);
    end
     
    Resultat2
     
    %%------------ Execution : 
    % Resultat1 = 
    %     [ 1]
    %     [22]
    %     [ 3]
    %     [10]
    % 
    % Resultat2 = 
    %     [3]    [3x1 double]
    ++

Discussions similaires

  1. Réponses: 2
    Dernier message: 01/07/2014, 17h14
  2. Réponses: 9
    Dernier message: 19/09/2008, 17h26
  3. [JpGraph] supprimer les valeurs des points
    Par blopjerem dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 30/01/2008, 09h20
  4. Tchar supprimer les valeurs d'une series
    Par bullrot dans le forum C++Builder
    Réponses: 1
    Dernier message: 13/12/2007, 14h47
  5. [RegEx] Supprimer les valeurs répétées d'une chaine
    Par Eliness dans le forum Langage
    Réponses: 1
    Dernier message: 17/12/2006, 19h55

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