numpy 由np.angle python计算的相位与通过计算复数的虚部除以真实的部的arctan获得的值不同

bn31dyow  于 2023-06-23  发布在  Python
关注(0)|答案(3)|浏览(184)

我试图在Python中找到信号FFT中特定点的相位。此时得到的复数为

complex_num = -64.97135784885555 + 30.016069249920577j

使用python函数numpy.angle,答案是2.7088133115162574弧度,以度为单位是155.20357023873785。但是当我计算numpy.arctan(img/real)时,我得到的结果是**-0.43277934207353586**。为什么我得到两个不同的值?有人能解释一下我做错了什么吗?
进一步研究它,我发现这两个值可以是相同Angular 的等效表示。但我不明白为什么会这样。

kgsdhlau

kgsdhlau1#

再解释一下

import numpy as np
complex_num = -64.97135784885555 + 30.016069249920577j
np.angle(complex_num)
#2.7088133115162574       #radian
np.angle(complex_num,deg=True)
#155.20357023873785       #degrees
np.arctan(30.016069249920577/-64.97135784885555)
#-0.43277934207353586    #radian

将弧度转换为度数:np.rad2deg()

np.rad2deg(-0.43277934207353586)
#-24.796429761262143     #degrees

现在,如果你想表示这是第一个坐标加上180

-24.796429761262143 +180
#155.20357023873785

这与np.angle(complex_num,deg=True)完全相似
希望这能澄清。
友情链接:
https://numpy.org/doc/stable/reference/generated/numpy.angle.html
https://numpy.org/doc/stable/reference/generated/numpy.arctan.html

kd3sttzy

kd3sttzy2#

你的假设是正确的。这两个值表示相同的Angular ,只是从不同的“视角”。
numpy.angle返回值in the range [-pi, pi],而numpy.arctan返回值in the range [-pi/2, pi/2],这就是返回值不同的原因。

rm5edbpk

rm5edbpk3#

对于这样的计算,应该使用numpy.arctan2(y, x)而不是numpy.arctan(y/x)

In [22]: complex_num = -64.97135784885555 + 30.016069249920577j

In [23]: np.arctan2(complex_num.imag, complex_num.real)
Out[23]: 2.7088133115162574

由于arctan2将真实的部和虚部作为单独的参数,因此它可以区分复平面的第二象限和第四象限。

相关问题