IIRフィルタ設計シミュレーター 戻る
信号処理シミュレーター

IIRフィルタ設計シミュレーター — Butterworthローパスのゲイン特性

連続時間 Butterworth ローパスを設計し、ボード線図でゲイン |H(jω)| をリアルタイム可視化。カットオフと次数による減衰特性の変化と必要次数を直感的に把握できます。

パラメータ設定
カットオフ周波数 f_c
Hz
次数 N
阻止帯域開始 f_s
Hz
阻止帯域減衰 A_s
dB

通過帯域端の許容リプル A_p は 3 dB(カットオフ定義)として最小必要次数を計算します。

計算結果
f_s での減衰量 |H(j·2π·f_s)|
要求仕様の最小必要次数 N_min
ロールオフ(-6N dB/oct)
2·f_c での減衰量
ボード線図 |H(jω)| (dB)

青実線=Butterworth ゲイン/緑破線=カットオフ f_c/赤実線=阻止帯域端 f_s/灰破線=要求減衰 −A_s

理論・主要公式

アナログ Butterworth ローパスは、通過帯域内で最大平坦なゲインを持つ古典的フィルタです。利得の二乗は次のように与えられます:

$$|H(j\omega)|^2 = \frac{1}{1 + (\omega/\omega_c)^{2N}}$$

ここで ω_c はカットオフ角周波数、N は次数。デシベル表記の利得:

$$G(\omega) = 20\,\log_{10}|H(j\omega)|$$

通過帯域端 ω_p で −A_p(既定 3 dB)、阻止帯域端 ω_s で −A_s 以上の減衰を要求する場合、最小必要次数は:

$$N_{\min} = \left\lceil \frac{\log_{10}\!\left(\dfrac{10^{A_s/10}-1}{10^{A_p/10}-1}\right)}{2\,\log_{10}(\omega_s/\omega_p)} \right\rceil$$

高周波側の漸近的なロールオフは −6N dB/oct(= −20N dB/dec)。次数を上げるほど急峻になります。

IIRフィルタ設計シミュレーターとは

🙋
「IIR フィルタ」って聞いたことはあるんですが、Butterworth って何ですか?まず何を見ればいいんでしょう。
🎓
ざっくり言うと、Butterworth は「通過帯域で凸凹が出ないようにできるだけ平らに作ったローパス」だ。式は $|H(j\omega)|^2 = 1/(1+(\omega/\omega_c)^{2N})$ の一本でいい。シミュレーターの青い曲線が、まさにこれを dB で描いたものだよ。緑の破線(カットオフ f_c)で、ちょうど $-3$ dB を切るだろう。
🙋
本当だ。次数 N を 1 から 12 まで上げていくと、カットオフから先の落ち方がどんどん急になりますね。
🎓
そう、それがロールオフだ。$-6N$ dB/oct で落ちる。N=4 なら $-24$ dB/oct、N=8 なら $-48$ dB/oct という具合。シミュレーターの「ロールオフ」カードもその値を出している。f_s のカードを見ると、f_s = 500 Hz・N=4 のときに約 $-57.9$ dB と表示されるはずだ。$5^8 \approx 3.9\times 10^5$ から来ている。
🙋
「最小必要次数 N_min」って、何のためにあるんですか?
🎓
設計仕様から逆算した「これだけは必要」という次数だよ。「f_p までは $-3$ dB 以内、f_s までに $-40$ dB 落としたい」と言えば、$N_{\min} = \lceil \log_{10}((10^{A_s/10}-1)/(10^{A_p/10}-1))\,/\,(2\log_{10}(f_s/f_p)) \rceil$ で決まる。シミュレーターの初期値(f_c=100, f_s=500, A_s=40)だと N_min は 3。実際に N=4 にしているのは、製造ばらつきや設計マージン用の余裕だ。
🙋
じゃあ次数を 12 まで上げれば最強じゃないですか?
🎓
そこが落とし穴。極が虚軸に近づくから係数に敏感になって、固定小数点 DSP だと丸め誤差で簡単に発振する。実装は 2 次セクション(SOS)に分解するのが普通だ。あと、群遅延がガクッと増えて、ステップ応答にリンギングが出る。仕様の N_min + 1〜2 くらいに留めるのが現場では多い。

よくある質問

