17

私はPythonのfft機能を理解しようとしていますが、私が偶然見つけた奇妙なことの1つは、パーセバルの定理が適用されていないように見えることです。 0。

import numpy as np
import matplotlib.pyplot as plt
import scipy.fftpack as fftpack

pi = np.pi

tdata = np.arange(5999.)/300
dt = tdata[1]-tdata[0]

datay = np.sin(pi*tdata)+2*np.sin(pi*2*tdata)
N = len(datay)

fouriery = abs(fftpack.rfft(datay))/N

freqs = fftpack.rfftfreq(len(datay), d=(tdata[1]-tdata[0]))

df = freqs[1] - freqs[0]

parceval = sum(datay**2)*dt - sum(fouriery**2)*df
print parceval

plt.plot(freqs, fouriery, 'b-')
plt.xlim(0,3)
plt.show()

これは正規化の要因であると確信していますが、この関数について見つけることができるすべての情報はscipy.fftpack.rfftのドキュメントであるため、見つけることができないようです。

4

1 に答える 1

24
于 2012-12-23T16:18:38.107 に答える