Parsevals Satz in Python
Ich versuche, Pythons FFT-Funktionalität in den Griff zu bekommen, und eines der seltsamen Dinge, über die ich gestolpert bin, ist dasParsevals Satz scheint nicht zuzutreffen, da es jetzt einen Unterschied von ungefähr 50 ergibt, während es 0 sein sollte.
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()
Ich bin mir ziemlich sicher, dass es ein Normalisierungsfaktor ist, aber ich scheine ihn nicht finden zu können, da alle Informationen, die ich über diese Funktion finden kann, die sindscipy.fftpack.rfft Dokumentation.