2015-01-07 54 views
4

我想將角度從弧度轉換爲degress。我知道Matlab 2014有一個內置函數可以做到這一點,但是在我的具體情況下,這個函數還不夠好。基本上,角度pi/2是90deg和-pi/2也是90deg,但是我需要270deg作爲-pi/2的答案。把它看作弧度/度數圈,我需要每次逆時針計數角度。Radians to度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循環的數量。因此,我想知道是否有更簡單的方法來做我想做的事。也許我錯過了一個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