Вы должны вычислить фазу с помощью atan2
:
function a = my_angle(x)
a = atan2(imag(x),real(x));
atan2
вычисляет обратную касательную в четырех квадрантах.Это точнее, чем atan
, потому что деление теряет точность.См. запись в Википедии , чтобы узнать, как эта функция вычисляется.
Я не знаю точно, как реализован MATLAB angle
, но было бы странно, если быне были реализованы через atan2
. Сардар Усама подтвердил в комментарий ниже , что это так, как это реализовано в MATLAB, вы можете набрать edit angle
в MATLAB, чтобысм. код.