MATLAB Answers

converting atan2 output to 360 deg

236 ビュー (過去 30 日間)
shobhit mehrotra
shobhit mehrotra 2015 年 4 月 13 日
コメント済み: theodore panagos 2018 年 11 月 7 日
Hi, I'm using the function atan2, however my output is from -180 to 180 degrees (I converted from radians) How do I modify it such that it outputs a value from 0-360 degrees?
winddir = (atan2(Vi,Ui))*(180/pi);
  1 件のコメント
Image Analyst
Image Analyst 2015 年 4 月 13 日
There is an atan2d() function you know. All the functions have "d" versions that work in degrees instead of radians. Though it goes from -180 to +180.

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

採用された回答

John D'Errico
John D'Errico 2015 年 4 月 14 日
編集済み: John D'Errico 2015 年 4 月 14 日
Since it will be periodic, just add 360 if the value is less than 0. This will suffice to correct the negative angles.
winddir = winddir + (winddir < 0)*360;
You can use atan2d if you prefer to work in degrees, but it will map to the same range, [-180,180], so you will still need to correct for the negative angles.
If you wanted a simple expression that works in one line of code, this should do:
winddir = atan2d(Vi,Ui) + 360*(Vi<0);
  1 件のコメント
shobhit mehrotra
shobhit mehrotra 2015 年 4 月 14 日
most excellent thank you!

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

その他の回答 (1 件)

theodore panagos
theodore panagos 2018 年 11 月 7 日
You can use the formula:
atan(x,y)=180/pi()*(pi()-p()/2*(1+sign(x))*(1-sign(y^2))-pi()/4*(2+sign(x))*sign(y)
-sign(x*y)*atan((abs(x)-abs(y))/(abs(x)+abs(y))))
That formula give the angle from 0 to 360 degrees for any value of x and y.
x=x2-x1 and y=y2-y1
For x=y=0 the result is undefined.
  1 件のコメント
theodore panagos
theodore panagos 2018 年 11 月 7 日
In the formula put pi()/2 instead p()/2

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

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by