通過帯域の平坦さを最優先するなら Butterworth、同じ次数でできるだけ急峻に落としたいなら Chebyshev、最も急峻にしたければ Elliptic(Cauer)を選びます。Chebyshev は通過帯域(I 型)または阻止帯域(II 型)にリプルを許容し、Elliptic は両方にリプルを置きます。音響や測定系では位相が比較的素直な Butterworth が好まれ、通信のチャネル分離など急峻さが必要な用途では Elliptic が使われます。
最も一般的なのは双線形変換です。s = (2/T)·(1−z⁻¹)/(1+z⁻¹) と置き、s 平面の左半面を z 平面の単位円内に写像します。エイリアシングは起こりませんが、周波数軸が ω_a = (2/T)·tan(ω_d·T/2) のように歪むため、目標周波数を事前に補正するプリワーピングが必須です。インパルス不変変換は線形位相に近い特性を保ちますが、ローパス以外では折返しに注意が必要です。
FIR は有限長のインパルス応答を持ち、線形位相が容易・常に安定という長所がありますが、同じ急峻さを得るには高いタップ数(演算量)が必要です。IIR はフィードバックを使うため少ない係数で急峻な応答を実現できますが、位相は非線形で、係数誤差で不安定になる可能性があります。リアルタイム制御や DSP の低レイテンシ用途では IIR、画像処理や時系列解析で位相歪みを嫌う用途では FIR が好まれます。
直接形(Direct Form I/II)で一気に高次を実装すると、係数の量子化により極が動いて簡単に不安定化します。実務では 2 次セクション(SOS:biquad)の縦続接続に分解し、各セクションの極ペアを近いもの同士で組み、ゲイン分配(scaling)でオーバーフローを防ぎます。固定小数点 DSP ではさらに丸めノイズの再循環にも注意します。MATLAB の zp2sos、SciPy の sosfilt などが標準的なツールです。

実世界での応用

センサ計測の前処理:加速度センサや圧力センサの出力には、高周波の電気ノイズや構造振動が重畳します。Butterworth ローパスは通過帯域が平坦で位相歪みも比較的小さいため、計測値の振幅情報を保ちながら帯域外ノイズだけを除去するアンチエイリアシングフィルタや平滑化フィルタとして広く使われます。

音響・オーディオ機器:スピーカーのクロスオーバーネットワーク、サンプリング前のアンチエイリアシング、再生時の再構成フィルタ(reconstruction filter)など、オーディオの随所で IIR ローパスが使われます。Butterworth は周波数特性が滑らかで色付けが少ないため、ハイファイ用途のフィルタ設計の出発点になります。

通信・無線:変復調回路のベースバンド処理、IF/RF 段での帯域制限、ソフトウェア無線(SDR)でのチャネル選択など、信号の所望帯域だけを取り出す目的で IIR フィルタが多用されます。急峻な選択性が要る場面では Elliptic、群遅延を抑えたい場面では Butterworth と、特性で使い分けます。

制御工学・サーボ系:サーボ制御のループに乗る共振や高周波ノイズを抑えるノッチ・ローパスとして IIR フィルタが組み込まれます。位相遅れが安定余裕を削るため、必要十分な次数で過剰に切らないことが重要です。Butterworth は位相特性が穏やかで、制御帯域に対する影響を見積もりやすいフィルタです。

よくある誤解と注意点

最も多い誤解は、「次数を上げれば上げるほど良いフィルタになる」と思い込むことです。確かに高次にすればロールオフは急峻になりますが、極が虚軸に近づくため係数の数値感度が急増し、丸め誤差や量子化誤差で簡単に不安定化します。シミュレーターで N=12 を選ぶと曲線は理想的に見えますが、実装ではほぼ確実に 2 次セクション分割が必要になります。「N_min から始めて少しだけ余裕を持たせる」が現実的な方針です。

次に多いのが、カットオフ f_c で「ぴったり切れる」と思ってしまう誤解です。Butterworth のカットオフは利得が $-3$ dB になる点であって、信号が完全に消える点ではありません。$-3$ dB はパワーで半分、振幅で約 0.707 倍にすぎず、f_c 近傍の信号は依然として通過します。完全に消したい場合は、阻止帯域端 f_s と要求減衰 A_s を明示して仕様を立て、N_min を逆算するアプローチが正しい流れです。

最後に、このシミュレーターが描いているのは「アナログ(連続時間)」の周波数特性であることに注意してください。デジタル IIR として実装するには双線形変換などで離散化する必要があり、その際に周波数軸がプリワープによって歪みます。アナログ設計でカットオフ $f_c$ を狙ったつもりでも、サンプリング周波数 $f_s^{(\text{sa})}$ が低いと実際のデジタルフィルタのカットオフはずれます。連続時間で確認 → プリワーピング → 双線形変換、という順番が定石です。