【问题标题】:Radians to degrees Matlab弧度到度 Matlab
【发布时间】:2015-01-07 19:49:32
【问题描述】:

我想将角度从弧度转换为度数。我知道 Matlab 2014 有一个内置函数可以做到这一点,但在我的具体情况下,这个函数还不够好。基本上,角度 pi/2 是 90 度,-pi/2 也是 90 度,但是我需要 270 度作为 -pi/2 的答案。把它想象成弧度/度圈,我每次都需要逆时针计算角度。

我做的功能如下:

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 函数?

谢谢,

【问题讨论】:

    标签: matlab degrees radians


    【解决方案1】:

    这个怎么样:

    vec_deg2=mod(radtodeg(vec), 360)
    

    【讨论】:

      【解决方案2】:

      因为你输入的是vector,所以一定要注意。

      这可能是另一种方式:

      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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-11-28
        • 1970-01-01
        • 2018-04-29
        • 1970-01-01
        • 2012-04-17
        • 2012-04-25
        • 1970-01-01
        相关资源
        最近更新 更多