第14章

z変換

この章のねらい

  • z変換の定義と、ラプラス変換・DTFT との関係を説明できるようになる
  • 差分方程式を z変換して伝達関数 H(z) を求められるようになる
  • 部分分数展開による逆 z変換を1問通しで実行できるようになる

14.1 z変換の導入

やる夫

前章のラプラス変換、たしかに強かったお。でもやる夫が安定かどうか知りたかったのは、第12章のディジタルフィルタだお。あっちは微分方程式じゃなくて差分方程式だから、\intd/dtd/dt も出てこないお。

やらない夫

だから今度はラプラス変換の離散時間版を作る。それが z変換だ。数列 x[n]x[n]n0n \ge 0)に対して

X(z)=n=0x[n]zn(14.1)X(z) = \sum_{n=0}^{\infty} x[n]\, z^{-n} \tag{14.1}

と定義する。zz は複素変数。積分が総和に、este^{-st}znz^{-n} に置き換わっただけで、骨格はラプラス変換 (13.2) と同じだ。

やる夫

骨格が同じって言うけど、este^{-st}znz^{-n} じゃ見た目がだいぶ違うお。どこが対応してるんだお。

やらない夫

いいところを突く。x[n]x[n] が連続信号 f(t)f(t) をサンプリング周期 TT で標本化したもの、つまり x[n]=f(nT)x[n] = f(nT) だとしよう。ラプラス変換の核 este^{-st} を標本点 t=nTt = nT で評価すると esnT=(esT)ne^{-snT} = (e^{sT})^{-n} だ。ここで

z=esT(14.2)z = e^{sT} \tag{14.2}

と名前を付ければ、(esT)n=zn(e^{sT})^{-n} = z^{-n}。つまり z変換とは、ラプラス変換の標本点版で、esTe^{sT} をひとまとめに zz と呼んだものなんだ。

やる夫

なるほどだお。じゃあ ss 平面の話は、式 (14.2) の翻訳表を通せば全部 zz 平面に持ってこられるってことかお。

やらない夫

そういうことだ。翻訳の目玉をひとつ先に見せておく。s=jωs = j\omega、つまり前章で「周波数応答が住んでいる」と言った虚軸は、z=ejωTz = e^{j\omega T} に移る。これは複素平面の半径1の円周だ。実際、式 (14.1) で z=ejωz = e^{j\omega} と置くと

X(ejω)=nx[n]ejωn(14.3)X(e^{j\omega}) = \sum_n x[n]\, e^{-j\omega n} \tag{14.3}

これは離散時間フーリエ変換(DTFT)そのものだ。DTFT は z変換を単位円の上で眺めた特殊ケース。「ラプラス変換の虚軸=フーリエ変換」の関係と同じ構図が、円になって現れている。

14.2 逆z変換

やる夫

ラプラス変換のときは「変換 → 代数 → 逆変換」の3ステップだったお。z変換の逆変換はどうやるんだお。

やらない夫

公式としては複素平面上の周回積分

x[n]=12πjX(z)zn1dz(14.4)x[n] = \frac{1}{2\pi j} \oint X(z)\, z^{n-1}\, dz \tag{14.4}

が定義だ。が、安心しろ、この積分を実際に計算することはこの教材では一度もない

やる夫

その宣言、嫌いじゃないお。じゃあ実際はどうするんだお。

やらない夫

実務は2つの読み方で済む。

  1. べき級数として読む: 定義 (14.1) は X(z)=x[0]+x[1]z1+x[2]z2+X(z) = x[0] + x[1]z^{-1} + x[2]z^{-2} + \cdots だ。つまり X(z)X(z)z1z^{-1} のべき級数に展開できれば、係数を順に読むだけで x[n]x[n] が出る
  2. 部分分数に割って対応表を読む: X(z)X(z) が有理関数なら、簡単な分数の和に割って、各項を既知のペアで逆変換する。ラプラスのときの式 (13.7) と同じ作戦だ

ほとんどの場合は 2 で片付く。その「既知のペア」の代表が、これから作る 1/(1az1)1/(1 - az^{-1}) だ。

14.3 線形差分方程式とz変換

やらない夫

