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
Version imprimable
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
Salut,
Tu peux formaliser ce que tu veux faire ?
Tu peux poster un exemple de tes matrices ?
++
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
Essaye ceci :
++ bonne chanceCode:
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
En fait quand je fais ca ca ne va pas.
Mon module je l'ai calculé en faisant :
Et quand j'essai avec ce que vous m'avez donné il me retourne les coordonnés du 1 er centroid.Code:
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]);
Je ne comprend pas ton probléme :aie:
++Code:
1
2 Deplacement= (t_1.Centroid-t_2.Centroid).*[resI resJ]; Arg = atan2(Deplacement(2), Deplacement(1))
voila le message d'erreur :
Code:
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
ATAN2 prend 2 paramètres :aie:
++Code:
1
2
3
4
5
6 %Remplace : atan2(distance(1)-distance(2)); % Par : atan2(distance(1), distance(2)); % + faire les modifications qu'il faut ....
Ceci dit ça ne marchera pas quand même :roll:
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 :D
Ok merci et comment puis-je remédié à cela???
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.
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!
Salut!
Si tu veux des réponses claires, il faut formuler tes questions de manière claire, en appelant les choses par leur nom.Citation:
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
- 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
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
How can I determine the angle between two vectors in MATLAB?Code:
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
J'ai une erreur avant quand je calcul la norme du vecteur ca me retourne le bon résultats mais ca m'affiche :
Sachant que je récupere avant :Code:
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
Code:
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