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

Algorithmes et structures de données Discussion :

Ne garder que les valeurs d'une certaine distance dans un tableau


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2017
    Messages
    344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2017
    Messages : 344
    Par défaut Ne garder que les valeurs d'une certaine distance dans un tableau
    Bonjour,
    j'explique mon problème : j'ai un tableau à une dimension avec des valeurs réelles. Je voudrais ne garder que certaines valeurs de façon à ce que l'écart entre chacune des valeurs soit supérieur à un certain seuil delta. Il faut garder le maximum de valeurs. Je n'y arrive pas. Merci de m'aider.
    Edit : plus avant dans le problème, un second tableau indicé comme le premier permet de choisir les valeurs à garder car il peut y avoir plusieurs valeurs à garder : soit garder prioritairement les valeurs du premier tableau dont les valeurs dans le second tableau au même indice sont les plus proche d'une certaine valeur V ou deuxième algorithme garder prioritairement les valeurs du premier tableau dont les valeurs dans le second tableau au même indice sont les plus grandes

    Bien cordialement

  2. #2
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    26 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2008
    Messages : 26 772
    Par défaut


    Je ne suis pas sûr d'avoir bien compris ta demande. Je vois deux interprétations possibles :
    - garder les éléments s'ils sont assez distants des éléments avant et après : si |x[i-1] - x[i]| ≥ δ et |x[i] - x[i + 1]| ≥ δ, alors on garde la valeur en i ;
    - garder les éléments assez distants par rapport à une valeur fixe V : si |V - x[i]| ≥ δ, alors on garde i.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  3. #3
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 215
    Par défaut
    Comme Dourouc05, je n'ai pas compris la question.
    Mais sur le cas 1, qui me paraît à peu près clair, je ne suis pas d'accord avec la solution proposée.
    Si l'écart mini est de 10 par exemple, et qu'on a 50 valeurs espacées de 3 en 3 par exemple, la solution proposée gardera uniquement les 2 valeurs extrêmes.

    L'autre piège très courant à éviter quand on parcourt une liste, et qu'on doit supprimer des éléments, c'est qu'il faut parcourir la boucle à partir de la fin. Sinon, dès qu'on a commencé à supprimer des lignes, on croit traiter une certaine ligne, et on en traite une autre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Pour i = taille_tableau -1 à 1 pas -1
     si tablo(i) > tablo(i+1) - ecart_minimum alors supprimerligne(i)
    fin

  4. #4
    Membre très actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2017
    Messages
    344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2017
    Messages : 344
    Par défaut
    Bonjour dourouc c'est la première version

    je pense que l'algo de tbc marche à condition de trier le tableau avant, oui si je devais reformuler la question je ne veux garder que les éléments du tableau qui ont un écart minimum de delta

  5. #5
    Membre très actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2017
    Messages
    344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2017
    Messages : 344
    Par défaut
    non cet algo ne fonctionne pas !
    en voici un exemple : [2,4,6,8,10,12,14,16,18,20,22,24,26,28,30]
    l'écart minimum est 3
    cet algo va supprimer toutes les valeurs alors qu'il faut en garder par exemple 30-26=4

  6. #6
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 215
    Par défaut
    L'algo que je propose fonctionne, si effectivement les données sont triées auparavant.

    Etape 1 : Je compare 28 avec 30, l'écart est trop faible, je supprime 28 ; le tableau contient dorénavant 2 4 6 8 10 12 14 16 18 20 22 24 26 30
    Etape 2 : Je compare 26 avec le nombre suivant, c'est à dire 30 (et non 28, il a été supprimé), l'écart est suffisant, je ne fais rien.
    Etape 3 : Je compare 24 avec le nombre suivant, c'est à dire 26, l'écart est insuffisant, je supprime 24

    Etc etc.
    Je ne duplique pas le tableau en 'gardant' les valeurs qui m'intéressent (garder= recopier dans ce contexte)
    Je manipule uniquement le tableau de données en supprimant les données en trop.

Discussions similaires

  1. [WD-2007] W2007 Peut on ne garder que les contours d'une lettre ?
    Par bigbernie dans le forum Word
    Réponses: 6
    Dernier message: 20/09/2011, 01h48
  2. Inserer les valeurs d'une user form dans un tableau
    Par ludovicpierre dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/07/2010, 15h08
  3. Réponses: 5
    Dernier message: 29/01/2010, 17h35
  4. Réponses: 11
    Dernier message: 26/04/2007, 10h40
  5. Ne prendre que les infos avant une certaine date??
    Par mythtvtalk.com dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 08/07/2003, 10h20

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