-1

ランダムなバイナリ データに対して FFT を実行しています。y 軸の倍率が何であるかについて混乱しています。私のランダム データの繰り返し率は 400Hz、つまり測定間隔は 0.0025 秒です。データ点数は 12489 です。

以下のコードは機能し、平均振幅は約 50 になります。

私の質問:

  • このコンテキストで y.size は正確に何をしますか?
  • 12489 個のランダムな 2 進小数点で実行される FFT の予想振幅は? (この質問は特にここにあることを理解していますが、理解できれば助けていただければ幸いです)。

作業コード: (コピーして Python に貼り付けて確認する場合)

from numpy import *
import pylab as P
import numpy as N
import scipy as S
import array
import scipy.fftpack
from random import *

#Produce random binary data
x = N.linspace(0,12489,12489)
randBinList = lambda n: [randint(0,1) for b in range(1,n+1)]
y = randBinList(12489)
y = asarray(y)

#Perform an FFT
FFT = abs(S.fft(y)) 
freqs = S.fftpack.fftfreq(y.size,0.0025) 

#What does y.size do???

x_range = freqs[(freqs>0)]
y_range = FFT[(freqs>0)]

P.plot(x_range,y_range,'.r')
P.show()
4

1 に答える 1

0

fftfreqFFT の結果の各ビンの周波数を生成します。これは、渡したサンプル数とサンプリング レート ( doc ) から計算されます。

于 2013-03-25T01:11:30.817 に答える