デジタルフィルタの遮断周波数

[戻る]

結論

センサ信号など暴れる信号を一定周期で読み取って何かする際, 信号の暴れを抑えるためにローパスフィルタ (LPF) 処理を行うことがあります. 大抵は以下の IIR フィルタと呼ばれる, 入力変数を in とすると in の代わりに

out = r * in + (1-r) * out
という計算をさせた out を使うものを使います.

ここで r は非常に小さい数の定数です. フィルタの特性を決める大事なパラメータですが, (割り算の代わりにシフトを使うなど, 状況によって若干の制約はありますが) 大体は in と out を見ながら適当に決めるもんです.

しかしごくたまに, 値の物理的意味を知らなくてはいかないことがあります. 昔習ったはずですが、全然使わないと忘れてしまい、必要な際毎回あわてます. 毎回調べるのも何なので, そろそろ Tips として記しておきたいと考えます. 結論を先に書くとカットオフ周波数 f は, サンプリング周期を T として, 以下の式で求められます.

さて、上述の式で本 Tips は終わってもいいのですが, 今後何か微小な変更時に応用が利くよう, 若干過程を記しておくことにしました. 少し教科書みたいになってしまうことはご容赦ください.

回り道

そもそも最初の式

は何を表しているのでしょうか (面倒なので in → u, out → y, 今の変数を下付き文字 k, 前回の変数を k-1 で表しています). それを知るため, ちょろっと変形させてみましょう.
さらに少し書き換えて

としてみると, 左辺は明らかに速度になります. すなわち, この式は 「入力と出力の差に比例した速度で出力が入力に近づいていく系」を模擬した ものと言えるでしょう.

上記系を式で表すと次のような形になります (面倒なので r のハットは取ってしまいました).

実はこういった系は世の中ごまんとあります. 例えば

  1. タンクの水を抜くときの, 水流と抜けた水の関係
  2. 温度の違う物同士を接触した時の, 熱と熱の変化量の関係
  3. RC パッシブフィルタの電圧と電流の関係
などです. こういう系は「一次遅れ系」と呼ばれています.

一時遅れ系は u =一定 (ステップ応答) ならば, 微分方程式を解くことで挙動を知ることができます.




一方, 周波数応答を調べるためには, 入力 u に例えば AsinωT を入れ, 出力 y の形を Bsin(ωT+R) といった形にあてはめます. ω = 2 π f が大きくなれば大きくなるほど B は A に対して 小さくなっていきます. この B/A をゲインと呼びます. さらにこのゲインが 1/√2 になるときの f をカットオフ周波数と呼んでます.

計算方法ですが, ラプラス変換を使います. 最初の式

をラプラス変換すると,
となり, さらに出力/入力=Y/U の形に変形します.

これが俗に言う伝達関数というもので, なぜか s に jωを代入し (j は虚数単位), 絶対値を取るとゲインになります.


これが 1/√2 になったときのωカットオフ周波数ですから

をωについて解き, それを 2πで割ればいいはずです. 実際計算すると

となります.

例えば RC パッシブフィルタの場合, 抵抗に流れる電流 I は両端電圧 (u-y) を抵抗値 R で割ったものですから I=(u-y)/R と表されます. またコンデンサに蓄えられる電荷を Q とすると I=dQ/dt とも表されます. コンデンサの容量を C とすると両端電圧は y なので Q=Cy ⇒ I=C dy/dt となり, 結果 dy/dt=(u-y)/RC という関係が得られます. r=1/RC ですからカットオフ周波数は 1/2πRC と計算されます.

本論

一方デジタルの場合だと最初の式

を, ラプラスではなくて Z 変換します.

整理して伝達関数の形にします.


ラプラス変換の時は s に jωを代入しましたが, Z 変換の場合はなぜか exp(jωT) を代入します. 理由は知りません ;-p


これよりゲインは
となります. これが 1/√2 になればいいわけですから
が成り立ちます. がんばって計算してみますと…




となって, めでたく冒頭の式
を得ることができます.


2010.10