0

jTransforms ライブラリを使用して WAV ファイルのスペクトル解析を試みています:公式サイト

しかし、jTransforms を使用して WAV ファイルを FFT の許容可能な入力に変換する方法と、FFT 後に周波数スペクトルを表示するにはどうすればよいかという問題があります。Google を検索したところ、どうにかして WAV ファイルをdouble[]またはComplex[]に変換する必要があることがわかりました。その後、出力をどのように解釈すればよいでしょうか?

申し訳ありませんが、私はFFTを初めて使用するため、この質問は非常にばかげているように聞こえるかもしれません。どうもありがとう!

4

1 に答える 1

2

私はあなたのライブラリを知りませんが、変換を適用する方法についての広範なドキュメントがあると思います。

解釈に関しては、複素数変換を使用すると、実数部を対応する周波数ビンのエネルギーとして解釈し、虚数部を正弦波の位相として解釈できます。パワースペクトル密度(PSD)は、次の式で計算できます。

real(fftData)*conj(fftData) 

これはに等しい

abs(fftData^2)

(したがって、実数部に複素共役を掛けます)。

考慮しなければならないことの1つは、fft出力を再スケーリングすることです。一部のアルゴリズムは、fftSizeに比例して出力をスケーリングします。したがって、出力に1/fftSizeを掛ける必要があります。

そして最後に、気づいていない場合は、スペクトルが対称であるため、fft出力の半分を取得するだけで済みます。中央のビン(fftSize / 2)は通常、ミラーリングされた基本周波数であり、fftData[0]と同じです。これは、指定されたfftSizeで分析できる最高周波数であるナイキスト周波数をマークします。したがって、22kHzまでの周波数を表示する場合は、fftSizeが少なくとも44kであることを確認してください。

FFTには多くの落とし穴があります。そのため、いくつかの部分をよく読んで、そこで何をしているのかを理解してください。数学自体は、それを使用したいだけの場合はそれほど重要ではないので、スキップすることができます。

編集:さらにあります。WAVファイル全体を入力としてフィードしない場合は、厄介なエッジ効果を回避するために、テーパーウィンドウ(ガウス、ハミング、ハニングなど)を使用して入力データに重みを付けることを検討してください。そうしないと、元の出力には存在しない人工的な高周波がfft出力に取り込まれます。

于 2012-01-16T18:57:37.473 に答える