2016-10-03 15 views
1

信号処理が新しく、ちょっと冗談を言うと私を許します。私はWindows用のFFTWをダウンロードしてインストールしました。ドキュメントは大丈夫ですが、まだクエリがあります。FFTWでオーディオデータの離散フーリエ変換を計算する

私の全体的な目的は、コンピュータのサウンドカードから44100 samps/secでサンプリングされた生のオーディオデータをキャプチャして(このタスクは既にライブラリとマイコードを使用して実装されています)、このオーディオデータのブロックに対してDFTを実行することです。

私はオーディオの周波数成分の範囲を見つけることに興味があり、私は逆DFTを実行しません。この場合、必要なものすべてが実際から実際に変換されているので、fftw_plan_r2r_1d()の機能はありますか?

変換するデータのブロックは、11025サンプルの長さです。私の関数は以下のように呼び出されます。これにより、11025ビンのスペクトルアレイが得られます。結果の最大周波数成分をどのように知ることができますか?

ビン間隔はFs/n、44100/11025なので、私はそれを信じています。4. 0Hzから44100Hzまでの周波数スペクトルを4ステップで、ナイキスト周波数22200の半分まで?

これは、私が60Hzから3000Hzまでの周波数を検索したいので、私にとっては問題になります。変換範囲を制限する方法はありますか?

この関数の引数はありませんか、別の方法がありますか?

これに関する助けを前もって多くのお客様に感謝します。

p = fftw_plan_r2r_1d(11025, audioData, spectrum, FFTW_REDFT00, FFTW_ESTIMATE); 
+0

1つにつき1つ質問してください。 –

答えて

1

上から個々の質問のいくつかに答えるために:

  • あなたは実数 - 複素数は実数 - 実数
  • 、ない変換あなたがの大きさを計算します。必要に関心のある周波数での複素出力ビン(magnitude = sqrt(re*re + im*im)
  • 各出力ビンの幅は4ヘルツ
  • F、すなわち周波数分解能は、実際Fs/N = 44100/11025 = 4 Hzありますまたは実数から複素数への変換では、N/2 + 1の出力ビンを得て、0からFs/2
  • の周波数を無視するだけで、FFTは非常に効率的です。 「不要な出力ビン(あなたが唯一の出力周波数の比較的少数に興味がある場合を除き)

その他の注意事項:

  • 計画の作成が実際にFFTを実行しません - 通常は、一度計画を作成し、何度も使用する(fftw_executeと呼ぶ)パフォーマンスのために、単精度の呼び出しを使用したいと思うかもしれません(例:%1、%2、%2、%3)。fftwf_executeではなくfftw_execute、同様に計画の作成など)のStackOverflow上

いくつかの有用な関連する質問/回答用:

さらに多くの類似した質問と回答があります。タグを検索することもできます。

dsp.stackexchange.comは実際の特定のプログラミング上の問題ではなく、DSP の理論に関する質問のサイトとして推奨されます。

+0

ありがとうPaul R.実際から複雑なものの代わりに、実際から実際への変換を実行するとどうなりますか?私はいつも、周波数成分の振幅だけに興味があれば、実際の部分だけが必要だと考えました。 – Engineer999

+0

いいえ、あなたは "本当の部分だけを必要としません" - すべての周波数成分が大きさと位相を持っています - これは複素数で表されます。複素出力ビン)。 FFTWは実数から実数への変換をサポートしていますが、これらはDiscrete * Fourier * TransformsではなくDiscrete * Hartley/Cosine/Sine * Transformsです。 [実際の変換の種類に関するFFTWのドキュメント](http://www.fftw.org/doc/Real_002dto_002dReal-Transform-Kinds.html)を参照してください。 –

+0

もう一度お手伝いをしていただきありがとうございます。私は知っている、私はDSPページ上でこれを尋ねたはずですが、それは具体的なコーディングではなく理論に関連しているからです。サンプリングされた時間領域のデータの大きさは重要ですか?出力FFTビンの大きさが高くなることを意味しますか?また、変換するディスクリート・オーディオ・データがあるので、これは実世界から複雑な変換になります。複合体から複合体への例は何でしょうか。時間領域のデータはいつ複雑になりますか? – Engineer999

関連する問題