2017-10-28 10 views
1

私は44100Hzのオーディオを持っています。つまり、44100サンプル/秒です。それを解析したいので、データを長さ1024のサブ配列に分割します。scipy.fftpack.fftの出力をどのように解釈するのですか?

各配列に対して、複素数の配列を返すフーリエ変換(fft)を適用します。これらの数値はシフト値と位相値でなければなりません。

結果の長さは、チャンクのように1024です。しかし、配列のどの要素がどの周波数に対応しているかわかりません。私はdocumentationをチェックしましたが、私が知ることができたのは結果が対称であることでした。最初の部分はスキップできます。

from scipy.fftpack import fft 

res = fft(chunk) 

しかし、結果の特定のインデックスの頻度はどのようになっていますか。

答えて

2

純粋なトーンをFFTで直接見ることができます。ように一定の関数(ゼロ周波数)、周波数1(周期=サンプリング間隔)、周波数2(周期サンプリング間隔の=半分)、および:ここでIは比較

import numpy as np 
from scipy.fftpack import fft 
arr = np.linspace(0, 2*np.pi, 9)[:-1] 
for k in range(5): 
    print np.round(np.abs(fft(np.cos(k*arr))), 10) 

結果:

[ 8. 0. 0. 0. 0. 0. 0. 0.] 
[ 0. 4. 0. 0. 0. 0. 0. 4.] 
[ 0. 0. 4. 0. 0. 0. 4. 0.] 
[ 0. 0. 0. 4. 0. 4. 0. 0.] 
[ 0. 0. 0. 0. 8. 0. 0. 0.] 

したがって、0番目のエントリは定数項です.1と-1は、サンプリングされた時間間隔の周期の周波数です。エントリ2および-2は、サンプリングされた時間間隔の半分の期間であり、 3と-3は、サンプリングされた時間間隔の1/3の期間、Nyquist frequencyに達するまでです。

サイズ1024サンプルについて

  • 1及び-1サンプリングレート
  • 2の周波数1/1024のためのものであり、-2、サンプリングレートの周波数1024分の2のためのものである
  • 3 -3
、1024分の3 512
  • ...
  • サンプリングレートは、ナイキスト周波数のための周波数のサンプリングレートの1/2 = 1024分の512であります
    関連する問題