How to change angles to 0 to 180

59 次查看(过去 30 天)
I have an array of angles ranging from [-180, 180]
please I want to change to [0, 180], how can I do this?
I have tried this code below but it's giving me [90, 180]
Angles180 = @(a) rem(180+a, 360)-90;
Result = Angles180([-90, 0, 90])
please how can I do this?

采纳的回答

Sam Chak
Sam Chak 2023-5-29
Hi @TTA
Are you looking for the conversion like this?
Angles180 = @(a) a/2 + 90;
Result1 = Angles180([-180, 0, 180])
Result1 = 1×3
0 90 180
Result2 = Angles180([-90, 0, 90])
Result2 = 1×3
45 90 135
  7 个评论
DGM
DGM 2023-5-29
编辑:DGM 2023-5-29
So then should the answer be
[0 0 0 30 60 90]
or
[90 60 30 30 60 90]
or
[60 30 60 30 60 30]
or something else?

请先登录,再进行评论。

更多回答(2 个)

Image Analyst
Image Analyst 2023-5-29
How about just adding 180 to all angles less than 0, so for example -135 becomes +45 degrees.
mask = angles < 180;
angles(mask) = angles(mask) + 180; % Only add 180 to negative angles.
  2 个评论
TTA
TTA 2023-5-30
编辑:TTA 2023-5-30
@DGM you are right.
for example, To find the equivalent angle within the range of 0 to 90 degrees for -20 degrees, you can use the modulo operation and add multiples of 90 until the angle falls within the desired range.
Here's how you can calculate the equivalent angle:
  1. Take -20 modulo 360: -20 % 360 = 340. This step ensures the angle is within the range of 0 to 360 degrees.
  2. Since 340 is greater than 90, subtract multiples of 90 to bring it within the range of 0 to 90 degrees.
  • 340 - 270 = 70
Thanks

请先登录,再进行评论。


Image Analyst
Image Analyst 2023-5-29
You say "What I wanted to do is I want to put all the following angles in the first quadrant ([0,90] so the ones that are already within 0 t 90 does not change and the ones that are with negative can taken as absolute."
Well, what about this:
angles = abs(angles);
???

类别

Help CenterFile Exchange 中查找有关 Performance and Memory 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by