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 :

calcul argument avec 2 matrices


Sujet :

MATLAB

  1. #1
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 72
    Par défaut calcul argument avec 2 matrices
    Bonjour, j'ai deux matrices qui me donne les coordonnées du centre d'un objet avant et après un déplacement.

    Je souhaite calculer l'argument de ce vecteur, avez vous une idée pour faire cela???

    Merci

  2. #2
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2007
    Messages
    979
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 979
    Par défaut
    Salut,

    Tu peux formaliser ce que tu veux faire ?
    Tu peux poster un exemple de tes matrices ?

    ++

  3. #3
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 72
    Par défaut
    Alors en fait avec mon programme je récupère deux matrices qui sont les centres de l'objet, j'ai deux images avec un déplacement de l'objet :
    centroid_1 =[261,97]
    centroid_2 =[143,87]
    J'ai récupéré le module (égale ici à 18,42)

    Et maintenant je voudrais en fait :
    phi = arctan (Uy/Ux)
    Uy etant la différence selon l'axe de ordonnés et Ux selon l'axe des abscisses

  4. #4
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2007
    Messages
    979
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 979
    Par défaut
    Essaye ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    centroid_1 =[261,97];
    centroid_2 =[143,87];
    Deplacement = centroid_2-centroid_1;
     
    Dist = norm(Deplacement)
    Arg = atan2(Deplacement(2),Deplacement(1))
     
    % Verification 
    D = [centroid_1; centroid_2];
    plot(D(:,1),D(:,2))
    hold on
    scatter(centroid_2(1),centroid_2(2))
    axis equal
    ++ bonne chance

  5. #5
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 72
    Par défaut
    En fait quand je fais ca ca ne va pas.
    Mon module je l'ai calculé en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
       resI = 1;  % Resolution suivant les lignes
       resJ = 1;  % Resolution suivant les colonnes  
      distance = norm((t_1.Centroid-t_2.Centroid).*[resI resJ]);
    Et quand j'essai avec ce que vous m'avez donné il me retourne les coordonnés du 1 er centroid.

  6. #6
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2007
    Messages
    979
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 979
    Par défaut
    Je ne comprend pas ton probléme


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Deplacement= (t_1.Centroid-t_2.Centroid).*[resI resJ];
    Arg = atan2(Deplacement(2), Deplacement(1))
    ++

  7. #7
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 72
    Par défaut
    voila le message d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ??? Index exceeds matrix dimensions.
     
    Error in ==> essai2>speed at 231
            Deplacement = atan2(distance(1)-distance(2));
     
    ??? Error while evaluating uicontrol Callback

  8. #8
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2007
    Messages
    979
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 979
    Par défaut
    ATAN2 prend 2 paramètres

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    %Remplace : 
    atan2(distance(1)-distance(2));
    % Par : 
    atan2(distance(1), distance(2));
     
    % + faire les modifications qu'il faut ....
    ++

  9. #9
    Expert confirmé
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Par défaut
    Ceci dit ça ne marchera pas quand même
    La variable distance étant la norme il me semble fort probable voir certain que sa dimension est 1*1 auquel cas comme le signale le message d'erreur (référencé dans la FAQ) distance(2) n'existe pas....

    Sinon ton code il est joli mr_samurai

  10. #10
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 72
    Par défaut
    Ok merci et comment puis-je remédié à cela???

  11. #11
    Expert confirmé
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Par défaut
    C'est facile : tu prends le code de mr_samurai qui lui est juste,
    tu le lis, tu le testes et tu essayes aussi de le comprendre.
    Il a donné la réponse.

    On ne peut rien faire de plus.

  12. #12
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 72
    Par défaut
    Bon ben je n'est pas trouvé comment modifier mon code pour trouver l'argument!
    Puis-je avoir une piste? une doc???
    Merci nom projet ce termine demain et c'est la derniere chose que j'ai à faire!

  13. #13
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Par défaut
    Salut!
    j'ai deux matrices qui me donne les coordonnées du centre d'un objet avant et après un déplacement.

    Je souhaite calculer l'argument de ce vecteur
    Si tu veux des réponses claires, il faut formuler tes questions de manière claire, en appelant les choses par leur nom.
    • La position d'un point dans l'espace est décrite par un vecteur.
    • Les composantes de ce vecteur sont ses projections sur les vecteurs unités constituant le repère de coordonnées.
    • Les coordonnées de ce vecteur sont les longueurs de ses composantes, lesquelles peuvent être stockées dans un tableau.
    • Une matrice est un tableau à deux indices astreint à certaines règles particulières (somme, produit de matrices, etc.); il y a beaucoup de tableaux qui ne sont pas des matrices.
    • La notion d'argument s'applique aux nombres complexes et non aux vecteurs; il représente un angle.


    Alors formule correctement et on t'aidera.
    Jean-Marc Blanc

  14. #14
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 72
    Par défaut
    Je cherche à récupérer un angle!!
    Je connais :
    position 1 : [a b]
    position 2 : [c d]

    Je cherche à déterminer l'angle du vecteur

  15. #15
    Membre Expert
    Avatar de tug83
    Homme Profil pro
    MATLAB Geek !
    Inscrit en
    Juin 2006
    Messages
    1 781
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : MATLAB Geek !
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 781
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    u = [1 2 0];
    v = [1 0 0];
    CosTheta = dot(u,v)/(norm(u)*norm(v));
    ThetaInDegrees = acos(CosTheta)*180/pi
    How can I determine the angle between two vectors in MATLAB?

  16. #16
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 72
    Par défaut
    J'ai une erreur avant quand je calcul la norme du vecteur ca me retourne le bon résultats mais ca m'affiche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ??? Index exceeds matrix dimensions.
     
    Error in ==> essai2>speed at 231
            Deplacement = atan2(distance(1)-distance(2));
     
    ??? Error while evaluating uicontrol Callback
    Sachant que je récupere avant :
    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
     
    centr1=0;
    centr2=0;
     function image1 (fichier,chemin)
         hold on
     
            for k = 1:numel(s2)
                centroid_1 = s2(k).Centroid;
     
            end
           t_1=s(1);
            hold off
          centr1=centroid_1;
     
     function image2(obg,event)
         hold on
            for k = 1:numel(s2)
                centroid_2 = s2(k).Centroid;
     
            end
            t_2=s(1);
            hold off
      centr2=centroid_2;
     
     function speed (varargin)
        distance = norm((t_1.Centroid-t_2.Centroid).*[resI resJ]);
        Deplacement = atan2(distance(1)-distance(2));
     
    end

Discussions similaires

  1. Calculer une moyenne avec une matrice
    Par progfou dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 05/06/2006, 16h47
  2. [calcul] pb avec la syntaxe d'une expression calulée
    Par gloogloo dans le forum PostgreSQL
    Réponses: 11
    Dernier message: 29/06/2005, 17h14
  3. Calculer un inverse de matrice avec boost?
    Par Clad3 dans le forum Bibliothèques
    Réponses: 6
    Dernier message: 02/06/2005, 18h38
  4. [JTable] remplir avec une matrice
    Par ybdz dans le forum Composants
    Réponses: 3
    Dernier message: 08/12/2004, 21h03

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