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 :

Meshgrid : point le plus proche


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 13
    Par défaut Meshgrid : point le plus proche
    Bonjour,
    Le titre n'est peu être pas très explicite, mais je n'en ai pas trouvé de meilleur.

    J'ai construit un cône avec meshgrid, et ayant un point donné aléatoire sur le cône, je souhaite trouver le point le plus proche se trouvant sur la "grille" (graphique) créee par la commande mesh. En d'autres termes :
    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
     
    %Construction du cône
    r=1;h=2;
    height=(0:h/45:h);
    theta=(0:pi/45:2*pi);
    [height,theta]=meshgrid(height,theta);
    x = ((h-height)/h)*r.*cos(theta);
    y = ((h-height)/h)*r.*sin(theta);
    z = height;
    %Point aléatoire
    x_coord_s=-0.1022;
    y_coord_s=-0.4806;
    z_coord_s=1.0173;
    %Affichage
    mesh(x,y,z,'FaceColor',[0.2,0.35,0.2],'EdgeColor','black');
    hold on;
    plot3(x_coord_s,y_coord_s,z_coord_s,'w.','markersize',14);	
    axis equal;
    Le point le plus proche du point aléatoire appartient donc aux matrices x,y,z.
    Voici ce que j'ai tenté et qui ne marche pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    [value1,index1]=min(abs(x_coord_s-x))
    [val,index_x_column]=min(value1)
    index_x_row=index1(1,index_x_column)
    index_x_row et index_x_column devraient me retourner le numéro de ligne et de colonne correspondant à la coordonnée en x du point le plus proche de mon point aléatoire. J'ai fais le même bout de code pour les coordonnées en y et z, en changeant les indices x en y et z, puis j'ai testé en plotant le point :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    S=[x(index_x_row,index_x_column) y(index_y_row,index_y_column) z(index_z_row,index_z_column)];
    plot3(S(1,1),S(1,2),S(1,3),'b.','markersize',14);
    Seulement le point ne se trouve pas sur la "grille" (graphique) sur le cône (j'ai testé plusieurs points différents, changé le pas lors de la construction du cône...).
    D'après ce que j'ai cru comprendre en testant, mesh construit les points un à un en parcourant les matrices x,y,z, donc j'ai pensé qu'en trouvant seulement une des coordonées la plus proche, j'aurais d'emblé le bon numéro de ligne et de colonne, que je copierai pour les deux autres coordonnées. Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    S=[x(index_x_row,index_x_column) y(index_x_row,index_x_column) z(index_x_row,index_x_column)];
    Le point se trouve effectivement sur la grille, mais ce n'est pas le plus proche.
    Voila...j'avoue ne pas comprendre pourquoi en cherchant le minimum de la différence entre les coordonnées de mon point aléatoire et les matrices x,y,z cela ne marche pas
    Si vous avez des éclaircissement, merci d'avance...

  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
    Par défaut
    Salut,

    C'est un problème de méthodologie : tu as tout d'abord obtenu 3 points (le plus proche en x, le plus proche en y et le plus proche en z), c'est normal que si tu combine ces 3 informations, a priori le point obtenu n'appartiendra pas à la grille... Et si tu n'utilises qu'une seule de ces 3 informations, le point obtenu ne sera pas le plus proche, puisque tu n'auras testé qu'une seule coordonnées.

    Pour calculer le point le plus proche, il faut faire un calcul de distance, par exemple, tu peux calculer la distance euclidienne de chaque point de ta grille par rapport à ton point.
    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
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 13
    Par défaut
    Ok merci pour ta réponse rapide. J'ai donc testé avec la distance euclidienne et cela fonctionne parfaitement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    for i=1:1:size(x,1)
        for j=1:1:size(x,2)
           A(i,j)= sqrt(abs((x_coord_s-x(i,j)))^2+(abs(y_coord_s-y(i,j))^2)+(abs(z_coord_s-z(i,j))^2));
        end
    end
     
    [values_min,index1]=min(A);
    [val,index_column]=min(values_min);
    index_row=index1(1,index_column);
     
    plot3(x(index_row,index_column),y(index_row,index_column),z(index_row,index_column),'k.','markersize',14);

Discussions similaires

  1. algorithme des deux points les plus proches
    Par biba1980 dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 10/11/2009, 04h18
  2. [Complexité] recherche des n points les plus proches d'un point dans une liste
    Par Benoit_T dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 20/06/2009, 15h55
  3. Recherche du point le plus proche dans un espace à N dimension
    Par arnoldo165 dans le forum Mathématiques
    Réponses: 6
    Dernier message: 15/04/2008, 00h06
  4. Recherche de point le plus proche [façon optimal]
    Par norwy dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 21/10/2005, 17h15

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