How to make negative degree numbers positive while maintaining degree.

24 ビュー (過去 30 日間)
Kristin Aldridge
Kristin Aldridge 2021 年 10 月 21 日
編集済み: Walter Roberson 2021 年 10 月 22 日
I'm trying to use
if avg_deg < 0, avg_deg = avg_deg+360; end
but it isn't working. I don't want to use abs because I want to rotate these negative degrees to their positive counterpart, but the line of code isn't doing anything at all.

採用された回答

Walter Roberson
Walter Roberson 2021 年 10 月 21 日
You can use logical indexing....
avg_deg = randi([-719 719], 1, 10)
avg_deg = 1×10
149 -15 -420 453 593 -132 594 712 344 423
mask = avg_deg < 0;
new_deg_version_1 = avg_deg;
new_deg_version_1(mask) = new_deg_version_1(mask) + 360
new_deg_version_1 = 1×10
149 345 -60 453 593 228 594 712 344 423
But I would suggest that mod() is more reliable, since it can handle angles < -360 and angles >= 360
new_deg_version_2 = mod(avg_deg, 360)
new_deg_version_2 = 1×10
149 345 300 93 233 228 234 352 344 63
  2 件のコメント
Kristin Aldridge
Kristin Aldridge 2021 年 10 月 21 日
Thanks, I used lonWrapped=wrapTo360(lon) which I think is the same?
Walter Roberson
Walter Roberson 2021 年 10 月 22 日
編集済み: Walter Roberson 2021 年 10 月 22 日
avg_deg = [randi([-719 719], 1, 5), -720, -360, 0, 360, 720]
avg_deg = 1×10
-617 -202 -77 -35 -677 -720 -360 0 360 720
new_deg_version_2 = mod(avg_deg, 360)
new_deg_version_2 = 1×10
103 158 283 325 43 0 0 0 0 0
new_deg_version_3 = wrapTo360(avg_deg)
new_deg_version_3 = 1×10
103 158 283 325 43 0 0 0 360 360
They differ on the treatment of positive multiples of 360.

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

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeMATLAB Compiler SDK についてさらに検索

製品

Community Treasure Hunt

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

Start Hunting!

Translated by