簡體   English   中英

Matlab角度函數來計算相位

[英]Matlab angle function to compute phase

我正在使用Matlab的angle函數來計算一系列傅立葉變換的相位。 當我使用自己的angle函數(如下)時,我得到的結果是不同的。 我可以告訴我Matlab函數的實現方式嗎?

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

結果是Matlab angle函數的結果給出了“更好”的結果。 我只是想知道我在做什么錯。

您應該使用atan2計算相位:

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

atan2計算四象限逆切線。 它比atan更精確,因為除法會降低精度。 請參閱Wikipedia條目以了解如何計算此函數。

我不確定MATLAB的 angle是如何實現的,但是如果不通過 atan2實現,這將很奇怪。 Sardar Usama下面的評論中確認這是在MATLAB中實現的方式,您可以在MATLAB中鍵入edit angle來查看代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM