うさぎでもわかる信号処理・制御数学 第03羽 z変換とディジタルシステム 前編

スポンサードリンク

こんにちは、ももやまです。

信号処理(制御数学)の第01羽、第02羽では、z変換の基礎や、漸化式(差分方程式)の解き方について学んでいいきましたね。

今回は、学んだz変換の知識を応用してディジタルシステム[1]余談ですが、何故デジタルじゃなくてディジタルって書かれてる本やサイトが多いんでしょうかね…を2回にわたって解読してみましょう!!

z変換の計算に慣れていない人は、下の記事で練習してからこちらの記事を読むことをおすすめします!

スポンサードリンク

1. ディジタルシステムとは

ディジタルシステムを簡単に説明すると、信号 \( x_n \) を決められた仕組みに従って \( y_n \) に変換する魔法の箱です。関数が進化したものだと思って頂いてOKです。

ディジタルシステムは魔法の箱!!

ただし、ディジタルシステム(魔法の箱)の中身は漸化式(差分方程式)で書かれています。そのため、解読するのが少し大変です。

1つ漸化式で表されたディジタルシステムの例を挙げてみましょう。例えばこんな式だとどうでしょう。\[
y_n = 0.7 y_{n-1} - 0.1 y_{n-2} + 3 x_{n}
\]

