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 :

Comparaison entre deux tableaux


Sujet :

Algorithmes et structures de données

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Comparaison entre deux tableaux
    Bonjour,

    Pour un projet à la fac, je dois identifier un instrument à l'aide d'une base de données. Cependant, j'ai un petit problème pour comparé mes deux tableaux colonnes.
    Un des tableaux correspond donc à ma base de données, et l'autre correspond aux valeurs de mon instrument à identifier.
    Il y a 5 valeurs caractérisants l'instruments. Dans la base de données, il a y 10 valeurs par instrument, en effet il y a une valeur maximal et une valeur minimal pour chaque caractéristique. Et la base de données de limite à 4 instruments.
    De plus, dans ces tableaux se trouvent le noms des instruments, et le nom des caractéristiques.

    Ici, ce trouve le programme : ProgrammeComparaison.7z Mode code est certainement loin d'être parfait et optimal, je m'excuse par avance pour cela.
    J'ai essayé beaucoup d'idées (certaine sont resté en commentaire) mais je n'y arrive vraiment pas, pouvez vous m'aider s'il vous plaît.

    Merci de votre aide
    Cordialement,

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Explique ta technique et poste le code dans ton message car pour ma part, je n'ouvre aucun fichier issu de ce site.
    Ensuite, explique ce qui ne va pas.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par dinobogan Voir le message
    Explique ta technique et poste le code dans ton message car pour ma part, je n'ouvre aucun fichier issu de ce site.
    Ensuite, explique ce qui ne va pas.

    D'accord !
    Alors mon tableau de l'instrument (Inst) à caractériser ressemble à ça :
    Nom : Inst.PNG
Affichages : 3090
Taille : 10,4 Ko
    Donc il est de taille 12.
    Ma base de données (BdD) ressembla à :
    Nom : Bdd.PNG
