numpy と matplotlib を使用して、シミュレーションからのデータ出力を分析しています。根源を見つけることができない (明らかな) 矛盾が 1 つあります。それは次のとおりです。
特定のエネルギー a^2~1 を持つ信号があります。rfft を使用して FFT を取得し、フーリエ空間でエネルギーを計算すると、かなり大きくなります。私のデータなどの詳細を無効にするために、単純な正弦波の例を次に示します。
from pylab import *
xx=np.linspace(0.,2*pi,128)
a=np.zeros(128)
for i in range(0,128):
a[i]=sin(xx[i])
aft=rfft(a)
print mean(abs(aft)**2),mean(a**2)
原則として、両方の数値は(少なくとも数値的な意味では)同じでなければなりませんが、これがこのコードから得られるものです。
62.523081632 0.49609375
numpy.fft のドキュメントを調べてみましたが、何も見つかりませんでした。ここで検索すると次のことがわかりましたが、そこの説明を理解できませんでした。
既存の (合成された) 信号とフィルター処理された信号の間の大きな FFT 振幅差
私は何を見逃していますか/誤解していますか? この点に関するヘルプ/ポインタは大歓迎です。
ありがとう!