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 :

str : Comparaison et coef. de corrélation


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Novembre 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2009
    Messages : 26
    Par défaut str : Comparaison et coef. de corrélation
    Hello à tous,

    Tout d'abord, un grand merci à ceux et celles qui liront mon sujet/problème du "jour".

    Je cherche à comparer deux chaînes de caractères dont la longueur n'est pas forcément identique. La fonction qui ferait ce travail, retournerait un coefficient de corrélation.
    Ce coefficient aurait la valeur 1, si les 2 chaînes de caractères sont identiques. 0, si aucun caractères de la seconde chaîne n'est commun avec la première, même à une position différente. Et bien entendu, une valeur entre 0 et 1 suivant la correspondance des deux chaînes.

    Je cherche par exemple à gérer les erreurs de frappes ou de différences de chaînes de type.
    s1 = 'MATLAB' et s2 = 'MATAB'.
    ou
    s1 = 'Developpez.com' et s2 = 'Developer.com'.
    ou
    s1 = 'MATLAB' et s2 = 'FAQ MATLAB'.
    ou
    s1 = 'Stéphan' et s2 = 'Stéfane'.
    ou
    s1 = 'Laura' et s2 = 'Sandra'.
    etc

    Est-ce que l'un de vous aurez déjà vu une telle fonction ? Si non, auriez-vous quelques pistes d'algorithme pour arriver à mes fins ?

    Merci d'avances.

    Stéphan_S

  2. #2
    FLB
    FLB est déconnecté
    Modérateur
    Avatar de FLB
    Homme Profil pro
    Ing. Aérospatiale
    Inscrit en
    Juin 2003
    Messages
    770
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Ing. Aérospatiale
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2003
    Messages : 770
    Par défaut
    Une petite idée en utilisant la fonction de correlation :
    Code MATLAB : Sélectionner tout - Visualiser dans une fenêtre à part
    coef = corrcoef([s1(:)-0;zeros(length(s2)-length(s1),1)],[s2(:)-0;zeros(length(s1)-length(s2),1)]);
    Ca marche à peu près tant qu'il n'y a pas de caractère spéciaux (. é) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    MATLAB MATAB : 0.5617
    Developpez.com Developer.com : 0.011839
    MATLAB FAQ MATLAB : 0.27173
    Stéphan Stéfane : 1
    Laura Sandra : 0.36103
    Il faudrait enlever ces caractères et améliorer la façon dont je rend les vecteurs de même longueur (clairement mettre des 0 n'est pas une bonne idée).

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Novembre 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2009
    Messages : 26
    Par défaut
    Merci FLB,

    Je trouve effectivement que c'est un bon début.

    Par contre comme les matrices x et y doivent être de même dimensions, je ne vois pas bien comment faire différemment que remplir par des 0 !

    Si non j'ai quand même l'impression d'avoir des valeurs un poil bizarre avec le code que tu me proposes !!?????!!

    Si tu as une idée pour améliorer tout ça, voir une autre idée, je suis preneur !

    Bonne soirée

    Stéphan_S

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

    Il existe les distances de Levenshtein et Damerau-Levenshtein.
    Il n'y a pas de fonction MATLAB existante à ma connaissance, mais tu pourras facilement le coder à partir de Wikipédia.

  5. #5
    Membre Expert Avatar de davcha
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 258
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 258
    Par défaut
    Tu peux t'inspirer des algos d'alignement de séquence utilisés en biologie également : http://fr.wikipedia.org/wiki/Alignem...de_comparaison

  6. #6
    Membre averti
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Novembre 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2009
    Messages : 26
    Par défaut
    Merci à tous.

    Je regarde tout ça de près et reviens vers vous pour vous dire ce que cela a donné.

    Bonne nuit.

    Stéphan_S

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/07/2015, 09h28
  2. Réponses: 19
    Dernier message: 11/06/2008, 14h58
  3. Comparaison de 2 str
    Par twizell dans le forum C
    Réponses: 12
    Dernier message: 03/09/2003, 16h11
  4. comparaison de 2 dates
    Par eisti dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 11/08/2003, 11h33
  5. Comparaison d'un registre 8 bits avec une variable 32 bits
    Par tupperware dans le forum x86 32-bits / 64-bits
    Réponses: 3
    Dernier message: 15/10/2002, 10h25

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