使用傅立叶变换Python获取多个正弦波

时间:2018-10-12 13:56:29

标签: python-3.x scipy fft

根据http://www.thefouriertransform.com/

“傅立叶变换表明,任何波形都可以重写为正弦函数之和。”

我有一些信号(每个信号的形状为256,64),我想分解为子信号,然后使用这些子信号生成真实的信号。我现在正在这样做:-

#getting data
with open('../f', 'rb') as fp:
    f=pickle.load(fp)

from scipy.fftpack import fft, dct

f=f[0]

tf=fft(f)

x=np.reshape(np.abs(tf),(256,64))

plt.plot(x)

plt.show()

print(x.shape)    #same shape as f

但是我得到的输出具有与真实信号相同的形状,但具有一些虚构的值,这些虚构的值最终被丢弃。我在这里查看了其他傅立叶问题,但没有一个给出令人满意的结果,它们只是转换了输入信号。我究竟做错了什么?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

要查看正弦波分量,需要绘制正弦波。

x = a * sin(t) 

不是经过整形的FFT结果。

如果您不关心相位,则正弦波图的数量将为FFT +1长度的一半,即从每个FFT结果元素的bin中心计算出的每个正弦波频率(索引乘以采样率除以长度),其幅度由FFT bin的abs()给出。