我有 1024 个样本点,我想使用傅里叶变换进行非常简单的外推。首先,我对数据应用快速傅立叶变换。我的第一个直觉是我只是在更大的间隔上计算傅立叶逆变换。FFT 的结果是正弦波的集合,所以我预计它的结果在原始间隔结束时是连续的。
我用这个公式计算结果:
区间末尾的外推如下所示:
我想避免结果中出现这种“中断”。
python源代码为:
import numpy as np
import matplotlib.pyplot as plt
from scipy.fftpack import fft
# generate samples
data = np.zeros(1024)
for k in range(0, 1024):
data[k] = np.sin(k/20 * np.pi*2)
# apply FFT on samples
waves = fft(data)
# calculate the new data points from the FFT result
res = np.zeros(2048)
for k in range(0, 2048):
val = 0.0
for n in range(0, len(waves)):
# https://dsp.stackexchange.com/a/510/25943
val += waves[n]*np.exp(1.j * 2*np.pi * n * k / len(waves)) / len(waves)
res[k] = val.real
#plot the result
plt.plot(res)
plt.show()