作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我不明白为什么 ifft(fft(myFunction)) 与我的函数不同。它似乎是相同的形状,但因子为 2(忽略常量 y 偏移)。我能看到的所有文档都说有一些 fft 没有做的规范化,但是 ifft 应该照顾到这一点。下面是一些示例代码 - 您可以看到我在何处使用了 2 的因子来给我正确的答案。感谢您的帮助 - 它让我发疯。
import numpy as np
import scipy.fftpack as fftp
import matplotlib.pyplot as plt
import matplotlib.pyplot as plt
def fourier_series(x, y, wn, n=None):
# get FFT
myfft = fftp.fft(y, n)
# kill higher freqs above wavenumber wn
myfft[wn:] = 0
# make new series
y2 = fftp.ifft(myfft).real
# find constant y offset
myfft[1:]=0
c = fftp.ifft(myfft)[0]
# remove c, apply factor of 2 and re apply c
y2 = (y2-c)*2 + c
plt.figure(num=None)
plt.plot(x, y, x, y2)
plt.show()
if __name__=='__main__':
x = np.array([float(i) for i in range(0,360)])
y = np.sin(2*np.pi/360*x) + np.sin(2*2*np.pi/360*x) + 5
fourier_series(x, y, 3, 360)
最佳答案
您正在消除 0
和 -wn
之间的负频率。
我认为您的意思是将 myfft
设置为 0
之外的所有频率的 [-wn, wn]
。
更改以下行:
myfft[wn:] = 0
myfft[wn:-wn] = 0
关于numpy - FFT 的逆函数与原始函数不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16715641/
我是一名优秀的程序员,十分优秀!