Как я могу заставить 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"