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 :

Utilisation de la syntaxe longue inpoly [Débutant]


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2014
    Messages : 26
    Points : 24
    Points
    24
    Par défaut Utilisation de la syntaxe longue inpoly
    Bonjour,

    J'utilise la fonction inpoly pour identifier les points appartenant à chacun des triangles de mon maillage obtenu à partir de la triangulation de Delaunay. Quand j'utilise la syntaxe courte inpoly(p, node), ça marche mais lorsque j'utilise la syntaxe longue inpoly(p, node, edge, tol), le message d'erreur suivant apparaît :
    ??? Error using ==> inpoly at 96, Invalid EDGE
    Voici ce que j'ai codé :
    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
    24
    25
    26
    27
    28
    29
    30
    31
    x1 = A(:,1);
    y1 = A(:,2);
    x11 = A(1:47:end,1);
    y11 = A(1:47:end,2);
    dt = DelaunayTri(x11,y11);
    numtri = size(dt,1);
     
    for i = 1:numtri
     
    % Indexation linéaire des points des triangles 
    nT =dt(i,:); % ième triangle
    np1=dt(i,1);
    np2=dt(i,2);
    np3=dt(i,3);
    %Coordonnées des points au sommet des triangles
    x_p1=x11(np1);
    y_p1=y11(np1);
    x_p2=x11(np2);
    y_p2=y11(np2);
    x_p3=x11(np3);
    y_p3=y11(np3);
    p1=[x_p1,y_p1];
    p2=[x_p2,y_p2];
    p3=[x_p3,y_p3];
    % Utilisation de inpoly
    p=[x1,y1];
    node=[p1(1) p1(2); p2(1) p2(2); p3(1) p3(2)];
    edge=[np1 np2; np2 np3; np3 np1];
    tol=1e-3;
    [in, on]=inpoly(p, node, edge, tol); 
    end
    Pourriez-vous m'aider à résoudre ce problème provenant de "edge".
    Merci

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

    Les valeurs du tableau edge sont utilisées en tant qu'indices de ligne de node qui est de taille 3x2.
    Ces valeurs ne doivent pas donc dépasser cette taille, ce que font np1, np2 et np3.
    D'après ce que je vois dans le code de cette fonction (prise sur le FEX si je ne me trompe pas), tu peux fournir un edge vide, pour que ce soit calculé automatiquement.
    Le code en peu simplifié :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    % ...
    tol = 1e-3;
    for i = 1:numtri
        nT = dt(i,:); % ième triangle
        node = [x11(nT) y11(nT)];
        [in, on] = inpoly(A, node, [], tol);
    end
    Dernière modification par Invité ; 15/11/2014 à 20h15.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2014
    Messages : 26
    Points : 24
    Points
    24
    Par défaut
    Merci pour votre proposition. ça marche nickel. Avez-vous une idée de comment faire pour créer une matrice dans laquelle pour chacun des triangles, on associe les points qui sont à l'intérieur et au bord?

  4. #4
    Invité
    Invité(e)
    Par défaut
    À partir de la sortie in, tu peux appliquer l'indexage logique dessus points = A(in,:) pour obtenir les points situés à l'intérieur du triangle, ou find pour obtenir leur indices : indices = find(in).
    Leur quantité étant variable selon le triangle considéré, il te faudra stocker ces données dans un tableau de cellules.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2014
    Messages : 26
    Points : 24
    Points
    24
    Par défaut
    Merci!

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

Discussions similaires

  1. Utilisation de la syntaxe :=
    Par Ub1quity dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/10/2012, 19h50
  2. [A-03] Utilisation de la syntaxe IIF Sql
    Par Milyshyn76 dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 05/11/2008, 09h19
  3. Utilisation de la syntaxe Basic en Crystal Reports
    Par GodGives dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 04/12/2007, 12h20
  4. Utilisation de ScrolledListBox (syntaxe)
    Par AndreDvl dans le forum Tkinter
    Réponses: 1
    Dernier message: 31/07/2007, 08h50
  5. [Système] Syntaxe courte vs syntaxe longue
    Par Christophe Charron dans le forum Langage
    Réponses: 1
    Dernier message: 30/11/2006, 12h35

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