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

Signal Discussion :

Algorithme source détecteur molécule


Sujet :

Signal

  1. #1
    Membre averti
    Inscrit en
    Avril 2012
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 35
    Par défaut Algorithme source détecteur molécule
    Bonjour à tous !

    Ma question est plutôt mal posé. Je vous conseille de regarder la pièce jointe où j'explique mon problème. Merci

    Je suis débutant avec Matlab et mon problème est le suivant: je dois travailler avec un cube 11x11x11 sachant que ce cube est lui même divisé en cubes (1x1x1). Il contient donc 11x11x11 cubes de soit 1331 cubes.
    Pour le simuler, on m'a expliqué qu'il faut que je positionne le 1er cube (celui du centre du cube) puis que je lui donne une taille (1x1x1) et enfin que je dise qu'à sa droite il y a 5 cubes identiques et qu'à sa gauche également.

    Je sais positionner mon cube:
    Position_x = 50 ;
    Position_y = 50 ;
    Position_z = 50 ;

    Par contre je ne sais pas comment lui donner une taille et encore moins dire qu'il est entouré.

    J'ai ajouté un fichier pdf qui illustre mon problème. Le problème est simple mais pas évident à expliquer.

    Si quelqu'un peut me mettre sur la piste.

    Merci d'avance.

    Domino5731
    Images attachées Images attachées

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

    Je ne situe pas très bien ton problème. De quelle façon crées-tu ton cube ?
    Qu'entends-tu par "entouré" ?

  3. #3
    Membre averti
    Inscrit en
    Avril 2012
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 35
    Par défaut Question pas très claire...
    C'est vrai que ma question n'était pas très claire. J'ai essayé d'exposer mon problème en détail dans la pièce jointe que j'ai MàJ.

    Merci pour votre aide.

    Domino5731

  4. #4
    Invité
    Invité(e)
    Par défaut
    Je ne suis toujours pas sûr de savoir ce qui te bloque...
    La fonction meshgrid pourrait t'y aider ?
    Après, c'est juste une histoire de boucles.

  5. #5
    Membre averti
    Inscrit en
    Avril 2012
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 35
    Par défaut Coordonnées de points par rapport à un autre
    Bonjour,

    Merci pour votre réponse. Mon problème se précise. Je dois en fait définir les coordonnées de plusieurs point connaissant les coordonnées d'un point.

    Les coordonnées de ces autres points seront donc dépendantes du point dont on connait la position.

    J'ai ajouté une nouvelle pièce jointe pour illustrer mon problème.

    Merci pour votre aide.
    Images attachées Images attachées

  6. #6
    Invité
    Invité(e)
    Par défaut
    Je ne vois rien de compliqué
    Tu as les coordonnées de ton point d'origine :
    Xc=0
    Yc=0
    Zc=0
    Et tu veux une distance de 1 entre chaque point.
    Donc tes autres points sont aux coordonnées
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    X = Xc -/+ 1
    Y = Yc -/+ 1
    Z = Zc -/+ 1
    Écris déjà cela sur le papier, cela viendra tout seul

  7. #7
    Membre averti
    Inscrit en
    Avril 2012
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 35
    Par défaut Coordonnées de points
    Merci beaucoup !

    J’ai maintenant les coordonnées de tous mes points (27 points) (voir pièce jointe).

    Je dois définir mes 27 points sur Matlab. Seulement c’est un peu long de les définir un par un.

    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
    Méthode 1 
     
    %% Point à l'origine
    xc=0;
    yc=0;
    zc=0;
     
    % Définition du Point 1
    x1=xc;
    y1=yc+1;
    z1=zc;
     
    % Définition du Point 2
    x1=xc;
    y1=yc-1;
    z1=zc;
    Je souhaite donc utiliser une boucle me permettant de définir mes points plus rapidement

    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
    Méthode 2 
     
    %% Point à l'origine
    xc=0;
    yc=0;
    zc=0;
     
    %% Paramètre
    per=3
    f=linspace(-1,1,per)
     
    %% Boucle
    for i= 1:per;  
        x (i)=xc+f(i);
        y (i)=yc+f(i);
        z (i)=zc+f(i);
    end
    J’obtiens bien des valeurs de x, y et z comprise entre [-1,0,1].
    Seulement, je n’ai pas l’impression que j’obtiens les 27 points dont j’ai besoin.

    J’ai l’impression que le x, le y et le z que j’obtiens ne sont pas liés.

    Quelqu’un peut-il me mettre sur la piste ?

    Pour plus de détails, voir la pièce jointe

    Merci
    Images attachées Images attachées

  8. #8
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Domino5731
    Je dois définir mes 27 points sur Matlab. Seulement c’est un peu long de les définir un par un
    (méthode 1).
    Je souhaite donc utiliser une boucle me permettant de définir mes points plus rapidement
    (méthode 2).
    Ou même une méthode sans boucle Et pour cela la fonction que je t'ai déjà présenté.

    Pour commenter ta méthode 2, si tu prends per différent de 3, tes points ne seront plus espacés d'une distance de 1.
    Reconsidère la ligne suivante f = linspace(-1,1,per);.

    Sinon en effet ta boucle est incorrecte : elle applique une seule valeur de f aux trois à la fois, et tu boucles seulement sur per
    Tu auras donc juste les points
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    x = xc + [-1 0 1];
    y = yc + [-1 0 1];
    z = zc + [-1 0 1];
    Il te faut faire trois boucles imbriquées.

  9. #9
    Membre averti
    Inscrit en
    Avril 2012
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 35
    Par défaut Coordonnées de points
    Merci pour ta réponse !

    Ci-dessous, mon programme mis à jour suite à tes conseils.
    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
    %% Point à l'origine
    xc=0;
    yc=0;
    zc=0;
     
    %% Paramètre
    per=3
    f=linspace(-1,1,per)
     
    %% Boucle
    for i= 1:per;  
        for j= 1:per;
            for k= 1:per;
                 x (i,j,k)=xc+f(i);
                 y (i,j,k)=yc+f(j);
                 z (i,j,k)=zc+f(k);
            end
        end
    end
    Avec ce que j’obtiens, mes valeurs de x, de y et de z sont-elles liées ?
    J’ai bien mes 27 points ?
    Y a-t-il un moyen de vérifier les coordonnées des différents points que j’ai ?

    Je ne trouve pas la solution pour reconsidérer la ligne suivante f = linspace(-1,1,per); même si je suis conscient que cette solution n’est pas la meilleure.

    C’est vrai qu’en utilisant meshgrid, j’obtiens les même données.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    x = -1:1:1;
    y = -1:1:1;
    z = -1:1:1;
    [X,Y,Z] = meshgrid(x,y,z);
    La seule différence est que les points que j’obtiens ne sont plus dépendants de mon point d’origine. Or j’ai besoin que ces points soient liés au point d’origine. Y a-t-il un moyen de faire cela avec la fonction meshgrid ?

    Merci de votre aide. Pièce jointe pour plus d'information.
    Images attachées Images attachées

  10. #10
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Domino5731 Voir le message
    Avec ce que j’obtiens, mes valeurs de x, de y et de z sont-elles liées ?
    J’ai bien mes 27 points ?
    Y a-t-il un moyen de vérifier les coordonnées des différents points que j’ai ?
    Tes tableaux x, y, et z sont de taille 3x3x3, cela répond-il à ta question ?
    Pour ce qui est de les afficher, tu peux utiliser la fonction doc plot3
    Citation Envoyé par Domino5731 Voir le message
    Je ne trouve pas la solution pour reconsidérer la ligne suivante f = linspace(-1,1,per); même si je suis conscient que cette solution n’est pas la meilleure.
    Comme je t'ai déjà dit, pense à le faire sur le papier d'abord. Par exemple, pour per = 5, 7... entre quoi et quoi devrait varier f ?
    Essai de l'écrire en fonction de per.
    Citation Envoyé par Domino5731 Voir le message
    C’est vrai qu’en utilisant meshgrid, j’obtiens les même données.

    La seule différence est que les points que j’obtiens ne sont plus dépendants de mon point d’origine. Or j’ai besoin que ces points soient liés au point d’origine. Y a-t-il un moyen de faire cela avec la fonction meshgrid ?
    Il ne tient qu'à toi de rajouter les coordonnées (Xc,Yc,Zc) de l'origine.
    Et pareil que pour la ligne contenant linspace : à rendre dépendant de per.

  11. #11
    Membre averti
    Inscrit en
    Avril 2012
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 35
    Par défaut
    Citation Envoyé par Winjerome Voir le message
    Pour ce qui est de les afficher, tu peux utiliser la fonction doc plot3
    Lorsque j'utilise la fonction plot3 j'ai le message d'erreur suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ??? Error using ==> plot3
    Data may not have more than 2 dimensions
    Citation Envoyé par Winjerome Voir le message
    Comme je t'ai déjà dit, pense à le faire sur le papier d'abord. Par exemple, pour per = 5, 7... entre quoi et quoi devrait varier f ?
    Essai de l'écrire en fonction de per.
    Citation Envoyé par Winjerome Voir le message
    Et pareil que pour la ligne contenant linspace : à rendre dépendant de per.
    Je ne vois pas où tu veux en venir. J'ai essayer de le faire sur le papier mais ça ne donne rien.

    Merci

  12. #12
    Invité
    Invité(e)
    Par défaut
    Pour ton erreur, utilise l'indexage linéaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    plot3(x(:), y(:), z(:),'o')
    Prenons les exemples
    • per = 5 : Quelles sont les valeurs de f ?
    • per = 7 : Quelles sont les valeurs de f ?
    • ...
    • per = n : Quelles sont les valeurs de f ?

  13. #13
    Membre averti
    Inscrit en
    Avril 2012
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 35
    Par défaut
    Merci !

    Citation Envoyé par Winjerome Voir le message
    Prenons les exemples [*]- per = 5 : Quelles sont les valeurs de f ?
    Pour per=5, les valeurs de f sont [-1,-0,5,0,0,5,1]. Il n'y a plus une distance de 1 mais c'est normal si on garde f de cette manière:Si on veut un écart de 1, il faut changer la valeur de f: et la on obtient les valeurs de f suivantes : [-2,-1,0,1,2]

    Désolé mais je ne vois toujours pas

  14. #14
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Domino5731 Voir le message
    Si on veut un écart de 1, il faut changer la valeur de f: et la on obtient les valeurs de f suivantes : [-2,-1,0,1,2]
    C'est bien ce dont je veux te faire prendre conscience : pour garder un écart constant de 1, il te faut rendre les valeurs f=linspace(-2,2,per) dépendantes de la valeur de per.
    Continue, tu es sur la bonne voie

  15. #15
    Membre averti
    Inscrit en
    Avril 2012
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 35
    Par défaut
    Je pense avoir trouvé, si c'est ça ce n'était vraiment pas bien compliqué !

    A la place de ça :
    Il faut que je fasse ça:
    Merci.

  16. #16
    Invité
    Invité(e)
    Par défaut
    C'est en effet un simplification applicable dans ton cas.
    Mais tes -1 et 1 ne sont valables que dans le cas per = 3

  17. #17
    Membre averti
    Inscrit en
    Avril 2012
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 35
    Par défaut
    Citation Envoyé par Domino5731 Voir le message
    Il faut que je fasse ça:
    C'est vrai que dans l'absolu ça ne change pas grand chose par rapport à avant.

    J'ai trouvé ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    f=(-(per-1)/2):1:((per-1)/2)
    Ca me donne les bonnes valeurs pour f à condition que per soit un nombre impaire. C'est déjà mieux !

Discussions similaires

  1. Code Source Algorithmes Génétiques en MATLAB ou VB
    Par medchok dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 26/03/2014, 12h21
  2. L'algorithme AABB (pour les détecteurs de collision)
    Par Fandekasp dans le forum Mathématiques
    Réponses: 2
    Dernier message: 20/08/2007, 09h51
  3. Réponses: 0
    Dernier message: 07/08/2007, 07h42
  4. [Algorithme] Contribuez à la page sources
    Par Community Management dans le forum Contribuez
    Réponses: 8
    Dernier message: 22/03/2007, 11h55

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