LoginSignup
142
126

More than 3 years have passed since last update.

最も簡単な「一次のローパスフィルタ」を作る方法

Last updated at Posted at 2019-09-28

はじめに

先日、このようなツイートが流れてきました。


無類の制御工学愛好家である私は、即座にRTとファボを押しました。
その後もRT、ファボは伸びていったのを見て、「以外と皆知らないんだなぁ…」と思ったりしました。と同時に、内容に少しだけ(ほんの少しだけ)難しいところがあるなと思いました。

なのでここでは、最も簡単な作成方法について紹介させて頂きます。

「難しいところ」はどこか、どう簡単にするか

「離散化の手法として、双一次変換を利用している」という点です。
双一次変換の利用は、全く間違ったことではないのですが個人的にはLPF(ローパスフィルタ)であれば双一次変換でなくてもよいと考えます。なおHPF(ハイパスフィルタ)の場合も同様です。

じゃあ何を使うべきかというと、後退差分です。具体的な内容は次節。

双一次変換はどこに使うべきかというと、BPF(バンドパスフィルタ)やBSF(バンドストップフィルタ)等、「周波数の管理をシビアにすべきフィルタ」に使うべきです。というか、このへんのフィルタは双一次変換を使わないとダメです。後退差分では設計通りの性能を得ることは難しいです。

後退差分による離散化

連続時間系の伝達関数におけるsは、後退差分による離散化では下記のように変換されます。ここでTは離散時間系のサンプリング周期です。

s=\frac{1-z^{-1}}{T}

LPFの伝達関数はこうでした。τはLPFの時定数です。

Y(s)=\frac{1}{1+\tau s}R(s)

余談ですが、LPFのカットオフ周波数Fと時定数τの関係は下記です。

\tau = \frac{1}{2\pi F}

本論に戻って、伝達関数を離散化することで下記式が得られます。

(T+\tau (1-z^{-1}))y[n] = Tr[n]\\
y[n] = \frac{\tau}{T+\tau}y[n-1] + \frac{T}{T+\tau}r[n] 

すなわち、LPF出力の前回値と入力信号の今回値を合成することで、LPF出力の今回値が得られます。しかも合成の比は、τ(またはT)をτとTの和で除することで得られます。めっちゃ簡単じゃないですか?
また上式の別の解釈として、こうも書けます。

y[n] = ay[n-1]+(1-a)r[n]\\
where \quad a=\frac{\tau}{T+\tau}

aを使う場合とそうでない場合、好きなほうで式を覚えて頂ければと思います。

142
126
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
142
126