4
在Python中處理fft時,我遇到了函數歸一化和計算係數平方和的問題。scipy和Parseval身份的傅立葉變換
我的代碼如下:
import pandas as pd
import numpy as np
import scipy.fftpack
# sample points
N = 1024
# sample spacing
T = 1.0/512.0
# example function
x = np.linspace(0.0, N*T, N)
y = 1.5 * np.sin(5*2*np.pi*x) + 3 * np.sin(6*2*np.pi*x)
df = pd.DataFrame({'X': x, 'Y': y})
sumy = sum(abs(df['Y'])**2)
df['FFT (Y)'] = scipy.fftpack.fft(df['Y'])/(N/2)
df['FFT (freq)'] = scipy.fftpack.fftfreq(N, T)
sumffty = sum(abs(df['FFT (Y)'])**2)
print sumy, sumffty
根據帕斯瓦爾的身份,總和應該是平等的;然而,它們的因數是256(總和是較小的一個)。我錯過了什麼?
你是對的,當我使用numpy.fft實現時,返回的和是相等的,但scipy.fft實現返回另一個答案。我怎樣才能讓scipy實現給我'正確'的答案? –