ラプラス変換の必殺技は「微分が ss 倍」だった。z変換の必殺技はこれだ。

Z[x[n1]]=z1X(z)(14.5)\mathcal{Z}\big[ x[n-1] \big] = z^{-1} X(z) \tag{14.5}

1サンプルの遅延が、z1z^{-1} を掛けるだけの操作に化ける。導出は 14.5 節に回して、まず使う。第12章の IIR フィルタを覚えているか。

y[n]=x[n]+0.9y[n1](14.6)y[n] = x[n] + 0.9\, y[n-1] \tag{14.6}

両辺を z変換しろ。遅延は z1z^{-1} 倍、それ以外は線形だからそのまま和になる。

やる夫

えーと、Y(z)=X(z)+0.9z1Y(z)Y(z) = X(z) + 0.9 z^{-1} Y(z) …。Y(z)Y(z) を左に集めると (10.9z1)Y(z)=X(z)(1 - 0.9z^{-1}) Y(z) = X(z) だから…

H(z)=Y(z)X(z)=110.9z1(14.7)H(z) = \frac{Y(z)}{X(z)} = \frac{1}{1 - 0.9 z^{-1}} \tag{14.7}

お、ラプラスのときの伝達関数と同じ顔のやつが出てきたお。

やらない夫

それがディジタルフィルタの伝達関数 H(z)H(z) だ。一般の差分方程式でも同じことが起きる。

y[n]=k=0Mbkx[nk]k=1Naky[nk]    Z    H(z)=b0+b1z1++bMzM1+a1z1++aNzN=B(z)A(z)(14.8)y[n] = \sum_{k=0}^{M} b_k x[n-k] - \sum_{k=1}^{N} a_k y[n-k] \;\xrightarrow{\;\mathcal{Z}\;}\; H(z) = \frac{b_0 + b_1 z^{-1} + \cdots + b_M z^{-M}}{1 + a_1 z^{-1} + \cdots + a_N z^{-N}} = \frac{B(z)}{A(z)} \tag{14.8}

差分方程式が、z1z^{-1} の多項式の比=有理関数にきれいに化ける。分子 B(z)B(z) には入力側の係数(FIR 部分)、分母 A(z)A(z) にはフィードバック側の係数が並ぶ。FIR フィルタなら分母が 1 で、H(z)H(z) はただの多項式だ。

やる夫

で、式 (14.7) からインパルス応答は読めるのかお? 第12章で手計算したときは h[n]=0.9nh[n] = 0.9^n だったお。

やらない夫

読める。等比級数の公式 11r=1+r+r2+\frac{1}{1-r} = 1 + r + r^2 + \cdotsr=0.9z1r = 0.9z^{-1} を入れてみろ。

110.9z1=1+0.9z1+0.81z2+=n=00.9nzn(14.9)\frac{1}{1 - 0.9z^{-1}} = 1 + 0.9 z^{-1} + 0.81 z^{-2} + \cdots = \sum_{n=0}^{\infty} 0.9^n z^{-n} \tag{14.9}

さっき言った「べき級数として読む」だ。係数列はまさに 0.9n0.9^n。一般化すれば、逆変換ペアの主役が手に入る。

11az1h[n]=an(n0)(14.10)\frac{1}{1 - a z^{-1}} \quad\Longleftrightarrow\quad h[n] = a^n \quad (n \ge 0) \tag{14.10}

そして H(z)=11az1H(z) = \frac{1}{1-az^{-1}} の分母が 0 になる点、つまりz=az = a だ。a<1|a| < 1 なら ana^n は減衰し、a>1|a| > 1 なら発散する。第12章の「0.9 はセーフ、1.1 はアウト」の境界線が、zz 平面の単位円として目に見える形になった。

14.4 逆z変換の実際

やる夫

極が1個ならわかったお。でも本物のフィルタは式 (14.8) みたいに分母がもっと長いお。そういうときはどうするんだお。

やらない夫

部分分数展開で式 (14.10) の形の和にバラす。これを1問、最後まで通しでやろう。お題はこれだ。

H(z)=1(10.5z1)(10.8z1)(14.11)H(z) = \frac{1}{(1 - 0.5z^{-1})(1 - 0.8z^{-1})} \tag{14.11}

