双一次変換シミュレーター 戻る
信号処理

双一次変換シミュレーター — アナログからデジタルIIRへ

アナログ1次ローパスフィルタ H(s)=ωc/(s+ωc) を、双一次変換でデジタルIIRフィルタに変換するツールです。カットオフ周波数とサンプリング周波数を変えると、IIR係数 b0/b1/a1・周波数応答・周波数ワーピング・プリワープの効果がリアルタイムで分かります。

パラメータ設定
アナログ設計カットオフ周波数 fc
Hz
設計したいローパスの −3 dB 周波数
サンプリング周波数 fs
Hz
サンプリング周期は T = 1/fs。fs/2 がナイキスト周波数
評価周波数 fEval
Hz
デジタルフィルタの利得 |H| を確認したい周波数
計算結果
プリワープ後 ωc (rad/s)
係数 b0
係数 b1
係数 a1
評価周波数での利得 |H| (dB)
周波数ワーピング率
s 平面 → z 平面 写像

左:アナログ s 平面(jω 軸と左半平面=安定領域)。右:デジタル z 平面(単位円とその内部=安定領域)。双一次変換が s の左半平面を単位円内部へ写像します。z 平面内の点が IIR フィルタの極(単位円内=安定)です。

周波数応答 |H(f)|
周波数ワーピング — デジタル周波数 vs アナログ周波数
理論・主要公式

$$s=\frac{2}{T}\,\frac{1-z^{-1}}{1+z^{-1}}, \qquad T=\frac{1}{f_s}$$

双一次変換の置換式。アナログ伝達関数 H(s) の s にこれを代入してデジタル H(z) を得る。T はサンプリング周期。

$$\omega_{warped}=\frac{2}{T}\tan\!\left(\frac{\omega_c T}{2}\right)$$

周波数プリワープ。設計用アナログカットオフ ωc をあらかじめ引き伸ばし、デジタル −3 dB 点を目標 fc に一致させる。

$$K=\frac{\omega_{warped}\,T}{2}, \quad b_0=b_1=\frac{K}{1+K}, \quad a_1=\frac{K-1}{1+K}$$

アナログ1次ローパス H(s)=ωc/(s+ωc) を変換したデジタルIIR係数。差分方程式は y[n] = b0·x[n] + b1·x[n−1] − a1·y[n−1]。双一次変換は安定性を保存し、s 平面左半平面が z 平面の単位円内部に写る。

双一次変換とは

🙋
「双一次変換」って、アナログフィルタをデジタルに変えるやつですよね?でも、なんでわざわざ変換が必要なんですか?最初からデジタルで設計すればいいのでは…?
🎓
いい質問だね。理由はシンプルで、アナログフィルタの設計理論が100年分も蓄積されているからなんだ。バターワース、チェビシェフ、楕円フィルタ——どれも「s 平面」で考える完成された理論がある。だったらその資産を使い回したい。そこで「アナログで設計して、最後にデジタルへ翻訳する」という発想が出てくる。その翻訳作業の決定版が双一次変換なんだ。s = (2/T)(1−z⁻¹)/(1+z⁻¹) という1本の置き換えで、アナログの H(s) がデジタルの H(z) に化ける。
🙋
なるほど、翻訳機なんですね。でも翻訳って、ニュアンスがズレることがありますよね。双一次変換でも何かズレるんですか?
🎓
鋭いね、まさにそこなんだ。双一次変換は、アナログの周波数軸(0 から無限大まで)を、デジタルの 0 から fs/2 までの有限区間に「ぎゅっと押し込む」。無限を有限に詰め込むから、当然どこかで歪む。これが「周波数ワーピング」だ。低い周波数ではほぼズレないけど、ナイキスト周波数 fs/2 に近づくほど、アナログ周波数がどんどん圧縮される。上の「周波数ワーピング」グラフを見ると、低域は直線なのに高域でぐっと寝てくるのが分かるよ。
🙋
じゃあ、設計したカットオフ周波数も少しズレちゃうんですか?1000 Hz で設計したのに、デジタルにしたら 980 Hz になってた、みたいな…?
🎓
そのとおり、放っておくとズレる。でも、ちゃんと対策があるんだ。それが「プリワープ」。ワーピングで縮むのが分かっているなら、縮む分だけ先に伸ばしておけばいい。ωcWarped = (2/T)·tan(ωc·T/2) で設計用のアナログカットオフをあらかじめ引き伸ばす。すると変換後にちょうど目標の fc に着地する。左のスライダーで fc=1000、fs=44100 にすると、プリワープ後の ωc が元の 2π×1000 よりほんの少しだけ大きくなっているのが分かるよ。この「ほんの少し」が補正分なんだ。
🙋
プリワープで補正できるなら、双一次変換は欠点なしの最強の方法ってことですか?インパルス不変法とかも聞いたことがあるんですけど。
🎓
最強というより「実務の標準」だね。インパルス不変法は、アナログのインパルス応答をそのままサンプリングして作る方法。直感的だけど、s 平面の jω 軸が z 平面で何重にも折り重なって「エイリアシング」が出る。双一次変換は jω 軸全体を単位円に1対1で巻き付けるから、エイリアシングが原理的にゼロ。代償は周波数ワーピングだけで、それもプリワープで消せる。だからオーディオEQでもセンサーのノイズ除去でも、アナログプロトタイプからIIRを起こすときはほぼ双一次変換を使うんだ。
🙋
最後にひとつ。変換した後のデジタルフィルタが「不安定」になって発散しちゃう、なんてことはないんですか?
🎓
それも双一次変換の美点でね、「安定性を保存する」ことが数学的に保証されているんだ。アナログの世界では、極が s 平面の左半平面にあれば安定。デジタルの世界では、極が z 平面の単位円の内側にあれば安定。双一次変換は、s 平面の左半平面をきっちり単位円の内部に写す。だから、元のアナログフィルタが安定なら、変換後のデジタルIIRも必ず安定。上の「s 平面 → z 平面」の図で、左半平面の点が単位円の中に入っていく様子を見てみてね。

