2015-01-07 9 views
4

각도를 라디안에서 degress로 변환하고 싶습니다. Matlab 2014에는 빌드 인 함수가 있지만,이 함수는 내 구체적인 경우에 충분하지 않습니다. 기본적으로 각도 pi/2는 90deg이고 -pi/2도 90deg이지만 -pi/2에 대한 대답으로 270deg가 필요합니다. 각도를 라디안 /도로 생각하면 매번 시계 반대 방향으로 각도를 계산해야합니다. 나는 다음 (단순) 예를 사용하여 테스트 할 때Radians to degrees Matlab

function [Angle_deg] = Func_Rad2Deg(Angle_rad) 
Angle_deg = Angle_rad * (180/pi); 
if Angle_deg < -1 
    Angle_deg = Angle_deg + 360; 

elseif Angle_deg >= -1e-6 && Angle_deg <= 1e-6 
    Angle_deg = 0; 
end 
end 

그러나 뭔가 잘못 : 내가 만든

기능은 다음과 같다.

clear all; close all; clc; 
%% Tester 
vec = [pi -pi pi/2 -pi/2]; 
vec_deg1 = Func_Rad2Deg(vec); 
for i=1:size(vec,2) 
    vec_deg2(i) = Func_Rad2Deg(vec(i)); 
end 

는 출력 : 내가 벡터를 변환 할 때

는 위의 예에서 볼 수 있듯이
vec_deg1 = 
180 -180 90 -90 
vec_deg2 = 
180 180 90 270 

, 나는 -pi/2에 대한 잘못된 답변을 얻을. 그러나 루프를 사용할 때 응답이 원하는 것입니다. 이 예제는 간단한 예제입니다. 변환 할 최대 1000x1000 행렬이 있으므로, for-loops 수를 제한하고 싶습니다. 그러므로 내가 원하는 것을 쉽게 할 수있는 방법이 있는지 궁금해하고있었습니다. 어쩌면 내가 Matlab 함수를 놓친 것일까?

감사합니다,이 방법에 대해

답변

8

:

vec_deg2=mod(radtodeg(vec), 360) 
+0

니스와 우아한 :

이것은 또 다른 방법이 될 수 있습니다. +1 – rayryeng

+0

아주 좋고 간단한 해결책, 감사합니다! – user5489

2

것은 당신이 벡터를 입력, 당신이주의를 지불해야하기 때문에.

function [Angle_deg] = Func_Rad2Deg(Angle_rad) 
Angle_deg = Angle_rad .* (180/pi); 
Angle_deg(Angle_deg < -1) = Angle_deg(Angle_deg < -1) + 360; 
Angle_deg(Angle_deg >= -1e-6 & Angle_deg <= 1e-6) = 0; 
end