私はPythonのfftが(あるいは一般的に)どのように動作するかを理解しようとしています。
数秒間録音された信号がある場合、そのFFTの1秒間しか表示できません。
すべてのデータを取得し平均化する方法はありますか? これまではLabViewでこれを行っていました。 誰でも助けてくれますか?数秒以上のナンシーFFT
ここに私が使用しているコード例があります。
from numpy import linspace, sin, pi, log10, average, arange
from matplotlib.pyplot import plot, show, figure
from numpy.fft import fft, fftfreq
N = 1000 * 60 * 4
dt = 1/1000
x = linspace(0, N*dt, N)
freq = linspace(10, 200, N)
sinsweep = sin(x*freq)
mavg = [average(sinsweep[i*60:(i+1)*60]) for i in range(int(N/60))]
plot(freq, sinsweep, '.')
plot(linspace(10, 200, int(N/60)), mavg, '.')
f = figure()
t = arange(60)
sp = fft(mavg, n=60)
freq = fftfreq(t.shape[-1])
plot(sp.imag)
show()
私はあなたが何をしようとしているのか分からない。期待される成果は?使用するコードは機能します。それは1秒以内に平均信号を取り、複数秒を表示します。 – Glostas
私はすべての周波数のすべてのテストの継続時間を示すfftグラフを取得しようとしています。私が売っている意味は、10から200 Hzの広い範囲を得る。 –
信号のFFTを取ると完了です – Glostas