Matlab中弧度转角度

4
我希望能够将弧度角转换为度数。我知道Matlab 2014有一个内置函数可以实现这一点,但在我的特定情况下,该函数不够好用。基本上,角度pi/2是90度,而-pi/2也是90度,但我需要- pi/2的答案为270度。可以将其视为弧度/度数圆,每次需要逆时针计算角度。我编写的函数如下:
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函数?

谢谢。

2个回答

9

这个怎么样:

vec_deg2=mod(radtodeg(vec), 360)

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接