Transform angles that are -180 to +180 to angles that are in the 0-360 degree range?

28 vues (au cours des 30 derniers jours)
I am implementing a vector coding technique in matlab using the atan2d(diff(y),diff(x)) function, but the results are from -180 to +180 and I would like to have a 0-360 range. I tried to input an if statement for angles < 0 to have 360 added to them, but I couldn't get it to work. It is possible that I just didn't write the statement correctly, but I would appreciate any tips or advice.
  2 commentaires
dpb
dpb le 1 Juin 2016
"It is possible that I just didn't write the statement correctly, but I would appreciate any tips or advice."
Well, it's a little tough to comment on what we can't see...what did you try?
Kylie Davis
Kylie Davis le 1 Juin 2016
Sorry about that. I tried: if x < 0 x = x+360 end
But the other difficulty I am having is that I have so many data sets that I need to apply that to. I have hip, knee, and ankle joint angle data for both limbs of 18 subjects. So I need to have an if statement correcting the negative angles for 36 different sets.

Connectez-vous pour commenter.

Réponse acceptée

Star Strider
Star Strider le 1 Juin 2016
This is my little anonymous function that I use for such problems:
Angles360 = @(a) rem(360+a, 360); % For ‘atan2d’
  3 commentaires
Kylie Davis
Kylie Davis le 1 Juin 2016
I think I got it to work. Thanks so much!
Star Strider
Star Strider le 1 Juin 2016
My pleasure!
It’s an anonymous function, and works like any other function. Just put it at the beginning of your code, then call it as:
Angles360 = @(a) rem(360+a, 360); % For ‘atan2d’
x = randi(9, 5, 1); % Create Data
y = randi(9, 5, 1); % Create Data
theta = atan2d(diff(y),diff(x));
theta360 = Angles360(theta);

Connectez-vous pour commenter.

Plus de réponses (1)

theodore panagos
theodore panagos le 5 Déc 2018
A formula to calculate an angle counter clockwise from x positive to 360 degrees:
f(x,y)=180-90*(1+sign(x))* (1-sign(y^2))-45*(2+sign(x)*sign(y)
-180/pi()*sign(x*y)*atan((abs(x)-abs(y))/(absx)+abs(y)))

Catégories

En savoir plus sur Mathematics dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by