cart2pol angle sin 0 to 2pi range instead of -pi to pi range?
20 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Alexander Hannides Rajapakse
el 28 de Mayo de 2018
Respondida: theodore panagos
el 7 de Nov. de 2018
I have a huge set of x and y coordinates that I have converted to polar coordinates using cart2pol, but I need to have my range of angles to be 0 to 2pi instead of -pi to pi. How can I do this without manually adding 2pi to each negative theta?
0 comentarios
Respuestas (2)
John D'Errico
el 24 de Oct. de 2018
The most efficient solution is to use mod. Thus...
theta = mod(cart2pol(x,y),2*pi);
This works, because what you really want is to add 2*pi to the angle, whenever the angle is less than zero. mod does exactly that. And, yes, mod works for non-integer moduli, and of course mod is vectorized, so it does everything you need without even a need for a loop.
0 comentarios
theodore panagos
el 7 de Nov. de 2018
You can use the formula:
atan(x,y)=pi()-pi()/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)))
there is x=x2-x1 and y=y2-y1
The formula give the angle from 0 to2pi for all the values x and y
For x=y=0 the result is undefined.
0 comentarios
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!