C 等价于 matlab 角函数

标签 c matlab complex-numbers gsl

我死在这里。所以我有一个复数(-4.9991 + 15.2631i)。在 matlab 中,如果我这样做的话

angle(-4.9991 + 15.2631i) = 1.8873

我以为角度基本上是这样计算的

atan(15.2631/-4.9991) = -1.2543

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

#define angle(x) (atan((GSL_IMAG(x)/GSL_REAL(x))))

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

最佳答案

-1.2543 + Pi(radians) = 1.8873 (with rounding)

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

关于C 等价于 matlab 角函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16601252/

相关文章:

c++ - 重载 += 或 -= 运算符的好处

无法让 if 语句/while 循环工作

matlab - 有没有办法避免循环使这段代码更快?

c - 在c程序中使用diskpart

matlab - Matlab fir2() 函数中傅立叶时移的作用是什么?

matlab - 如何在 Matlab 中将密度信息添加到 2D 图中?

c++ - 类中的运算符重载会导致范围错误

c - 如何将无穷大值传递给函数并测试结果

c - 错误的 printf 参数数量导致奇怪的结果

将 sockaddr_storage 转换为 inet_ntop 的 sockaddr_in