C相当于matlab角度函数

Mat*_*ble 1 c matlab complex-numbers gsl

我在这里死了.所以我有一个复数(-4.9991 + 15.2631i).在matlab如果我这样做

angle(-4.9991 + 15.2631i) = 1.8873
Run Code Online (Sandbox Code Playgroud)

我认为这个角度基本上算得上了

atan(15.2631/-4.9991) = -1.2543
Run Code Online (Sandbox Code Playgroud)

为什么这些不同?我需要编写一个计算复数角度的交流函数.我是这样做的:

#define angle(x) (atan((GSL_IMAG(x)/GSL_REAL(x))))
Run Code Online (Sandbox Code Playgroud)

但是那种方式给了我-1.2543答案,而不是1.8873答案.我究竟做错了什么?

Mit*_*eat 6

-1.2543 + Pi(radians) = 1.8873 (with rounding)
Run Code Online (Sandbox Code Playgroud)

正如其他人所指出的,使用 atan2()

  • 不......只有一半的可能情况都是如此.请参考上面的建议并使用atan2. (4认同)