在numpy.fft中没有得到频率

时间:2014-10-20 14:42:03

标签: python numpy fft

我在频域有一个信号。然后我拿了numpy.fft.ifft信号。我得到了时域信号。我得到了相同时间信号的fft我没有得到负和正频率(Plot图3中的。 enter image description here

     time       = np.arange(0, 10, .01)
     N          = len(time)
     signal_td  = np.cos(2.0*np.pi*2.0*time)
     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)

1 个答案:

答案 0 :(得分:1)

一般评论:我避免使用time作为变量名称,因为IPython将其加载为"魔法"命令。

我有时会对matplotlib感到困惑的一点是,当你plot complex数组时,它实际上是真实的部分。在代码段中:

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 float64ttsignal_td。其他人是complex128。您只在fd2中看到一个峰值的原因是因为它是exp(4j*np.pi*tt)而非cos(4*np.pi*tt)的转换。