よくある質問

双一次変換(バイリニア変換、タスティン変換)は、アナログフィルタの伝達関数 H(s) をデジタルフィルタ H(z) に変換する手法です。s = (2/T)(1−z⁻¹)/(1+z⁻¹) という置き換えで、s 平面の左半平面(安定領域)が z 平面の単位円内部(安定領域)にちょうど写像されます。T はサンプリング周期 1/fs です。s 平面の jω 軸全体が単位円上に巻き付くため、サンプリング由来のエイリアシングが原理的に発生しないのが最大の利点です。
双一次変換は s の jω 軸全体(0〜∞)を z の単位円(0〜fs/2)に押し込むため、周波数軸が非線形に圧縮されます。これを周波数ワーピングと呼びます。その結果、アナログのカットオフ周波数をそのまま使うとデジタル側のカットオフがずれてしまいます。これを補正するのがプリワープで、ωcWarped = (2/T)·tan(ωc·T/2) によって設計用のアナログカットオフをあらかじめ引き伸ばします。プリワープした周波数で設計すると、デジタルフィルタの −3 dB 点が目標の fc にちょうど一致します。
アナログ1次ローパス H(s) = ωc/(s+ωc) に双一次変換の s を代入し、整理すると K = ωcWarped·T/2 を用いて b0 = b1 = K/(1+K)、a1 = (K−1)/(1+K) が得られます。差分方程式は y[n] = b0·x[n] + b1·x[n−1] − a1·y[n−1] です。本ツールの既定値(fc=1000Hz, fs=44100Hz)では b0=b1≈0.0666、a1≈−0.866 となり、カットオフ周波数での利得はちょうど −3 dB になります。
インパルス不変法はアナログフィルタのインパルス応答をサンプリングして作りますが、s の jω 軸が z 平面に折り重なるためエイリアシングが発生します。双一次変換は jω 軸全体を単位円に1対1で写像するためエイリアシングがなく、ローパス・ハイパス・バンドパスなど広く使えます。代償は周波数ワーピングですが、これはプリワープでカットオフ点を補正できます。実務でアナログプロトタイプ(バターワース等)からIIRを設計するときは、ほぼ双一次変換が標準です。

実世界での応用

オーディオ機器のイコライザー:ミキサーやプラグインのEQ、トーンコントロール、クロスオーバーネットワークは、ほとんどがIIRフィルタで実装されます。設計者はまずアナログのバターワースやベル型シェルビングフィルタを s 平面で設計し、双一次変換でデジタル係数に落とします。オーディオはサンプリング周波数が 44.1 kHz や 48 kHz と固定なので、プリワープでカットオフ点を正確に合わせることが音作りの精度に直結します。

センサー信号のノイズ除去:加速度センサー、ひずみゲージ、温度センサーなどの計測データには高周波ノイズが乗ります。マイコンやDSP上で1次〜2次のIIRローパスを走らせて平滑化するのが定番で、本ツールの差分方程式 y[n] = b0·x[n] + b1·x[n−1] − a1·y[n−1] がそのまま組み込みコードになります。FIRフィルタより少ない係数・少ない演算で同等の遮断特性が得られるため、リソースの限られた組み込み機器で重宝します。

