Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无法正确获取numpy.fft中的频率_Python_Numpy_Fft - Fatal编程技术网

Python 无法正确获取numpy.fft中的频率

Python 无法正确获取numpy.fft中的频率,python,numpy,fft,Python,Numpy,Fft,我有一个频域的信号,然后我得到了信号的numpy.fft.ifft,我得到了时域信号,同样我得到了同一时间信号的fft,我没有得到负频率和正频率(图3)。 一般性意见:我避免使用time作为变量名,因为IPython将其作为“神奇”命令加载 有时,我发现matplotlib令人困惑的是,当你plotacomplexarray时,它实际上绘制了真实的部分。在代码段中: tt = np.arange(0, 10, .01) N = len(tt) signal_td

我有一个频域的信号,然后我得到了信号的numpy.fft.ifft,我得到了时域信号,同样我得到了同一时间信号的fft,我没有得到负频率和正频率(图3)。


一般性意见:我避免使用
time
作为变量名,因为
IPython
将其作为“神奇”命令加载

有时,我发现
matplotlib
令人困惑的是,当你
plot
a
complex
array时,它实际上绘制了真实的部分。在代码段中:

tt       = np.arange(0, 10, .01)
N          = len(tt)
signal_td  = np.cos(2.0*np.pi*2.0*tt)
signal_fd  = np.fft.fft(signal_td) 
signal_fd2 = signal_fd[0:N/2]
inv_td2    = np.fft.ifft(signal_fd2)
fd2        = np.fft.fft(inv_td2)

以下数组具有
dtype
float64
tt
signal\u td
。其他的是
complex128
。在
fd2
中只看到一个峰值的原因是因为它是
exp(4j*np.pi*tt)
的转换,而不是
cos(4*np.pi*tt)

发布用于生成绘图的代码如何?否则,很难理解您的问题。@frank128791:我发布了代码:谢谢frank。如果我再做一次信号的ifft和fft。我得到了两个与singl\u fd相同的峰值。为什么这里的fd2 transform exp()而不是cos()
trans_1=np.fft.ifft(signal_fd)
trans_2=np.fft.fft(trans_1)当您进行第一次变换时,您会得到一个复数数组。仅删除
信号中的负频率_fd2
有效地删除了
sin()
项。如果您查看这些数组的
.imag.std()
signal\u td
是实的,
signal\u td.imag.std()
正好为零。对于
signal_fd
signal_fd2
仅得到舍入误差,对于
inv_td2
则得到sqrt(2)。虚构的部分在那里,但没有出现在情节中。我希望这能回答你的问题:非常感谢你,弗兰克。现在我明白了。
tt       = np.arange(0, 10, .01)
N          = len(tt)
signal_td  = np.cos(2.0*np.pi*2.0*tt)
signal_fd  = np.fft.fft(signal_td) 
signal_fd2 = signal_fd[0:N/2]
inv_td2    = np.fft.ifft(signal_fd2)
fd2        = np.fft.fft(inv_td2)