如何让MATLAB以pi的形式显示弧度?

时间:2017-08-18 14:24:31

标签: matlab math polar-coordinates radians

我正在尝试制作一个将笛卡尔坐标转换为极坐标的程序。

我的计算器会将arctan(1)作为pi/4返回。

另一方面,MATLAB将atan(1)作为0.7854返回。

如何让MATLAB将这样的数字作为pi的表达式返回?

2 个答案:

答案 0 :(得分:1)

对于pi的某些特定值,您可以使用symbolic个数字,例如:

atan(sym(1))
ans =
pi/4

asin(sym(3^.5/2))
ans =
pi/3

请注意,这需要符号数学工具箱。

希望这有帮助,

Qapla'

答案 1 :(得分:1)

正如你所说,这仅仅是为了快速目视检查,我只想用pi来划分:

n = 0.7854;
disp(['n in terms of pi: ', num2str(n/pi), '*pi']); 
>> n in terms of pi: 0.25*pi

如果您经常这样做,我会在local path上定义一些功能,如此

function [val, str] = wrtpi(n)
% Returns the value of n with respect to pi
    val = n/pi;
    % Could include some rounding checks here if you wanted to complicate things
    % ... *checks* ...
    str = ['n in terms of pi: ', num2str(n/pi), '*pi']; 
end

然后

n = 0.7854;
[val, str] = wrtpi(n)
>> val = 0.25
   str = n in terms of pi: 0.25*pi

你还说这只是用于识别弧度象限,除了学习它们之外,你还可以只有一个简单的函数

function q = quadrant(n)
    Qs = pi*[0, 1/2, 1, 3/2];               % Quadrants
    q = find(Qs <= mod(n,2*pi), 1, 'last'); % Index within the quadrants
    % You could make this accept vector inputs using:
    % q = arrayfun(@(x) find(Qs <= mod(x,2*pi), 1, 'last'), n)
end

然后

quadrant(2*pi - 0.0001) % >> 4
quadrant(0.2)           % >> 1
quadrant(1.6)           % >> 2  

请注意,使用符号数学工具箱来处理这么简单的事情可能会导致更多的复杂性和减速而不是它有帮助!