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 :

distance entre les vecteurs d'une matrice


Sujet :

MATLAB

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 2
    Points : 1
    Points
    1
    Par défaut distance entre les vecteurs d'une matrice
    j'espere que c'est le bon endroit pour poser ma question

    je dois ecrire un code pour calculer toutes les distances entre les vecteurs d'une matrice et apres trouver la distance minimale.

    j'ai ecris un code mais le probleme j'arrive pas a stocker toutes les valeurs ( cad toutes les distances) et du coup la valeur minimale est toujours la derniere valeur car je perds tout les resultats!

    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
    %cette partie est pour la creation de la matrice
    Sym = [-1 -1/3 1/3 1];
    X = zeros(256,4);
    n = 1;
    for i=1:4
        for j=1:4
            for l=1:4
                for m=1:4
                    X(n,: ) = [Sym(i) Sym(j) Sym(l) Sym(m)];
                    n = n+1;
                end
            end
        end
    end
    %calcul de la distance
    for f=1:255
        for k=(f+1):256
            M_dist(k,1) = sqrt( (X(f,1)-X(k,1))^2  + (X(f,2)-X(k,2))^2  + (X(f,3)-X(k,3))^2 + (X(f,4)-X(k,4))^2 );
        end
            dmin = min(M_dist)
    end
    quelqu'un pourrait m'aider pour corriger mon code
    merci
    sonia

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Bonjour,

    Tu peux faire par exemple ceci :

    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
    %cette partie est pour la creation de la matrice
    Sym = [-1 -1/3 1/3 1];
    X = zeros(256,4);
    n = 1;
    for i=1:4
        for j=1:4
            for l=1:4
                for m=1:4
                    X(n,: ) = [Sym(i) Sym(j) Sym(l) Sym(m)];
                    n = n+1;
                end
            end
        end
    end
    %calcul de la distance
    dmin = Inf;
    for f=1:255
        M_dist = [];
        for k=(f+1):256
            M_dist(k-f,1) = sqrt( (X(f,1)-X(k,1))^2  + (X(f,2)-X(k,2))^2  + (X(f,3)-X(k,3))^2 + (X(f,4)-X(k,4))^2 );
        end
            dmin = min([M_dist ; dmin]);
    end
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci bcp pour la reponse
    encore une chose, le dmin doit etre different de 0!
    comment est ce que je peux coder ca?
    merci d'avance

  4. #4
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Si M_dist prends précisément la valeur 0, pour les enlever, tu peux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dmin = min([M_dist(M_dist~=0) ; dmin]);
    Après attention, les nombres dans matlab ont une précision donnée (Pourquoi 0.3-0.2-0.1 est-il différent de 0 ?) et il sera peut-être nécessaire de faire un test en utilisant une tolérance (comme c'est expliqué dans le lien de la faq).
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/05/2014, 15h10
  2. Réponses: 44
    Dernier message: 05/07/2012, 23h29
  3. Extraire les vecteurs d'une matrice
    Par Goffer dans le forum OpenCV
    Réponses: 5
    Dernier message: 15/06/2010, 17h19
  4. les valeurs d'une matrice entre 0 et 1
    Par automa dans le forum Images
    Réponses: 3
    Dernier message: 20/04/2010, 19h43
  5. Clarté d'une couleur et "distance" entre les couleurs en RGB.
    Par Pragmateek dans le forum Traitement d'images
    Réponses: 7
    Dernier message: 13/09/2006, 19h33

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