3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

線形時不変システムの双一次変換

Last updated at Posted at 2020-02-29

連続時間のシステムを離散時間に変換する際の近似手法に、双一次変換というものがあります。デジタルフィルタを作る時などに使われたりします。
よく使用される基本的な状態空間表現を使って、双一次変換による離散化の方法を紹介します。

※この記事では双一次変換の特別な場合についてお話ししています。詳細や一般的な変形を知りたい方は、こちらなどを参考にしてください。

変換方法

基本的な連続時間線形時不変システムを、双一次変換を使用して離散時間状態空間に変換します。

変形前がこちら。

\left\{ \begin{eqnarray}
\dot{x} & = & Ax + Bu \\
y & = & Cx
\end{eqnarray} \right.

$x$は状態変数、$y$は出力、$u$は入力です。また、$A$、$B$、$C$は時刻に依存しない係数行列です。

これを、次の形式に変換したいとします。

\left\{ \begin{eqnarray}
\hat{x}[k+1] & = & A_d \hat{x}[k] + B_d u[k] \\
y[k] & = & C_d \hat{x}[k] + D_d u[k]
\end{eqnarray} \right.

$\hat{x}[k]$は離散時刻$k$の状態変数です。係数行列の添え字$d$は離散時間のものであることを表します。

この時の、離散時間の間隔をTとした場合の変換方法はこちらです。

\begin{eqnarray}
A_d & = & \left( I + \frac{T}{2}A \right) \left( I - \frac{T}{2}A \right)^{-1} \\
B_d & = & T \left( I - \frac{T}{2}A \right)^{-1} B \\
C_d & = & C \left( I - \frac{T}{2}A \right)^{-1} \\
D_d & = & \frac{T}{2} C \left( I - \frac{T}{2}A \right)^{-1} B
\end{eqnarray} 

変換方法については以上です。

変換例

簡単な回路を使ってデジタルローパスフィルタを設計します。$V_{in}$が入力電圧、$V_{out}$が出力電圧です。抵抗$R$とコンデンサ$C$で構成された部分がローパスフィルタとなり、$V_{in}$の高周波成分(ノイズなど)が減衰され、$V_{out}$に出力されます。

lowpass_circuit.png

回路を流れる電荷を$q$とすると、回路方程式は次のようになります。

\left\{ \begin{eqnarray}
V_{in} & = & R\dot{q} + \frac{1}{C}q \\
V_{out} & = & \frac{1}{C}q
\end{eqnarray} \right.

状態変数を$q$、入力を$V_{in}$、出力を$V_{out}$としたシステムに変形すると、

\left\{ \begin{eqnarray}
\dot{q} & = & -\frac{1}{RC}q + \frac{1}{R}V_{in} \\
V_{out} & = & \frac{1}{C}q
\end{eqnarray} \right.

これは微分方程式で表現されているので、連続時間の状態方程式になります。シミュレーションは離散時間で行うので、双一次変換を使って離散時間状態方程式に変形します。

先にまとめた変換表を参考にシステムの係数を計算すると、次のようになります。離散時間の間隔は$T$とします。

\left\{ \begin{eqnarray}
\hat{q}[k+1] & = & \frac{2RC-T}{2RC+T}\hat{q}[k] + \frac{2CT}{2RC+T}V_{in}[k] \\
V_{out}[k] & = & \frac{2R}{2RC+T}\hat{q}[k] + \frac{T}{2RC+T}V_{in}[k]
\end{eqnarray} \right.

これで離散化は完了です。あとは$V_{in}$に適当な信号データを入力し、$V_{out}$を取得すればデジタルローパスフィルタの完成です。

(おまけ)シミュレーション

上で求めたデジタルローパスフィルタを使ってノイズ除去をやってみました。入力は$$V_{in}=\sin(2\pi t) + 0.3\varepsilon$$ としています。$\varepsilon$は平均0、標準偏差1のガウスノイズです。ノイズが除去されているのがわかりますね。

lowpass_graph.png

以上です。ありがとうございました。

3
4
0

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
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?