Inconsistency of angle function in finding angle of vectors
8 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Aleem Andrew
am 12 Apr. 2021
Beantwortet: Steven Lord
am 12 Apr. 2021
Typing the command angle(1+i) yields an angle of 45 degrees, but typing angle(-1-2i) yields -2.0344. Why is the angle being measured clockwise from the x axis in one case and and counterclockwise in the other? Is there any more consistent way to find the angle of vectors, either measured clockwise or counterclockwise?
0 Kommentare
Akzeptierte Antwort
the cyclist
am 12 Apr. 2021
I would not characterize this as an inconsistency, so much as a convention to report the value in the range [-pi,pi], rather than the [0,2pi] that you expected. (I feel obligated to point out that this is quite explicit in the documentation.)
Regardless of your opinion on that, all you need to do is calculate the result modulus 2pi, to get what you want
mod(angle(1+i),2*pi)
mod(angle(-2-i),2*pi)
0 Kommentare
Weitere Antworten (1)
Steven Lord
am 12 Apr. 2021
Typing the command angle(1+i) yields an angle of 45 degrees,
No it doesn't. It returns the equivalent angle in radians, however.
A1 = angle(1+1i)
A2 = deg2rad(45)
abs(A2-A1)
but typing angle(-1-2i) yields -2.0344.
A3 = angle(-1-2i)
Correct.
Why is the angle being measured clockwise from the x axis in one case and and counterclockwise in the other?
"theta = angle(z) returns the phase angle in the interval [-π,π] for each element of a complex array z. The angles in theta are such that z = abs(z).*exp(i*theta)."
If you want the angles to be in the interval [0, π] instead add the negative angle to 2*pi.
A3pos = 2*pi+A3
theAngles = rad2deg([A3; A3pos])
These angles are:
diff(theAngles)
360 degrees apart.
0 Kommentare
Siehe auch
Kategorien
Mehr zu Resizing and Reshaping Matrices finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!