Matlab角度函数来计算相位

时间:2019-06-14 18:16:29

标签: matlab trigonometry

我正在使用Matlab的angle函数来计算一系列傅立叶变换的相位。当我使用自己的angle函数(如下)时,会得到不同的结果。我可以告诉我Matlab函数的实现方式吗?

function a = angle(x)
  a = atan(imag(x)/real(x))
  if (real(x) < 0)
    a = a + pi
  end

结果是Matlab的angle函数的结果给出了“更好”的结果。我只是想知道我在做错什么。

1 个答案:

答案 0 :(得分:2)

您应该使用atan2计算相位:

function a = my_angle(x)
a = atan2(imag(x),real(x));

atan2计算四象限反正切。它比atan更精确,因为除法会降低精度。请参阅the Wikipedia entry,以了解如何计算此函数。

我不确定MATLAB的angle是如何实现的,但是如果没有通过atan2实现,那就很奇怪了。 Sardar Usamaa comment below中确认这是在MATLAB中实现的方式,您可以在MATLAB中键入edit angle来查看代码。