🙋
「IIR」と「FIR」って何ですか?名前は聞くけど、何が違うんですか?
🎓
大まかに言うと、フィードバックがあるかないかの違いだね。IIRは「無限インパルス応答」で、過去の出力も計算に使うフィードバック型。同じ次数でFIRより急峻な特性が出せるよ。FIRは「有限インパルス応答」で、フィードバックなしのフィードフォワード型。線形位相特性が得られて、位相ひずみが少ないのが特徴だ。上のツールで「フィルタータイプ」を切り替えて、周波数応答のグラフを見比べてみよう。
🙋
え、そうなんですか!「Butterworth」と「Chebyshev」はどっちがいいんですか?「リプルε」って何に効くパラメータ?
🎓
実務では目的によるね。Butterworthは通過帯域がフラットで、心電図みたいに波形の形を正確に保ちたい時に使う。Chebyshev Type Iは通過帯域に少し波打ち(リプル)を許す代わりに、遮断が急峻になる。無線通信で不要な周波数成分をガツンと切りたい時とかに向いてる。「リプルε」はその波打ちの大きさを決めるパラメータだ。ツールで「Chebyshev」を選んで、次数Nを固定したままεを0.1から0.5に変えてみ。阻止帯域の減衰がどう変わるか確認してみて。
🙋
「群遅延」ってグラフに出てますけど、これが重要って聞きます。位相がズレるということですか?
🎓
その通り!位相の周波数に対する傾きが群遅延だ。これが周波数によってバラつくと、信号の各周波数成分がバラバラのタイミングで出力され、波形が歪んでしまう。例えば、オーディオ処理でピアノの和音が変な感じに聞こえたりする。FIR(特に移動平均)はこの群遅延が一定だから歪みにくい。IIRは一定じゃないことが多い。ツールで「移動平均FIR」を選んで群遅延グラフを確認してみて。ほぼフラットだろ?
設計したフィルターの周波数応答グラフは、どのように解釈すればよいですか?
横軸が周波数、縦軸がゲイン(dB)です。通過帯域ではゲインが0dB付近、阻止帯域では減衰します。カットオフ周波数はゲインが-3dBとなる点を目安にし、遷移帯域の傾き(急峻さ)でフィルター次数の適否を判断できます。
ButterworthとChebyshev Type Iの違いは何ですか?用途に応じてどう使い分ければよいですか?
Butterworthは通過帯域が平坦でリップルがなく、滑らかな周波数特性が求められる用途に適します。Chebyshev Type Iは通過帯域にリップルがありますが、同じ次数なら遮断特性が急峻です。リップルを許容できるならChebyshev、波形歪みを避けたいならButterworthを選んでください。
移動平均FIRフィルターの次数(タップ数)はどのように決めればよいですか?
タップ数Nが大きいほど高周波ノイズを強く除去できますが、応答が遅くなり信号の急峻な変化が鈍ります。一般的には、除去したいノイズの周期に対してNを大きく設定します。例えば50Hzノイズ除去なら、サンプリング周波数に応じてNを調整し、周波数応答グラフで確認しながら決定してください。
双一次変換で設計したデジタルフィルターに、プリワーピングは必要ですか?
必要です。双一次変換ではアナログ周波数とデジタル周波数が非線形に対応するため、カットオフ周波数がずれます。本ツールでは自動的にプリワーピング処理を行い、指定したカットオフ周波数を正確に反映します。手動で補正する必要はありません。
振動・構造ヘルスモニタリング(SHM): 橋梁や建築物に取り付けた加速度センサーの信号から、風や交通による低周波の実振動と、高周波のノイズを分離します。Butterworthの平坦な通過帯域特性が、振動波形の正確な計測に役立ちます。
制御システムの信号前処理: モーターのエンコーダ信号や力センサーの出力に混入する高周波ノイズを除去し、制御系の安定性を向上させます。位相遅れが小さいFIRフィルターや、高速な処理が求められる場合はIIRフィルターが選択されます。
音響・オーディオ解析: 録音データから特定の周波数帯域(例えば、人間の声の帯域)を抽出したり、オクターブバンド分析を行ったりします。線形位相特性が求められるマスタリング処理ではFIRフィルターが多用されます。
通信システム: 受信信号から隣接チャネルの干渉波を除去する帯域通過フィルターとして、遮断特性が急峻なChebyshevや楕円フィルターが使用されます。リプル許容値εが設計の重要なパラメータとなります。
まず、「次数Nは大きければ大きいほど良い」という誤解 があります。確かに次数を上げると遮断特性は急峻になりますが、その代償は大きいです。IIRフィルターでは位相ひずみが増大し、FIRフィルターでは計算量(必要なタップ数)が爆発的に増えます。例えば、サンプリング周波数1kHzでカットオフ周波数100HzのFIRフィルターを設計する場合、次数を100から200に倍増させると、処理遅延も約2倍に。リアルタイム性が求められる制御システムでは致命的です。まずは低い次数(4〜8次程度)から始め、必要最小限の性能を満たす設計を心がけましょう。
次に、サンプリング定理の軽視 です。ツールでカットオフ周波数を設定する際、ナイキスト周波数(サンプリング周波数の1/2)を超えないことは当然ですが、問題はその「余裕」です。例えば、サンプリング周波数が10kHzの場合、ナイキストは5kHzですが、ここで4.8kHzの信号を除去しようとすると、フィルターの遷移帯域を設定する余地がほとんどなく、非常に高次のフィルターが必要になります。実用的には、扱いたい最高周波数の2〜2.5倍以上のサンプリング周波数を確保し、設計に余裕を持たせるのが鉄則です。
最後に、係数の量子化誤差を見落とす こと。ツールが出力するフィルター係数は高精度ですが、実際にマイコンやFPGAに実装する際は固定小数点や有限ビット長で表現されます。この時、係数の小さな値が「0」に丸められてしまうと、想定していた特性が大きく劣化することがあります。特にIIRフィルターはフィードバックがあるため、誤差が蓄積・発散するリスクも。設計後は、実装予定のビット長で係数を再量子化し、周波数応答が許容範囲内か必ずシミュレーションで確認する習慣をつけましょう。