1

Python 2.7.3 で、多数の個々のピークを含む FFT のグラフを生成しました。

http://imgur.com/O9E0e

グラフ全体の下の面積を計算するには、値を合計するか、trapz を使用できることを理解していますが、これらの計算を単一の領域に制限しようとすると苦労しています。たとえば、105 から 120Hz の間、または 145 から 155Hz の間の領域だけを計算したいと思います。

それが役立つ場合、このグラフを生成するコードは次のとおりです。

x=arange(0,15,0.01)

y=exp(-0.3*x)*exp(x*pi*20j)+exp(-0.9*x)*exp(x*pi*25j)+exp(-0.9*x)*exp(x*pi*15j)

fft(y)
plot(fft(y))
xlabel('frequency (Hz)')
show()

おそらく比較的単純なものが欠けているだけだと思いますが、プログラミングの完全な初心者として、あなたが提供できる助けをいただければ幸いです.SOを簡単に検索しても答えは得られませんでした. ありがとう。

4

2 に答える 2

1

指数の積分$\int_a ^ {b} \ exp(x * q)=(1 / q)*(\ exp(b * q)-\ exp(a * q))$

于 2012-11-06T15:00:09.047 に答える
1

単純和 (または台形) 積分を使用している場合:

ft = np.fft.fft(y)
integral = sum(ft[105:121])

また

integral = np.trapz(ft[105:121])

それはうまくいくようです。

>>> import numpy as np
>>> x = x=np.arange(0,15,0.01)
>>> from numpy import exp,pi
>>> y=exp(-0.3*x)*exp(x*pi*20j)+exp(-0.9*x)*exp(x*pi*25j)+exp(-0.9*x)*exp(x*pi*15j)
>>> ft = np.fft.fft(y)
>>> np.trapz(ft[105:121])
(642.14009362811771+142.9776425340925j)
>>> sum(ft[105:121])
(652.29308789751224+152.70583448308713j)
于 2012-11-06T15:04:45.113 に答える