【问题标题】:Getting multiple sinosidual waves using Fourier Transform Python使用傅里叶变换 Python 获得多个正弦波
【发布时间】:2019-03-17 18:40:03
【问题描述】:

根据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

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

【问题讨论】:

  • 当您从时域中的曲线开始时,然后在每个频率都有幅度和相位的频域中应用 fft its then ... 将此频域转换回时域,以重新创建原始源曲线,您需要执行我在您的代码中没有看到的逆 fft ...从头开始自己编写这个 ifft 很有启发性,但是 python 有这样一个 ifft api 调用
  • 我使用了 ifft,但它只会将 x 转换回 f。但是我怎样才能得到傅里叶变换输出的那些特征或子信号呢?或者我怎样才能像绘制它们一样可视化它们?

标签: python-3.x scipy fft


【解决方案1】:

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

x = a * sin(t) 

不是重构的 FFT 结果。

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

【讨论】:

  • 我对 fft 很幼稚,你能从我给定的代码中提供一个最小的例子吗? fft在哪里用于在罪波中分解?请原谅我问这个问题,但我真的很想知道这个。
猜你喜欢
  • 1970-01-01
  • 2021-04-16
  • 1970-01-01
  • 1970-01-01
  • 2020-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-22
相关资源
最近更新 更多