極は z=0.5z = 0.5z=0.8z = 0.8 の2つ。これを

H(z)=A10.5z1+B10.8z1(14.12)H(z) = \frac{A}{1 - 0.5z^{-1}} + \frac{B}{1 - 0.8z^{-1}} \tag{14.12}

と置く。A,BA, B を決めるには、両辺に元の分母を掛けて

1=A(10.8z1)+B(10.5z1)(14.13)1 = A(1 - 0.8z^{-1}) + B(1 - 0.5z^{-1}) \tag{14.13}

これがどんな zz でも成り立つように選ぶ。ここでひとつ約束をしておく。z1z^{-1} を「ひとつの変数」とみなして部分分数するんだ。w=z1w = z^{-1} と置き換えて 1(10.5w)(10.8w)\frac{1}{(1-0.5w)(1-0.8w)}ww の有理関数として分解している、と思えばいい。だから次に出てくる「z1=2z^{-1}=2 を代入」も、w=2w=2 という ww への代入であって、zz そのものに妙な値を入れているわけではない(離散版の部分分数展開のコツは付録A.5にまとめた)。楽をするコツは、片方の項が消える点を代入することだ。やってみろ。

やる夫

ええと、BB の項を消したいなら 10.5z1=01 - 0.5z^{-1} = 0、つまり z1=2z^{-1} = 2 を入れるお。すると 1=A(10.8×2)=0.6A1 = A(1 - 0.8 \times 2) = -0.6A だから A=53A = -\frac{5}{3} だお。

今度は z1=1/0.8=1.25z^{-1} = 1/0.8 = 1.25 を入れると 1=B(10.5×1.25)=0.375B1 = B(1 - 0.5 \times 1.25) = 0.375B だから B=83B = \frac{8}{3} だお。

やらない夫

正解だ。あとは各項に式 (14.10) を当てるだけ。

h[n]=53(0.5)n+83(0.8)n(n0)(14.14)h[n] = -\frac{5}{3}\,(0.5)^n + \frac{8}{3}\,(0.8)^n \quad (n \ge 0) \tag{14.14}

無限に続くインパルス応答の全貌が、閉じた式で手に入った。

やる夫

…本当に合ってるのかお? 検算したいお。

やらない夫

いい習慣だ。式 (14.11) の分母を展開すると 11.3z1+0.4z21 - 1.3z^{-1} + 0.4z^{-2}、つまり元の差分方程式は y[n]=x[n]+1.3y[n1]0.4y[n2]y[n] = x[n] + 1.3y[n-1] - 0.4y[n-2] だ。インパルスを入れて直接回すと h[0]=1h[0] = 1h[1]=1.3h[1] = 1.3。一方、式 (14.14) は

h[0]=53+83=1,h[1]=53(0.5)+83(0.8)=56+3215=3930=1.3h[0] = -\tfrac{5}{3} + \tfrac{8}{3} = 1, \qquad h[1] = -\tfrac{5}{3}(0.5) + \tfrac{8}{3}(0.8) = -\tfrac{5}{6} + \tfrac{32}{15} = \tfrac{39}{30} = 1.3

一致だ。さらに式 (14.14) からは数値以上のことが読める。応答は (0.5)n(0.5)^n(0.8)n(0.8)^n の2成分の混合で、すぐ消えるのは前者、しぶとく残って応答の「しっぽ」を支配するのはいちばん単位円に近い極 z=0.8z = 0.8 の方だ。

やる夫

極の位置を見れば、計算しなくても応答の性格が読めるってことかお。ラプラスのときの「左半平面なら安定」と同じノリだお。

やらない夫

そのノリの離散版を、目で確かめよう。下のデモは共役な極ペア z=re±jθz = re^{\pm j\theta} を持つシステムだ。インパルス応答は h[n]=rncosθnh[n] = r^n \cos\theta n になる。rrθ\theta を動かしてみろ。