制御システムの離散化:PID制御器やリードラグ補償器をアナログで設計し、デジタルコントローラに実装する際にも双一次変換(タスティン変換)が使われます。連続時間の伝達関数をそのままサンプリング周期 T で離散化でき、安定性が保存されるため、アナログ設計の安定余裕がデジタル実装でも崩れません。サーボモーターやインバータのファームウェアで広く使われています。

通信・生体信号処理:無線受信機のチャネル選択フィルタ、心電図(ECG)の基線変動除去、脳波(EEG)の帯域分割など、リアルタイム性が求められる分野でもIIRフィルタが使われます。アナログプロトタイプフィルタ(楕円フィルタなど)を双一次変換で離散化することで、急峻な遮断特性を少ない次数で実現できます。

よくある誤解と注意点

まず最大の落とし穴が、「プリワープを忘れてカットオフがズレる」ことです。アナログのカットオフ ωc をそのまま K = ωc·T/2 に入れて係数を計算すると、できあがったデジタルフィルタの −3 dB 点は目標の fc より低くなります。低い周波数・高いサンプリング周波数ではズレが小さく見過ごされがちですが、カットオフがナイキスト周波数に近いほどズレは無視できません。本ツールの「周波数ワーピング率」は、プリワープ後 ωc と元の 2π·fc の比です。この値が 1 から離れるほど、プリワープしないと設計どおりにならない、という危険信号です。

次に、「双一次変換は振幅も位相も完全に保存する」と思い込むこと。双一次変換が保存するのは「振幅応答の形」と「安定性」であって、周波数軸そのものは非線形にワーピングされます。つまりアナログとデジタルで、ある周波数での利得は一致させられても、周波数軸の目盛りが伸び縮みしています。特に位相応答(群遅延)はアナログプロトタイプと同じにはなりません。線形位相が必要な用途では、IIRではなくFIRフィルタを検討すべきです。双一次変換はあくまで「振幅特性とエイリアシング回避」を優先する手法だと理解してください。

最後に、「係数を計算して終わり」ではないという点。本ツールは理想的な実数演算で b0・b1・a1 を求めますが、実際の組み込み実装では係数を有限ビットで量子化します。特に固定小数点DSPでは、係数の丸め誤差で極が単位円の外へわずかにはみ出し、安定なはずのフィルタが発振することがあります。高次フィルタを1つの伝達関数で実装せず、2次セクション(バイクワッド)の縦続接続に分解するのは、この量子化感度を下げるためです。双一次変換で得た係数は「設計値」であり、実装時には量子化と数値精度の検証が別途必要です。

使い方ガイド

  1. カットオフ周波数 fc を 100~5000 Hz の範囲で設定します。例:1 kHz のアナログ1次ローパスフィルタを設計する場合、fcNum に 1000 を入力
  2. サンプリング周波数 fs を設定します。一般的なオーディオ処理では 44.1 kHz または 48 kHz、計測系では 10~100 kHz を選択
  3. 評価周波数 fe を入力し、その周波数におけるデジタルフィルタの利得(dB)とワーピング率をリアルタイムで確認します
  4. プリワープ補正により、ωc(角周波数)が双一次変換による周波数ワーピングを補正した値として計算されます
  5. 出力された係数 b0、b1、a1 を制御システムまたは DSP コードに直接実装可能です

具体的な計算例

fc=1000 Hz、fs=48000 Hz、fe=2000 Hz の場合:プリワープ後 ωc≈6447 rad/s、係数 b0≈0.261、b1≈0.261、a1≈0.478 となります。2 kHz での利得は約 -3 dB で、周波数ワーピング率は約 4.3% です。一方 fc=500 Hz、fs=10000 Hz の設定では、アナログ設計時の 500 Hz カットオフがデジタル化後も正確に保たれ、計測制御用途の精密なローパスフィルタリングが実現できます

実務での注意点

  1. fs≧20×fc の関係を守ってください。fs が fc に近いとワーピング率が 10% を超過し、周波数特性の歪みが顕著になります
  2. オーディオ信号処理(ボーカル/楽器、帯域幅 20 Hz~20 kHz)では fs=44.1 kHz または 48 kHz、fc=8~12 kHz が標準です
  3. 産業用センサ(加速度計、圧力センサ)のノイズ除去では、fc をセンサ固有周波数の 1/3~1/5 に設定し、fs は 500 Hz~5 kHz の低めの値で十分な場合が多いです
  4. fe での利得が -20 dB 以下に落ちていることを確認し、除去対象帯域での減衰が適切であることを検証してから実装してください