この式では、出力 \( y_n \) が、1つ前の出力 \( y_{n-1} \)、2つ前の出力 \( y_{n-2} \)、および現在の入力 \( x_n \) の3つで表されていますね[2]ちなみに数2Bで習う漸化式は、\[a_{n+1} = 2 a_{n} + … Continue reading

これだと、\( y_{n} \) がどんな法則で決まるかは少し想像しづらいですよね。

そこで、ディジタルシステムを単純にする魔法を次の章で紹介しましょう!

スポンサードリンク

2. ディジタルシステムを解読する魔法・z変換

第01羽・第02羽では、z変換の基礎について学びましたね。

ですが念の為、z変換について復習をしておきましょう。

(1) z変換の法則の復習

ここで、第02羽で習った線形の法則(定数倍・足し算の法則)、シフトの法則について復習しましょう。

線形の法則

z変換、逆z変換の計算の際、積分計算と同じように定数倍、および足し算引き算を分離することができる。

\[\begin{align*}
\mathcal{Z} \left[ \textcolor{magenta}{a} x_n + \textcolor{deepskyblue}{b} y_n \right] & = \textcolor{magenta}{a} \mathcal{Z} \left[ x_n \right] + \textcolor{ deepskyblue }{b} \mathcal{Z} \left[ y_n \right]
\end{align*}\]

\[\begin{align*}
\mathcal{Z}^{-1} \left[ \textcolor{magenta}{a} X(z) + \textcolor{deepskyblue}{b} Y(z) \right] & = \textcolor{magenta}{a} \mathcal{Z}^{-1} \left[ X(z) \right] + \textcolor{ deepskyblue }{b} \mathcal{Z}^{-1} \left[ Y(z) \right]
\end{align*}\]

※ 数列 \( x_n \) を \( z \) 変換したものを \( X(z) \)、\( y_n \) を \( z \) 変換したものを \( y_n \) とする。つまり、\[
\mathcal{Z} \left[ x_{n} \right] = X(z), \ \ \ \mathcal{Z} \left[ y_{n} \right] = Y(z)
\]である。

シフト法則

\[\begin{align*}
\mathcal{Z} \left[ x_{n-1} \right] & = z^{-1} X(z) + x_{-1}
\\ \mathcal{Z} \left[ x_{n-2} \right] & = z^{-2} X(z) + z^{-1} x_{-1} + x_{-2}
\\ \mathcal{Z} \left[ x_{n-3} \right] & = z^{-3} X(z) + z^{-2} x_{-1} + z^{-1} x_{-2} + x_{-3}
\\ \mathcal{Z} \left[ x_{n-k} \right] & = z^{-k} X(z) + z^{-(k-1)} x_{-1} + \cdots + x_{-k}
\end{align*}\]

※ 数列 \( x_n \) を \( z \) 変換したものを \( X(z) \) とする。つまり、\[
\mathcal{Z} \left[ x_{n} \right] = X(z)
\]である。

(2) ディジタルシステムで出てくる数列の初期値は…?

漸化式(差分方程式)では必ず初期値が与えられていましたね。例えば\[
a_{n} = 2 a_{n-1} + 3 , \ \ \ a_0 = 2
\]であれば、初期値は \( a_0 = 2 \) となります。しかし、今回のディジタルシステムでは初期値が何も書かれていません。

実は、ディジタルシステムを解読する際[3]正確には、伝達関数やインパルス応答を求めるときのことです。には、全ての初期値 \( x_k \) を0として考えてOKなのです[4] … Continue reading

なので、解読時にはディジタルシステムで出てくる数列の初期値は \( x_{-1} = x_{-2} = \cdots = 0 \), \( y_{-1} = y_{-2} = \cdots = 0 \) として考えます。

よって、z変換のシフト法則は下のように簡略化して表記することができます。

ディジタルシステムにおけるシフト法則

ディジタルシステムでは出てくる数列 \( x_k \), \( y_k \) の初期値を0として考える。

そのため、z変換のシフト法則は以下のように簡略化できる。

\[\begin{align*}
\mathcal{Z} \left[ x_{n} \right] & = X(z)
\\ \mathcal{Z} \left[ x_{n-\textcolor{red}{1}} \right] & = z^{- \textcolor{red}{1} } X(z)
\\ \mathcal{Z} \left[ x_{n- \textcolor{red}{2} } \right] & = z^{- \textcolor{red}{2} } X(z)
\\ \mathcal{Z} \left[ x_{n- \textcolor{red}{3} } \right] & = z^{- \textcolor{red}{3} } X(z)
\\ & \vdots
\\ \mathcal{Z} \left[ x_{n- \textcolor{red}{k} } \right] & = z^{- \textcolor{red}{k} } X(z)
\end{align*}\]

スポンサードリンク

3. z変換を使って伝達関数を求めてみよう

さてz変換の復習が終わったところで、実際に先ほどのディジタルシステムの中身をz変換にかけてみましょう。

例題1

次の漸化式で表されるディジタルシステムがある。\[
y_n = 0.7 y_{n-1} - 0.1 y_{n-2} + 3 x_{n}
\]

このシステムの伝達関数 \( H(z) \) を求めなさい。

まず線形の法則を使い、それぞれの項ごとに分離をしましょう。\[\begin{align*}
\mathcal{Z} \left[ y_{n} \right] & = \mathcal{Z} \left[ 0.7 y_{n-1} - 0.1 y_{n-2} + 3 x_{n} \right]
\\ \mathcal{Z} \left[ y_{n} \right] & = 0.7 \ \mathcal{Z} \left[ y_{n-1} \right] - 0.1 \ \mathcal{Z} \left[ y_{n-2} \right] + 3 \ \mathcal{Z} \left[ x_{n} \right]
\end{align*}\]

ここで、\( x_n \) をz変換した結果を \( X(z) \)、\( y_n \) をz変換した結果を \( Y(z) \) とすると、シフト法則より、以下の式が成り立ちますね。\[\begin{align*}
\mathcal{Z} \left[ y_{n-1} \right] & = z^{-1} Y(z) \\
\mathcal{Z} \left[ y_{n-2} \right] & = z^{-2} Y(z)
\end{align*}\]

よって、\[\begin{align*}
Y(z) & = \mathcal{Z} \left[ y_{n} \right]
\\ & = 0.7 \ \mathcal{Z} \left[ y_{n-1} \right] - 0.1 \ \mathcal{Z} \left[ y_{n-2} \right] + 3 \ \mathcal{Z} \left[ x_{n} \right]
\\ & = 0.7 z^{-1} Y(z) - 0.1 z^{-2} Y(z) + 3 X(z)
\end{align*}\]となりますね。

ここで式の整理をすると、\[\begin{align*}
Y(z) - 0.7 z^{-1} Y(z) + 0.1 z^{-2} Y(z) & = 3 X(z) \\
\left( 1 - 0.7 z^{-1} + 0.1 z^{-2} \right) Y(z) & = 3 X(z) \end{align*}\]となります。

さらに、\( Y(z) = \) の形になるように整理すると\[
Y(z) = \textcolor{green}{ \frac{3}{1 - 0.7z^{-1} + 0.1 z^{-2}} } X(z)
\]と変形することができますね。

するとどうでしょう。

今までは漸化式という難しい表記をしていたディジタルシステムが、z変換を行うことで入力 \( X(z) \) と出力 \( Y(z) \) の関係を四則演算だけで表現することができました!!

式を見ると、元の入力をz変換したもの \( X(z) \) と \( z \) の関数 \( H(z) \) を掛けたものが、出力をz変換したもの \( Y(z) \) になっていますね。

この掛けられている \( H(z) \) のことを伝達関数と呼び、ディジタルシステムの仕組み(魔法の箱)がどうなっているのかを把握するための大きな手がかりとなります。

伝達関数

元の入力をz変換したもの \( X(z) \) と出力をz変換したもの \( Y(z) \) の関係を表すz変換上の関数のことを伝達関数と呼び、\[
Y(z) = H(z) X(z) , \ \ \ H(z) = \frac{Y(z)}{X(z)}
\]の形で表される。 

4. インパルス応答を求めてみよう

伝達関数は、ディジタルシステムの仕組み(魔法の箱の中身)がどうなっているのかを把握するための大きな手がかりとなるのでしたね。ですが、z変換の世界で仕組みが表されていてもちょっとよくわかりませんよね。

例えばですが、「この品物の価値は1,000,000イランリアルだ!」って言われてもよくわかりませんよね。できれば「この品物の価値は2,650円だ!」のように自分に馴染みのある単位、表記で知りたいですよね。

そこで、ディジタルシステムの仕組み(魔法の箱の中身)をz変換を使わずに表す方法について考えてみましょう。

(1) (単位)インパルス信号とは

インパルス信号とは、ごく一瞬だけ値を持ち、それ以外のときは0となる信号のことです。

さらに、ごく一瞬の値が1の信号のことを単位インパルス信号と呼びます。

単位インパルス関数

ディジタルシステムの世界では、単位インパルス信号を入力としたときの出力の値でディジタルシステムがどのような振る舞いをするのかを表します。

このとき(単位インパルス信号を入力としたとき)の出力値のことをインパルス応答と呼び、\( \delta_n \) と表記します。

インパルス応答は試験で頻出するので、必ず計算方法まで理解をしましょう!

(2) なぜ、単位インパルス信号を使うの?

単位インパルス応答を入力したときの出力値を指標にする大きな理由は、z変換したときの値のわかりやすさです。

なんと、z変換後の値が1となるのです。

数式で書くと \( \mathcal{Z} \left[ \delta_n \right] = 1 \) ですね。

「z変換後の値が1になる」という特性がどれだけ便利なのかを、実際に先程計算したディジタルシステム\[
y_n = 0.7 y_{n-1} - 0.1 y_{n-2} + 3 x_{n}
\]の例で体感してもらいましょう。

このシステムの両辺をz変換すると、\[
Y(z) = \frac{3}{1 - 0.7z^{-1} + 0.1 z^{-2}} X(z)
\]となるのでしたね。

ここで、入力 \( x_n \) をインパルス応答 \( \delta_n \) とします。

すると、\( \mathcal{Z} \left[ \delta_n \right] = 1 \) より、\( x_n \) をz変換した結果は1となりますね。

よって、\( X(z) = 1 \) となりますね。これを先程の式に代入すると、\[
Y(z) = \frac{3}{1 - 0.7z^{-1} + 0.1 z^{-2}}
\]となり、\( Y(z) = H(z) \) の形になりましたね。

あとは、この両辺を逆z変換することで、出力値 \( y_n \) の値(インパルス応答)を求めることができますね!

(3) インパルス応答を計算してみよう

ここからは、実際にインパルス応答を計算していきましょう!

例題2

次の漸化式で表されるディジタルシステムがある。\[
y_n = 0.7 y_{n-1} - 0.1 y_{n-2} + 3 x_{n}
\](例題1と同じ)

このシステムのインパルス応答 \( h_n \) を求めなさい。

インパルス応答を計算するためには、\( Y(z) \) を逆z変換すればOKでしたね。\[
Y(z) = \frac{3}{1 - 0.7z^{-1} + 0.1 z^{-2}}
\]

(i) 逆z変換で使う公式

ここで、ディジタルシステムの逆z変換でよく使う公式は、下の2種類です。

必ず頭に入れておきましょう。

逆z変換でよく使う公式

★線形の法則★\[
\mathcal{Z}^{-1} \left[ \textcolor{magenta}{a} X(z) + \textcolor{deepskyblue}{b} Y(z) \right] = \textcolor{magenta}{a} \ \mathcal{Z}^{-1} \left[ X(z) \right] + \textcolor{deepskyblue}{b} \ \mathcal{Z}^{-1} \left[ Y(z) \right]
\]

★重要な2つの変形公式★\[\begin{align*}
\mathcal{Z}^{-1} \left[ \frac{1}{1 - \textcolor{red}{a} z^{-1} } \right] & = \textcolor{red}{a}^n \\
\mathcal{Z}^{-1} \left[ \frac{\textcolor{red}{a} z^{-1}}{(1 - \textcolor{red}{a} z^{-1})^2 } \right] & = n \textcolor{red}{a}^n
\end{align*}\]

(ii) 逆z変換と部分分数分解

次に、逆z変換の変形公式に当てはまるように部分分数分解を行います。

ここで、\[
1 - 0.7 z^{-1} + 0.1z^{-2} = (1 - 0.5 z^{-1})(1 - 0.2 z^{-1})
\]と因数分解できるので、今回の場合\[\begin{align*}
\frac{3}{1 - 0.7z^{-1} + 0.1 z^{-2}} & = \frac{3}{(1 - 0.5 z^{-1})(1 - 0.2 z^{-1})}
\\ & = \frac{a}{1 - 0.5 z^{-1}} + \frac{b}{1 - 0.2 z^{-1}}
\end{align*}\]の \( a \), \( b \) を求めればOKです。

\( a \), \( b \) を求める際、信号処理の教科書では「ヘビサイドの展開公式」を使うことも多いのですが、今回はもっと簡単な方法で求めてみましょう。

まず、両辺を \( (1 - 0.5 z^{-1})(1 - 0.2 z^{-1}) \) 倍します。すると、\[
3 = a ( 1 - 0.2 z^{-1} ) + b (1 - 0.5 z^{-1} )
\]となりますね。

次に、\( a \), \( b \) のうちの片方を消すように \( z \) に具体的な値を求めます。

(i) \( z = 0.2 \) を代入(つまり \( z^{-1} = \frac{1}{0.2} \))

\( z = 0.2 \) を代入すると、\[\begin{align*}
3 & = a \left( 1 - \frac{0.2}{0.2} \right) + b \left( 1 - \frac{0.5}{0.2} \right)
\\ & = b \left( 1 - \frac{5}{2} \right)
\\ & = - \frac{3}{2} b
\end{align*}\]となります。

よって、\( - \frac{3}{2} b = 3 \)、つまり\( b = -2 \) と求められます。

(ii) \( z = 0.5 \) を代入(つまり \( z^{-1} = \frac{1}{0.5} \))

\( z = 0.5 \) を代入すると、\[\begin{align*}
3 & = a \left( 1 - \frac{0.2}{0.5} \right) + b \left( 1 - \frac{0.5}{0.5} \right)
\\ & = a \left( 1 - \frac{2}{5} \right)
\\ & = \frac{3}{5} a
\end{align*}\]となります。

よって、\( \frac{3}{5} a = 3 \) より、\( a = 5 \) と求められます。

(i), (ii)より、\( Y(z) \) を下のように部分分数分解することができます。\[\begin{align*}
\frac{3}{1 - 0.7z^{-1} + 0.1 z^{-2}} & = \frac{5}{1 - 0.5 z^{-1}} + \frac{-2}{1 - 0.2 z^{-1}}
\\ & = \frac{5}{1 - 0.5 z^{-1}} - \frac{2}{1 - 0.2 z^{-1}}
\end{align*}\]

(iii) あとは公式に当てはめて逆z変換!

ここまでくればあとは公式に当てはめるだけでOKです!

求めるインパルス応答を \( h_n \) としましょうか。\[\begin{align*}
h_n & = \mathcal{Z}^{-1} \left[ Y(z) \right]
\\ & = \mathcal{Z}^{-1} \left[ \frac{5}{1 - 0.5 z^{-1}} - \frac{2}{1 - 0.2 z^{-1}} \right]
\\ & = 5 \mathcal{Z}^{-1} \left[ \frac{1}{1 - \textcolor{red}{0.5} z^{-1}} \right] - 2 \mathcal{Z}^{-1} \left[ \frac{2}{1 - \textcolor{red}{0.2} z^{-1}} \right]
\\ & = 5 \cdot \textcolor{red}{0.5}^n - 2 \cdot \textcolor{red}{0.2}^n
\end{align*}\]

となり、インパルス応答は\[
h_n = 5 \cdot 0.5^n - 2 \cdot 0.2^n
\]となります。(※ただし \( n \geqq 0 \) )

※ 単位ユニット関数[5]\[
u_n = \left\{ \begin{array}{ll} 1 & ( n \geqq 0 ) \\ 0 & (n < 0) \end{array} \right.
\]となる関数のこと
を用いてインパルス応答を\[
h_n = \left( 5 \cdot 0.5^n - 2 \cdot 0.2^n \right) u_n
\]と書くこともできます。

(単位ユニット関数 \( u_n \) による表記の場合、「ただし \( n \geqq 0 \)」の表記は不要です。)

インパルス応答

単位インパルス信号 \( \delta_n \) を入力としたときの出力のことをインパルス応答と呼び、\( H(z) \) の逆z変換で求めることができる

5. インパルス応答から入力信号に対する出力信号を求めてみよう

インパルス応答 \( h_n \) を求めることで、様々な入力 \( x_n \) に対する出力 \( y_n \) を求めることができます。

そこで、実際にインパルス応答を使って出力 \( y_n \) を計算してみましょう。

(1) 数列・信号のたたみ込み演算

長さが \( n \) の有限な信号[6]正確にいうと、長さの範囲内では値を持ち、範囲外では値を持たない信号のこと。・数列のたたみ込み演算 \( x_n * y_n \) とは、下の図のように一方の数列 \( x_k \) を0番目から順に、もう1方の数列 \( y_k \) をn番目から逆順にしたものを掛けていったものの総和を表します。コンボリューションとも言いますね。

式で表すと、\[
x_0 y_n + x_1 y_{n-1} + x_2 y_{n-2} + \cdots + x_{n-1} y_{1} + x_{n} y_{0}
\]となります。[7]長さが無限のものに対しては\[ \cdots + x_0 y_n + x_1 y_{n-1} + x_2 y_{n-2} + \cdots + x_{n-1} y_{1} + x_{n} y_{0} + \cdots \] となる。

シグマ記号を使って\[
x_n * y_n = \sum^{n}_{k = 0} x_k y_{n-k}
\]と表すこともできます[8]長さが無限なときは\[ \sum^{\infty}_{k = - \infty} x_k y_{n-k} \]となる。

(2) たたみ込みと入出力信号の関係

(i) z変換とたたみ込み

2つの数列 \( x_n \), \( y_n \) の畳み込み \( x_n * y_n \) をz変換した結果は、数列をそれぞれz変換した結果 \( X(z) \), \( Y(z) \) の積になります。数式で書くと、\[
\mathcal{Z} \left[ x_n * y_n \right] = X(z) Y(z)
\]となります。

(ちなみに計算順序を入れ替えて \( Y(z) X(z) \) としてもOKです)

(ii) たたみ込みと伝達関数

ディジタルシステムは、z変換をすることで\[
Y(z) = H(z) X(z)
\]と、伝達関数 \( H(z) \) を用いて表すことができましたね。

この \( H(z) X(z) \) というのがまさにたたみこみの形ですね。つまり、\[
\mathcal{Z}^{-1} \left[ H(z) X(z) \right] = h_n * x_n = x_n * h_n
\]が成立します。

そのため、\( y_n = h_n * x_n = x_n * h_n \) の関係式も成立します。

(iii) インパルス応答とたたみ込み

インパルス応答 \( h_n \) さえわかれば、入力信号 \( x_n \) とのたたみ込み演算をすることにより、出力信号 \( y_n \) を求めることができます。

しかし、この計算が出来るのはインパルス応答 \( h_n \) が有限の区間内でのみ値をもつ場合です。

(なお、インパルス応答が有限な区間内(0〜n)のみで終わるようにしたフィルタをFIRフィルタ(finite impulse response)と呼ばれます。一方、インパルス応答が無限の範囲で続くフィルタはIIRフィルタ(infinite impulse response)と呼ばれます。)

(3) たたみこみを使って出力を求めてみよう!

では、たたみ込みを使って実際にある入力 \( x_n \) に対する出力 \( y_n \) を求めてみましょう。

例題3

次の漸化式で表されるディジタルシステムがある。\[
y_n = 0.7 y_{n-1} - 0.1 y_{n-2} + 3 x_{n}
\]

このシステムに \( x_0 = 5 \), \( x_1 = -1 \) の入力、つまり\[
x_n = 5 \delta_n - \delta_{n-1}
\]を与える。このときの出力 \( y_n \) を単位インパルス信号を用いて表しなさい。

例題2で、インパルス応答 \( h_n \) が\[
h_n = 5 \cdot 0.5^n - 2 \cdot 0.2^n
\]と求められてるので、これをつかいます。

たたみ込みの性質 \( y_n = h_n * x_n \) を使うと

\[\begin{align*}
y_n & = h_n * x_n
\\ & = \sum^{n}_{k = 0} h_k \cdot x_{n-k}
\\ & = h_0 \cdot x_n + h_{1} \cdot x_{n-1} + \cdots + h_{n-1} \cdot x_1 + h_n \cdot x_0
\\ & = h_{n} \cdot x_0 + h_{n-1} \cdot x_1
\\ & = 5 ( 5 \cdot 0.5^n - 2 \cdot 0.2^n) - ( 5 \cdot 0.5^{n-1} - 2 \cdot 0.2^{n-1} )
\\ & = 25 \cdot 0.5^n - 10 \cdot 0.2^n - ( 10 \cdot 0.5^n - 10 \cdot 0.2^n )
\\ & = 15 \cdot 0.5^n
\end{align*}\]となるため、出力は\[
y_n = 15 \cdot 0.5^n
\]となります。(ただし \( n \geqq 0 \) )

入出力の関係とインパルス応答

入力信号 \( x_n \)、出力信号 \( y_n \)、インパルス応答 \( h_n \) は以下の関係が成立する。\[
y_n = h_n * x_n = x_n * h_n
\]※ \( * \) はたたみ込み積(コンボリューション)を表す。

6. 伝達関数の極と零点

伝達関数 \( H(z) \) は、\[
H(z) = \frac{\textcolor{blue}{N (z)}}{\textcolor{red}{D (z)}}
\]のように、分子分母の形で表されることがほとんどです[9]\( N (z) \), \( D (z) \) にした理由は、分子・分母をそれぞれ英語で "numerator", "denominator" というからです。

この分子部分が0になるときを零点、分母部分が0になるときをと呼びます。

伝達関数の極と零点

伝達関数 \( H(z) \) において、

  • 分子部分 \( N (z) \) が0になる \( z \) → 零点
  • 分母部分 \( D (z) \) が0になる \( z \) → 極

と呼ばれる。

※ \( z = 0 \) を見逃さないために、分子分母に \( z^k \) 倍するなどして、\( z^{-1} \) のようなマイナスn乗を消してから計算すること!

零点は、名前の通り \( H(z) = 0 \) となるz、極は分母部分が0になってしまうために定義されないzを表しているんだな程度の理解でOKです。

実際に例題で、零点と極を求めてみましょう。

例題4

次の伝達関数\[
H(z) = \frac{3}{(1 - 0.7z^{-1} + 0.1z^{-2})}
\]の極と零点があれば求めなさい。複数あればすべて求めること。

そのままの形で考えてもいいですが、\( z = 0 \) のときを見逃さないために分子分母をともに \( z^2 \) 倍して\[
\frac{3}{(1 - 0.7z^{-1} + 0.1z^{-2})} = \frac{3z^2}{10z^2 - 7z + 1}
\]にしてから考えましょう[10]\( z = 0 \) のとき、\( z^{-1} = \frac{1}{0} \) でおかしなことになる。

[極]

分母が0となる点。つまり\[\begin{align*}
(10z^2 - 7z + 1) & = (5z - 1)(2z - 1)
\\ & = 0
\end{align*}\]を満たす点。

よって、\( z = 0.2 , 0.5 \) が極。

[零点]

分子が0となる点。つまり \( 3z^2 = 0 \) を満たす点。

よって、\( z = 0 \) が零点。

伝達関数の極の求めかたのコツ

伝達関数 \( H(z) \) が\[
H(z) = \frac{H_N (z)}{(1 - r_1 z^{-1})(1 - r_2 z^{-1})(1 - r_3 z^{-1}) \cdots}
\]の形で表されている場合、\( z = r_1, r_2, r_3 , \cdots \) が極となる。

※ この形にできればわざわざ (分母) = 0 を解く必要はなし!

7. システムの安定性

(1) システムが安定しているとは

安定という言葉は日常生活でもよくつかいますね。

  • やっぱ「安定」のマックだよな。
  • 最近メンタルが「安定」してるな〜
  • 患者の容体は「安定」している。

信号処理・制御数学の世界でも「安定」という言葉はよくつかいます。

では、「システムが安定している」とはどういう状態なのでしょうか…?

答えは、簡単です。

インパルス応答のnを十分大きくしても出力値が0に収束することを「システムが安定している」と呼びます。

(2) 伝達関数からシステムの安定性を判定してみよう

インパルス関数を入力したときの出力値を \( n \to \infty \) に飛ばせば、システムが安定しているかどうかを判定することはできます。

しかし、わざわざ逆z変換をしてシステムの安定性を調べるのは少しめんどくさいです。

そこで、伝達関数 \( H(z) \) の形からシステムの安定性を調べる方法を考えてみましょう。

(i) \( h_n \) が収束する条件を考えてみよう

(試験に出てくる)インパルス応答は\[
h_n = c_1 \alpha^n + c_2 \beta^n + \cdots
\]のように、(定数倍)×(指数関数のn乗)の和の形で表されることがほとんどです。

このインパルス応答 \( h_n \) が0に収束する条件、つまり\[
\lim_{n \to \infty} h_n = 0
\]が成立する条件はどんなときかを考えてみましょう。

まず、指数関数 \( r^n \) を \( n \to \infty \) にしたときに0に収束する状態、つまり\[
\lim_{n \to \infty} r^n = 0
\]を成立させるためには、\( |r| < 1 \) であることが条件でしたね。

次に、インパルス応答で出てくるすべての項が0に収束する必要がありますね。

例えば\[
h_n = \underbrace{3 \cdot (0.3)^n}_{0 \mathrm{に収束} } - \underbrace{7 \cdot (0.9)^n}_{0 \mathrm{に収束} }
\]であれば \( h_n \) に収束します。一方\[
h_n = \underbrace{3 \cdot (0.3)^n}_{0 \mathrm{に収束} } - \underbrace{7 \cdot (0.9)^n}_{0 \mathrm{に収束} } + \underbrace{0.2 \cdot (1.2)^n}_{\mathrm{無限大に発散}}
\]であれば1つ収束しない項 \( 0.2 \cdot (1.2)^n \) があるため、\( h_n \) も収束しません。

この2つをまとめると、\( h_n \) を収束させるためのポイントは以下の2つになりますね。

  • \( h_n \) に出てくるすべての項が収束する
  • 各項に出てくる指数関数 \( r^n \) は、\( |r| < 1 \) のときに収束する

(2) z変換の世界上で収束する条件を書き換えてみよう

z変換で出てくる伝達関数 \( H(z) \) が\[
H(z) = \frac{ H_N(z) }{(1 - r_1 z^{-1}) (1 - r_2 z^{-1})(1 - r_3 z^{-1}) \cdots }
\]の形で表せるとします。

\( H(z) \) に部分分数分解を行うと、\[\begin{align*}
H(z) & = \frac{ H_N(z) }{(1 - r_1 z^{-1}) (1 - r_2 z^{-1})(1 - r_3 z^{-1}) \cdots }
\\ & = \frac{c_1}{1- r_1 z^{-1}} + \frac{c_2}{1- r_2 z^{-1}} + \frac{c_3}{1- r_3 z^{-1}} + \cdots
\end{align*}\]と変形できます[11]方程式 (伝達関数の分母) = 0 が重解をもたないとき。重解を保つ場合は後ほど補足で説明します。

この \( H(z) \) を逆z変換し、インパルス応答 \( h_n \) を求めると\[
h_n = c_1 r_1^n + c_2 r_2^n + c_3 r_3^n + \cdots
\]の形になりますね。

ここで、\( c_1 \), \( c_2 \), \( c_3 \), … の定数項はたかが定数のちっぽけな値なので、\( n \to \infty \) をする際には無視して考えることができます。

そのため、指数関数部分の \( r_1^n \), \( r_2^n \), \( r_3^n \), … がすべて0に収束すれば、言い換えると \( |r_1| < 1 \), \( |r_2| < 1 \), \( |r_3| < 1 \), … をすべて満たせば \( h_n \) は0に収束します。

信号処理の用語で説明すると、極となる \( z \) がすべて \( |z| < 1 \) にあればシステムが安定であるといえますね。

これは、伝達関数 \( H(z) \) の分母を因数分解するだけで、システムの安定性を判定することができることを意味しています!

システムの安定性

インパルス応答 \( h_n \) が0に収束するとき、つまり\[
\lim_{n \to \infty} h_n = 0
\]が成立するとき、システムが安定であると言える。

また、システムの安定性は \( h_n \) を求めなくても判定ができる。

具体的には伝達関数 \( H(z) \) のすべての極が \( |z| < 1 \) であればシステムが安定であると言える。

★余談:伝達関数の極が重解をもつとき★

上の説明のときは「伝達関数 \( H(z) \) の (分母) = 0 が重解を持つとき」、つまり伝達関数の極が重解になるときを考慮していませんでした。

補足として、2重解を持つときも説明しましょう。2重解を持つということは、部分分数分解が\[
\frac{H_N(z)}{(1 - r_1 z^{-1})^n \cdots} = \frac{c_1}{1 - r_1 z^{-1}} + \frac{ c_2 z^{-1} }{ ( 1 - r_1 z^{-1} )^2 } + \cdots
\]のような形になりますね。

ここで、2番目の項\[
\frac{ c_2 z^{-1} }{ ( 1 - r_1 z^{-1} )^2 }
\]を逆z変換公式\[
\mathcal{Z}^{-1} \left[ \frac{\textcolor{red}{a} z^{-1}}{(1 - \textcolor{red}{a} z^{-1})^2 } \right] = n \textcolor{red}{a}^n
\]に当てはめると、\[\begin{align*}
\mathcal{Z}^{-1} \left[ \frac{ c_2 z^{-1} }{ ( 1 - r_1 z^{-1} )^2 } \right]
& = \frac{c_2}{r_1}\mathcal{Z}^{-1} \left[ \frac{ r_1 z^{-1} }{ ( 1 - r_1 z^{-1} )^2 } \right]
\\ & = \frac{c_2}{r_1} n r_1^n
\end{align*}\]となります。

ここで、\( \frac{c_2}{r_1} \) は定数なので無視できますね。さらに \( n r_1^n \) は、\( |r_1| < 1 \) のとき\[\begin{align*}
\lim_{n \to \infty} n r_1^n & = \lim_{n \to \infty} \frac{n}{r_1^{-n}}
\\ & = \lim_{n \to \infty} \frac{1}{- r_1^{-n} \log r_1}
\\ & = \lim_{n \to \infty} - \frac{1}{\log r_1} r_1^n
\\ & = 0
\end{align*} \]とロピタルの定理を使って変形できます。

よって、\[
\frac{H_N(z)}{(1 - r_1 z^{-1})^n \cdots} = \frac{c_1}{1 - r_1 z^{-1}} + \frac{ c_2 z^{-1} }{ ( 1 - r_1 z^{-1} )^2 } + \cdots
\]も0に収束し、2重解のときも重解がないときと同じように「すべての極が \( |z| < 1 \) であればシステムが安定である」ことがいえますね。

※ 3重解以上のときも同じ要領で確かめることができます

(3) 例題で確認!

例題5

次の伝達関数\[
H(z) = \frac{3}{(1 - 0.7z^{-1} + 0.1z^{-2})}
\]で表されるシステムの安定性を調べなさい。

伝達関数 \( H(z) \) を変形すると\[
H(z) = \frac{3}{(1 - 0.5 z^{-1})(1 - 0.2 z^{-1}) }
\]となる。よって、極は \( z = 0.2 , 0.5 \) となる。

すべての極が \( |z| < 1 \) にあるため、システムは安定である。

8. 練習問題

では、今回習った内容が定着できているかを練習問題で確認しましょう!

練習問題

次の漸化式\[
y_n = \frac{9}{4} y_{n-1} - \frac{9}{8} y_{n-2} + x_n + \frac{3}{2} x_{n-1}
\]で表されるシステムがある。

(1) 伝達関数 \( H(z) \) を求めなさい。
(2) 伝達関数の極、零点があれば求めなさい。複数あればすべて答えること。
(3) 伝達関数からシステムの安定性を判定しなさい。
(4) インパルス応答 \( h_n \) を求めなさい。
(5) 入力を \( x_n = \delta_n + 3 \delta_{n-1} - 9 \delta_{n-2} \) とする。このときの出力 \( y_n \) を答えなさい。

9. 練習問題の答え

(1)

\( y_n \) をz変換すると、\[\begin{align*}
Y(z) & = \mathcal{Z} \left[ y_n \right]
\\ & = \mathcal{Z} \left[ \frac{9}{4} y_{n-1} - \frac{9}{8} y_{n-2} + x_n + \frac{3}{2} x_{n-1} \right]
\\ & = \frac{9}{4} \mathcal{Z} \left[ y_{n-1} \right] - \frac{9}{8} \mathcal{Z} \left[ y_{n-2} \right] + \mathcal{Z} \left[ x_n \right] + \frac{3}{2} \mathcal{Z} \left[ x_{n-1} \right]
\\ & = \frac{9}{4} z^{-1} Y(z) - \frac{9}{8} z^{-2} Y(z) + X(z) + \frac{3}{2} z^{-1} X(z)
\end{align*}\]

となる。両辺を整理すると\[\begin{align*}
Y(z) - \frac{9}{4} z^{-1} Y(z) + \frac{9}{8} z^{-2} Y(z) & = X(z) + \frac{3}{2} z^{-1} X(z) \\
8 Y(z) - 18 z^{-1} Y(z) + 9 z^{-2} Y(z) & = 8 X(z) + 12 z^{-1} X(z) \\
(8 - 18 z^{-1} + 9 z^{-2}) Y(z) & = (8 + 12z^{-1}) X(z)
\end{align*}\]となるため、

\[
Y(z) = \frac{8 + 12z^{-1} }{ 8 - 18 z^{-1} + 9 z^{-2} } X(z)
\]となる。

よって、伝達関数 \( H(z) \) は\[
H(z) = \frac{8 + 12z^{-1} }{ 8 - 18 z^{-1} + 9 z^{-2} }
\]となる。

(2)

分子分母を \( z^2 \) 倍して\[
\frac{8z^2 + 12z}{8z^2 - 18z + 9} = \frac{4z(2z+3)}{(2z-3)(4z-3)}
\]としてから考える。

極は (分母) = 0 となる \( z \) なので、\[
(2z-3)(4z-3) = 0
\]より、\( z = 1.5 \), \( z = 0.75 \) が極。

零点は (分子) = 0 となる \( z \) なので、\[
4z(2z+3)=0
\]より \( z = 0 \), \( z = -1.5 \) が零点。

(3)

伝達関数の極に \( z = 1.5 \) と、\( |z| \geqq 1 \) のものが含まれる。

よって、このシステムは安定ではない。(つまり、\( n \to \infty \) のとき、\( h_n \) は無限大に収束する)

(4)

インパルス応答 \( h_n \) は、伝達関数 \( H(z) \) を逆z変換することで求めることができる。

ここで、\[\begin{align*}
\frac{8 + 12z^{-1} }{ 8 - 18 z^{-1} + 9 z^{-2} } & = \frac{8 + 12z^{-1} }{ (2-3z^{-1})(4-3z^{-1}) }
\\ & = \frac{ a }{ 2 - 3z^{-1} } + \frac{ b }{ 4 - 3z^{-1} }
\end{align*}\]と部分分数分解をすることを考える。

両辺を \( (2-3z^{-1})(4-3z^{-1}) \) 倍すると、\[
8 + 12 z^{-1} = a (4 - 3z^{-1} ) + b ( 2 - 3z^{-1} )
\]となる。

(i) \( z^{-1} = \frac{4}{3} \) のとき(つまり \( z = \frac{3}{4} \) )

\[
8 + 12 \cdot \frac{4}{3} = a ( 4 - 4) +b \left( 2 - 4 \right)
\]より、\(8 + 16 = -2b \)、\( b = -12 \) となる。

(ii) \( z^{-1} = \frac{2}{3} \) のとき(つまり \( z = \frac{3}{2} \) )

\[
8 + 12 \cdot \frac{2}{3} = a (4 - 2) + b (2 - 2)
\]より、\( 16 = 2a \)、\( a = 8 \) となる。

したがって、\[
H(z) = \frac{8}{2 - 3z^{-1}} - \frac{12}{4 - 3z^{-1}}
\]と部分分数分解できる。

よって、インパルス応答 \( h_n \) は、\[\begin{align*}
h_n & = \mathcal{Z}^{-1} \left[ H(z) \right]
\\ & = \mathcal{Z}^{-1} \left[ \frac{8}{2 - 3z^{-1}} - \frac{12}{4 - 3z^{-1}} \right]
\\ & = 4 \mathcal{Z}^{-1} \left[ \frac{1}{1- \textcolor{red}{1.5} z^{-1}} \right] - 3 \mathcal{Z}^{-1} \left[ \frac{1}{1 - \textcolor{red}{0.75} z^{-1} } \right]
\\ & = 4 \cdot \textcolor{red}{1.5}^n - 3 \cdot \textcolor{red}{0.75}^n
\end{align*}\]となる。

(5)

入力 \( x_n \)、インパルス応答 \( h_n \)、出力 \( y_n \) には \( y_n = h_n * x_n \) の関係がある。

そのため、\[\begin{align*}
y_n & = h_n * x_n
\\ & = \sum^{n}_{k = 0} h_k x_{n-k}
\\ & = h_0 x_n + h_1 x_{n-1} + \cdots + h_{n-2} x_2 + h_{n-1} x_1 + h_n x_0
\\ & = h_n x_0 + h_{n-1} x_1 + h_{n-2} x_2
\\ & = (4 \cdot 1.5^n - 3 \cdot 0.75^n) + 3 (4 \cdot 1.5^{n-1} - 3 \cdot 0.75^{n-1}) - 9 (4 \cdot 1.5^{n-2} - 3 \cdot 0.75^{n-2})
\\ & = 4 \cdot 1.5^n - 3 \cdot 0.75^n + 3 \left( \frac{8}{3} \cdot 1.5^{n} - 4 \cdot 0.75^n \right) - 9 \left( \frac{16}{9} \cdot 1.5^n - \frac{16}{3} \cdot 0.75^n \right)
\\ & = (4+8-16) 1.5^n + (-3-12+48) 0.75^n
\\ & = -4 \cdot 1.5^n + 33 \cdot 0.75^n
\end{align*}\]となる。

10. さいごに

今回は、ディジタルシステムの解読の前編として、

  • z変換の復習
  • 伝達関数について
  • インパルス応答
  • たたみ込み計算
  • インパルス応答と入力から出力を求める方法
  • 伝達関数の極と零点
  • システムの安定性

の説明をしていきました。

引き続き、ディジタルシステムの理論を後編にて書いてく予定なので、よろしくお願いいたします!

注釈

注釈
1 余談ですが、何故デジタルじゃなくてディジタルって書かれてる本やサイトが多いんでしょうかね…
2 ちなみに数2Bで習う漸化式は、\[
a_{n+1} = 2 a_{n} + 3
\]のように1つの変数に対して1つの式しか出てきません。一方、ディジタルシステムで出てくる漸化式は今回のように2つの変数 \( y \), \( x \) が出てきます。そのため、ディジタルシステム出てくる漸化式は余計に解くのが困難なのです。
3 正確には、伝達関数やインパルス応答を求めるときのことです。
4 ディジタルシステムの解読では、将来的にどのような振る舞いをするかを調べる。そのため、十分先の未来においては、初期値の値が0だろうが1だろうがほとんど関係がない。なら、最初から全部初期値を0にして考えてしまおうというわけ。
5 \[
u_n = \left\{ \begin{array}{ll} 1 & ( n \geqq 0 ) \\ 0 & (n < 0) \end{array} \right.
\]となる関数のこと
6 正確にいうと、長さの範囲内では値を持ち、範囲外では値を持たない信号のこと。
7 長さが無限のものに対しては\[ \cdots + x_0 y_n + x_1 y_{n-1} + x_2 y_{n-2} + \cdots + x_{n-1} y_{1} + x_{n} y_{0} + \cdots \] となる。
8 長さが無限なときは\[ \sum^{\infty}_{k = - \infty} x_k y_{n-k} \]となる。
9 \( N (z) \), \( D (z) \) にした理由は、分子・分母をそれぞれ英語で "numerator", "denominator" というからです。
10 \( z = 0 \) のとき、\( z^{-1} = \frac{1}{0} \) でおかしなことになる。
11 方程式 (伝達関数の分母) = 0 が重解をもたないとき。重解を保つ場合は後ほど補足で説明します。

関連広告・スポンサードリンク

おすすめの記事