Как я могу заставить MATLAB отображать радианы в единицах пи?

Я пытаюсь сделать программу для преобразования декартовых координат в полярные координаты.

Мой калькулятор возвращается arctan(1) как pi/4,

MATLAB с другой стороны возвращает atan(1) как 0.7854,

Как я могу заставить MATLAB возвращать такие числа в виде выражений pi?

2 ответа

Как вы сказали, это просто для быстрой визуальной проверки, я бы просто разделил на пи:

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

Если бы это было чем-то, что вы хотели делать часто, я бы определил некоторую функцию на вашем локальном пути, например

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  

Обратите внимание, что использование символического набора математических инструментов для чего-то столь простого, что, вероятно, вызовет больше осложнений и замедлится, чем поможет!

Для некоторых конкретных значений pi ты можешь использовать symbolic числа, например:

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

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

Обратите внимание, что для этого требуется Symbolic Math Toolbox.

Надеюсь это поможет,

Qapla"

Другие вопросы по тегам