FFT結果を用いた1/3オクターブバンド処理
オクターブバンド処理は、通常バンドパスフィルタを用いて行われますが、今回は、FFT結果を元に簡易的に処理するサンプルスクリプトファイルsTC_octave_band.omlを紹介します。別事例で紹介したFFT処理のスクリプトにオクターブバンド処理を追加したスクリプトとなります。
FFT処理
入力ファイルとして1列目に時刻、2列目以降に計測データが記録されているとします(oscillation.csv)。
スクリプトsTC_octave_band.omlの9行目のfilenameで入力ファイル名を指定します。データの列数は自動で取得します。また、20、21行目のstおよびedでFFT処理の開始時刻および終了時刻を指定します。ここでは、0.005sec~0.01secの波形をFFT処理します。
FFT処理を行い基準圧力p0=2E-5で除算の後、20logのデシベルに変換すると音圧レベルとなります。
1/3オクターブバンド処理
FFT処理では、周波数刻みが線形となりますが、人が感じる騒音は対数に比例すると言われていることから、騒音の評価では1/3オクターブバンド処理したものが用いられます。
47~52行目で1/3オクターブバンドの中心周波数および切断周波数を定義しています。
48行目のoct=3で1/3オクターブバンドを定義しています。Oct=1とすると、オクターブバンド処理となります。上限周波数と下限周波数はFFTの周波数軸から自動で取得しています。中心周波数は1000Hzが基準となるよう2^(n/3)×1000Hzで定義しています。
54~59行目で、各オクターブバンド内の振動エネルギを合算する処理を行います。FFTで得られた振幅の2乗和をとっています。
72~73行目で振動エネルギを音圧レベルに変換します。基準圧力p0=2E-5の2乗で除算の後、10logでデシベルに変換しています(すでに2乗されているので、20logではなく10logとしています)。
FFT処理の音圧レベルと1/3オクターブバンド処理後の音圧レベルを比較します。
最後に処理したデータをテキストファイルに書き出します。
まとめ
今回はCSVファイルを読み込み、FFT処理の後、1/3オクターブバンド処理を行うスクリプトを紹介しました。本サンプルスクリプトおよびサンプル入出力ファイルは下の[サンプルデータのダウンロード]ボタンよりダウンロード可能です。是非、オクターブバンド処理が必用な場合は、Composeおよび本サンプルスクリプトを利用してみてください。
サンプル事例一覧に戻る