Calculate the angle between multiple points

I have a matrix A contain x values in the first column and y values in the second column. I want to calculate the angle between vectors.

1 Kommentar

Jan
Jan am 13 Jun. 2013
There is no "angle between points". Do you mean the angle between two vectors?

Melden Sie sich an, um zu kommentieren.

 Akzeptierte Antwort

Jan
Jan am 13 Jun. 2013

1 Stimme

The ACOS and the corresponding ASIN approchs are numerically instable near to multiples of pi (half). Better use the more accurate ATAN2 method:
angle = atan2(norm(cross(v1,v2)), dot(v1,v2));

4 Kommentare

Roger Stafford
Roger Stafford am 17 Jun. 2013
Bearbeitet: Roger Stafford am 17 Jun. 2013
In the two-dimensional x-y plane Mathworks' 'cross' function doesn't work. It requires three-element vectors. The two-dimensional expression should be:
angle = atan2(abs(det([v1;v2])),dot(v1,v2));
where v1 and v2 are assumed to be two-element row vectors.
(Corrected)
Jan
Jan am 18 Jun. 2013
@Roger: Thanks! I forgot the limitations of cross.
Stephen Devlin
Stephen Devlin am 16 Mär. 2018
Hi, I have no idea if anyone will see this comment as it is years after the original post, but mathematically what is this expression:
"angle = atan2(abs(det([v1;v2])),dot(v1,v2));"
Jess Smith
Jess Smith am 3 Dez. 2018
@stephen thats basically doing the inverse tangent of the cross product of 2D vectors over the dot product of those vectors, giving you the angle; cross product of a x b is |a||b|sin(theta) and dot product is |a||b|cos(theta) so dividing them by each other and taking inverse tan is the angle

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

michael scheinfeild
michael scheinfeild am 9 Jul. 2014

0 Stimmen

what is v1 v2 can yo give example

Kategorien

Mehr zu Mathematics finden Sie in Hilfe-Center und File Exchange

Tags

Gefragt:

am 13 Jun. 2013

Kommentiert:

am 3 Dez. 2018

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by