我在频域有一个信号。然后我拿了numpy.fft.ifft信号。我得到了时域信号。我得到了相同时间信号的fft我没有得到负和正频率(Plot图3中的。
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)
答案 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
float64
:tt
和signal_td
。其他人是complex128
。您只在fd2
中看到一个峰值的原因是因为它是exp(4j*np.pi*tt)
而非cos(4*np.pi*tt)
的转换。