Affichages : 3086
Taille : 14,2 Ko
    Elle est de taille 88 , et que vous pouvez le voir, elle change d'instrument toutes les 22 lignes.
    Dans c'est tableau il faut faire attention pour les comparaison, comme il y a du texte.

    Il faut donc voir si la caractéristique "Fréquence de la amplitude max en Hz" est compris dans l'intervalle ["Min Fréquence de la amplitude max en Hz" ; "Max Fréquence de la amplitude max en Hz"], puis si"Fréquence centrale en Hz" se situe dans l’intervalle ["Min Fréquence centrale en Hz" ; "Max Fréquence centrale en Hz"], etc... Pour chaque instrument de la base de données.

    Etant donnés que les valeurs de l'instrument à analyser peuvent se retrouvé dans plusieurs instrument de la base de donnés, j'avais pensé compté le nombre d'occurrence.


    Code MATLAB : 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
     
    N = 88;
    M = 12;
    NbInfo = M / 2;  %Nombres d'info pour l'instrument à analysé, comprend le nom du fichier
     
    for j=1 : M/2-1
         occurence(j) = 0;
         for i=2 : 2 : M
             for ii= 4 :4 : N/4 
                if i ~= 2 % && 2+ii+((j-1)*NbInfo ) ~= (j-1)*(N/4)+2
                 if Inst{i,1} <=  BdD{2+ii+((j-1)*NbInfo ),1} && Inst{i,1} >=  BdD{ii+((j-1)*NbInfo ),1}
                     occurence(j) = occurence(j) + 1;
                 end
                end
             end
         end
     end

    Et ce code ne marche absolument pas ^^'

    J'ai donc pensé quand mettant les valeurs maximale dans la colonnes à côtés de celle de la valeur minimale, cela serais plus simple. Mais j'ai pas réussis à le faire.

  4. #4
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 066
    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 066
    Points : 9 417
    Points
    9 417
    Par défaut
    Il faut voir ton projet comme 3 programmes quasiment indépendants (et donc comme 3 PROCEDURES) :
    - Lire le fichier avec les 88 lignes, et le stocker dans un tableau 'exploitable'.. et à toi de faire une proposition pour dire ce que tu comprends par tableau 'exploitable'
    - Lire l'autre fichier pour charger les caractéristiques de l'instrument dans un autre tableau. Exploitable lui aussi.
    - Et enfin, faire le traitement qui compare ces 2 tableaux et qui donne le type d'instrument. C'est probablement l'étape la plus simple.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par tbc92 Voir le message
    Il faut voir ton projet comme 3 programmes quasiment indépendants (et donc comme 3 PROCEDURES) :
    - Lire le fichier avec les 88 lignes, et le stocker dans un tableau 'exploitable'.. et à toi de faire une proposition pour dire ce que tu comprends par tableau 'exploitable'
    - Lire l'autre fichier pour charger les caractéristiques de l'instrument dans un autre tableau. Exploitable lui aussi.
    - Et enfin, faire le traitement qui compare ces 2 tableaux et qui donne le type d'instrument. C'est probablement l'étape la plus simple.
    Bonjour, mes tableaux sont déjà 'exploitable' selon moi.

  6. #6
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 066
    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 066
    Points : 9 417
    Points
    9 417
    Par défaut
    Je reformule, je remplace le mot exploitable par l'expression : Tableau facile à exploiter.
    Et j'emploie le mot TABLEAU volontairement, c'est un mot que tu as dû entendre en cours.

    Eventuellement, pour aider le dialogue, dis nous où tu en es de tes études ( début, milieu, fin ...)
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Troisième année de licences en Acoustique, donc j'ai fais seulement de la programmation basique sous Matlab (tracé des courbes surtout)...

  8. #8
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 066
    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 066
    Points : 9 417
    Points
    9 417
    Par défaut
    Du coup, la programmation n'est pas une fin en soi, mais un moyen d'aboutir à un résultat. Important comme information.

    Et j'imagine que le fichier avec les 88 lignes, il est figé, son contenu n'a pas de raison de changer. Donc tu as intérêt à retaper le fichier (il n'est pas gros), et à faire un fichier avec 4 lignes (une ligne par instrument) et 5x2 colonnes (5 parce qu'il y a 5 mesures, et 2 parce qu'on a un mini et un maxi pour chaque mesure). Ainsi, ton fichier sera beaucoup plus facile à lire, plus facile à lire par un humain, et plus facile à lire par un programme aussi.
    Après, si l'aspect développement t'intéresse, tu pourras essayer de faire un programme qui fait cette transformation automatiquement, par exemple pour intégrer de nouveaux instruments, mais ça n'a pas beaucoup d'intérêt.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  9. #9
    Membre actif
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Février 2013
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Février 2013
    Messages : 317
    Points : 233
    Points
    233
    Par défaut
    Je ne suis pas acousticien mais à mon avis pour discriminer 4 instruments un seul paramètre doit être suffisant en choisissant le plus discriminant par exemple une des attaques
    Et à première vue, le tableau autant que la table sont incohérents.
    Pour le tableau:
    fréq max: 114,...
    freq centrale: 128,...
    écrat freq centrale: 197,...
    Et pour la base:
    max fréquence: 270hz
    max fréquence centrale: 100hz
    max écart fréquence centrale: 300 hz
    Comment l'écart à la fréquence centrale peut-il être supérieur à la fréquence max ?
    C'est: "Nuit sans lune" ce truc.
    Savoir pour comprendre et vice versa.

  10. #10
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 066
    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 066
    Points : 9 417
    Points
    9 417
    Par défaut
    Le titre des rubriques, c'est fréquence de l'amplitude Max, et Fréquence de l'amplitude Centrale.
    Ce qu'il ne faut surtout pas interpréter comme Fréquence max de l'amplitude et fréquence Centrale de l'amplitude. Très différent.

    Faisons confiance à Ronin54, il connait son domaine, aidons-le sur notre domaine.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  11. #11
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 246
    Points : 13 465
    Points
    13 465
    Par défaut
    Bonjour

    Algorithmiquement, c'est facile. Tbc92 a donné les 3 bonnes étapes.

    Bonjour, mes tableaux sont déjà 'exploitable' selon moi.
    Par un être humain, oui. Pas par un ordinateur.

    Personnellement, je résous ton problème en une seule ligne de commande (un peu hard, certes) dans une console GNU Linux.

    Fichier instruments.csv:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Petite caisse,70,230,50,80,70,260,0.01,0.025,0.02,0.05
    Moyenne caisse,50,250,40,90,50,280,0.01,0.025,0.02,0.03
    Grosse caisse,30,270,30,100,30,300,0.01,0.025,0.02,0.03
    Fichier samples.csv
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Nom du sample,114.4589,128.9976,197.4090,0.0242,0.0376
    Perso,40.00,35.00,45.00,0.02,0.03
    Perso2,260.00,35.00,45.00,0.02,0.03
    Perso3,114.4589,78.9976,197.4090,0.0242,0.0476
    Et la ligne de commande suivie du résultat:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ awk -F',' '(NR==FNR){for (critere=0;critere<5;critere++) {nom[$1]++;min[$1,critere]=$(critere*2+2);max[$1,critere]=$(critere*2+3);};next;} {for (instru in nom) {faute=0;for (critere=0;critere<5;critere++) if ((min[instru,critere]>$(critere+2))||(max[instru,critere]<$(critere+2))) faute++; if (faute==0) print $1,"->",instru;}}' instruments.csv sample.csv
    Perso -> Grosse caisse
    Perso2 -> Grosse caisse
    Perso3 -> Petite caisse
    Le programme remplit le nom de l'instrument (1 par ligne de fichier instruments.csv), le minimum et le maximum pour chacun des 5 critères dans leur tableau respectif.
    Puis il s'attaque au fichier samples.csv: 1 sample par ligne. Avec son nom et ses valeurs.
    Il met un marqueur (la variable faute) chaque fois qu'un critère dépasse les bornes.
    Lors du bilan, seuls les instruments sans marqueurs seront affichés pour chaque sample.

    Tu peux t'en inspirer, si tu veux.
    Bonne chance
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

Discussions similaires

  1. [XL-2007] Comparaison entre deux tableaux
    Par lysander31 dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 24/04/2014, 14h21
  2. Réponses: 2
    Dernier message: 24/10/2013, 13h28
  3. [XL-2003] Comparaison de nombres entre deux tableaux
    Par boxtom dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 19/07/2010, 15h12
  4. PL/SQL COMPARAISON DE DEUX TABLEAUX APRES BULK
    Par mimi_été dans le forum PL/SQL
    Réponses: 5
    Dernier message: 30/06/2009, 12h14
  5. Comparaison entre deux champs de deux tables différentes
    Par liam81150 dans le forum Requêtes
    Réponses: 1
    Dernier message: 26/09/2005, 20h53

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