Z-PLANE → IMPULSE RESPONSE INTERACTIVE
再生すると極ペア(×印)の半径 r が内から外へ自動で動く。応答の減衰がだんだん鈍り、極が単位円(r = 1)を越えた瞬間に発散へ転じる=13章の「虚軸越え=発散」が、離散では「単位円越え=発散」になると見える。停止すれば r・θ を自分で置け、θ は振動の細かさだけを変える(σ→r、ω→θ の役割対応)。
やる夫

おお、前章のデモとそっくりの動きだお! あっちは「縦の虚軸を越えたら発散」だったけど、今度は単位円を越えたら発散だお。rr が前章の σ\sigma の役で、θ\thetaω\omega の役だお。

やらない夫

そのとおり。z=esTz = e^{sT} の翻訳で z=eσT|z| = e^{\sigma T} だから、σ<0z<1\sigma < 0 \Leftrightarrow |z| < 1「極が左半平面なら安定」は、離散時間では「極が単位円の内側なら安定」になる。これが第12章から引っ張ってきた問いへの最終回答だ。フィルタの分母 A(z)A(z) の根を求めて、全部単位円の内側にあれば安定。手計算で何十項も回す必要はない。

14.5 なぜ遅延が z^-1 になるのか

やる夫

最後に宿題を回収してほしいお。式 (14.5)、遅延が z1z^{-1} 倍になるってやつだお。

やらない夫

定義に放り込むだけだ。1サンプル遅らせた信号 x[n1]x[n-1] を式 (14.1) に入れて、m=n1m = n - 1 と置き換える。

n=0x[n1]zn=m=1x[m]z(m+1)=z1m=0x[m]zm=z1X(z)(14.15)\sum_{n=0}^{\infty} x[n-1]\, z^{-n} = \sum_{m=-1}^{\infty} x[m]\, z^{-(m+1)} = z^{-1} \sum_{m=0}^{\infty} x[m]\, z^{-m} = z^{-1} X(z) \tag{14.15}

途中で m=1m = -1 の項を捨てたのは、n<0n < 0x[n]=0x[n] = 0(因果的な信号)としているからだ。kk サンプルの遅延なら同じ計算で zkz^{-k} 倍になる。

やる夫

ほんとに総和の番号を付け替えただけだお。znz^{-n}z(m+1)z^{-(m+1)} になって、はみ出した z1z^{-1} が外にこぼれ出てきた、って感じだお。

やらない夫

その「こぼれ出る」感覚で十分だ。仕上げに、2つの章を1枚の対応表にしておこう。

  • 連続時間: システムの基本操作は微分este^{st} が微分の固有関数だから、ラプラス変換で「微分 s\to s 倍」になり、微分方程式が代数方程式 H(s)H(s) に化けた
  • 離散時間: システムの基本操作は遅延znz^n は遅延の固有関数(zn1=z1znz^{n-1} = z^{-1} \cdot z^n で形が変わらない)だから、z変換で「遅延 z1\to z^{-1} 倍」になり、差分方程式が有理関数 H(z)H(z) に化けた

道具の見た目は違っても、**「システムの基本操作を、ただの掛け算に変える座標系を選ぶ」**という一つの思想で貫かれている。

この章のまとめ
  • z変換 X(z)=nx[n]znX(z) = \sum_{n} x[n] z^{-n} はラプラス変換の離散時間版。z=esTz = e^{sT} の関係で結ばれ、DTFT は単位円上(z=ejωz = e^{j\omega})の特殊ケース
  • 逆z変換は周回積分が定義だが、実際はべき級数の係数読み部分分数展開で済ませる
  • 遅延の性質 Z[x[nk]]=zkX(z)\mathcal{Z}[x[n-k]] = z^{-k}X(z) により、差分方程式は有理関数 H(z)=B(z)/A(z)H(z) = B(z)/A(z) に化ける。ラプラスの「微分 s\to s」と対になる「遅延 z1\to z^{-1}
  • 基本ペアは 1/(1az1)an1/(1 - az^{-1}) \Leftrightarrow a^n。複数極は部分分数展開でこの形の和に割る
  • 応答のしっぽは単位円にいちばん近い極が支配する
  • 安定条件: 極がすべて単位円の内側ss 平面の左半平面⇔zz 平面の単位円内、虚軸⇔単位円周