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 件のコメント

Jan
Jan 2013 年 6 月 13 日
There is no "angle between points". Do you mean the angle between two vectors?

サインインしてコメントする。

 採用された回答

Jan
Jan 2013 年 6 月 13 日

1 投票

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 件のコメント

Roger Stafford
Roger Stafford 2013 年 6 月 17 日
編集済み: Roger Stafford 2013 年 6 月 17 日
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 2013 年 6 月 18 日
@Roger: Thanks! I forgot the limitations of cross.
Stephen Devlin
Stephen Devlin 2018 年 3 月 16 日
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 2018 年 12 月 3 日
@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

サインインしてコメントする。

その他の回答 (1 件)

michael scheinfeild
michael scheinfeild 2014 年 7 月 9 日

0 投票

what is v1 v2 can yo give example

カテゴリ

ヘルプ センター および File ExchangeMathematics についてさらに検索

タグ

質問済み:

2013 年 6 月 13 日

コメント済み:

2018 年 12 月 3 日

Community Treasure Hunt

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

Start Hunting!

Translated by