• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:バンドパスIIRフィルタの低域におけるエラー)

バンドパスIIRフィルタの低域におけるエラー

このQ&Aのポイント
  • バンドパスIIRフィルタの低域においてナイキスト周波数に対して通過域が低域にありすぎるとエラーが起こります。
  • バンドパスIIRフィルタを使用してオクターブバンド分析を行う際に問題が発生しています。
  • 解決策としては、遮断帯域の差を縮めるためにサンプリング周波数を変更することが考えられます。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

#2です。 可能ならどんどんデシメーションしても良いですが、 デシメーション後に分析する周波数帯域のスペクトルが変化していては意味がありません。 FFT等でで分析する周波数帯域のスペクトルが変化しないことを確かめる必要があります。 つまりどれだけデシメーションできるかはデシメーションの精度によります。 分析帯域とナイキスト周波数が近ければ、デシメーションの精度が足りなくなるでしょう。 でも最終的にはJIS測定ができる装置で実機測定するんですよね?

1take
質問者

お礼

ありがとうございました。

1take
質問者

補足

回答ありがとうございます。助かります。  分析帯域が、ナイキスト帯域に近くても遠くても問題になる・・・難しいものですね。ナイキスト周波数の付近は折り返しの影響もありますから、サンプリングの段階でオクターブ分析帯域がナイキスト周波数に近くならないようにしています(評価したい帯域の2.4倍や2.56倍位以上でサンプリングしています)。  低域ではどこからdecimationするかは、Scilabでエラーを起こす帯域だけに絞るか、ただ振動の場合は同じレコーダーで騒音と一緒に収録して無意味にサンプリングが高い事もあり、どこのオクターブの帯域でエラーを起こすかはサンプリングによって違ってしまうので、機械的に例えばオクターブの帯域がナイキスト周波数の1/2より低ければdecimationしようかと思います。その辺はdecimation前と後でスペクトル分析して決めたいと思います。  オクターブバンド分析はJISで定められた試験法があるので、それに従って性能を確認します。また同じ波形データを使って、RION SA27等の実機や、会社で使用しているLabview等のデジタル分析ソフトと結果を比較して確認をした後は、Scilabで作成したプログラムの結果だけで評価していきたいと思っています。  実機は現場で直ぐに見たい場合は良いのですが、後処理でレコーダーに収録したデータを1chづつ分析したり、ペンレコーダで一旦書かせて、巻き戻してペンレコーダーの波形を目安に分析するのは、以前はそうしていましたが、最近はレコーダーのデータがデジタルファイルになっていたり、データをパソコンに取り込むだけで電圧出力の出来ないものもありますので、今後は後処理は分析ソフト上だけで賄いたいと思っています。

その他の回答 (2)

回答No.2

精度が足りないのでしょう。 普通はデシメーションします。 時間があれば、インパルス不変法とかでs-z変換してみれば 精度が足りない理由がわかります。

1take
質問者

補足

回答ありがとうございます。  お手数ですが、もう少し教えて頂きたいのですが、バンドパスの中心周波数がナイキスト周波数からどの程度離れていたらdecimationするのでしょうか?。それともdecimation可能ならどんどん行った方が良いのでしょうか。?。  参考書やネットで調べても、なかなか情報が見つかりませんでした。私の用途は、各1/3オクターブバンドのバンドパスフィルタを通して時定数をかけて、各バンドのレベル波形を求める事です。

  • hot-IC
  • ベストアンサー率87% (7/8)
回答No.1

次数が小さいからではないでしょうか? Labviewでは次数はいくつになっていますか? あと、Matlab centralなどを見ると、Matlab用のオクターブ分析のコードがいくつか あります。 http://www.mathworks.com/matlabcentral/fileexchange/69-octave 試してみたところOctaveでも一部動作するようです。 また、作者の方の論文も参考になりそうです。 http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.57.5728 JISは国際規格と互換性があるはずですが、細かいところはご自身で確認されたほうが良いと思います。

1take
質問者

お礼

回答ありがとうございます。  labviewでの次数は同じく4にしています。Scilab、Octave共に次数を上げるとよりナイキスト周波数に近い帯域もエラーになってしまいます。  ご紹介頂いたファイルの中身を見たら、低いOct帯域でdecimateしている記述があるので、私と同じ問題でそうしているのか、計算時間の短縮の為なのかは判りませんが、私もdecimateしてみます。ちなみにMatlabのFilter Design Toolboxには中心周波数と次数だけで結果が出てくる関数があるようなので、Labviewもそうですが流石に高いだけあると思います。しかしオクターブバンドフィルタは基本的にJISで定める計算式で中心周波数を出し、同じく計算式で上限下限遮断周波数を指定したバンドパスフィルタなので、苦労するとは思いませんでした。 どうもありがとうございました。

関連するQ&A