うさぎでもわかる信号処理 第01羽 z変換のいろは

スポンサードリンク

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

数か月ぶりですが、大学数学の記事を書き進めていきたいと思います。

今回からしばらくの間は、制御数学(信号処理で使う数学)について不定期ですが更新していきたいと思います。

最初となる第01羽は、z変換の基本について説明していきます。

スポンサードリンク

1.z変換の定義・ラプラス変換との関係性

(1) z変換の定義

まずいきなりですが、z変換の定義を見てみましょう。

ある数列 xn に対して、X(z)=n=0xnzn無限級数の形で表される z の関数 X(z) のことをz変換と呼びます。

f:id:momoyama1192:20210222160238g:plain

さらに、z変換を行う元の数列 xn原関数と呼び*1、z変換後の z の関数 X(z) のことを像関数と呼び、1対1に対応しています。

f:id:momoyama1192:20210222155920j:plain

(2) ラプラス変換との関係性

いきなり定義を暗記しろ、って言われても腑に落ちない人もいると思います。

なので、z変換がなぜ(1)で説明した公式の形が出てきたかを(ラプラス変換との関係性を踏まえながら)説明したいと思います。

なお、ラプラス変換についてはこちらで記事にしているため、もしよかったらご覧ください。

まず、ラプラス変換の公式は、F(s)=0f(t)estでしたね。

この F(s) は、下の図の x 軸と f(t)est で囲まれた部分の面積 S と一致しますね。

f:id:momoyama1192:20210220164408j:plain

つぎに、S を、微小な間隔 Δt ごとに刻んでいきます*2

(信号処理・制御数学の世界では、「刻む」ことをサンプリング or 標本化と呼びます。)

さらに、刻んだ部分それぞれの面積を ΔS0ΔS1ΔS2 … としていきます。

f:id:momoyama1192:20210220164412j:plain

すると、例えば ΔS0 の面積は、ΔS0=f(0)es0Δt=f(0)Δtと長方形の面積を求めるノリで求められますね。

同様に、ΔS2 の面積であれば、ΔS2=f(2Δt)es2ΔtΔt=f(2Δt)e2sΔt Δtとなりますね。

では、ΔSn の面積はどうなるかを考えてみましょう。

n と具体的な数値ではありませんが、上の S2 などの計算と同じようにΔSn=f(nΔt)esnΔtΔt=f(nΔt)ensΔt Δtと計算することができます。

f:id:momoyama1192:20210220170058g:plain

ここで、刻んだ面積 ΔS0, ΔS1, … の総和は当然 S と一致しますよね。

よって総和 SS=ΔS0+ΔS1+ΔS2+=n=0ΔSn=n=0f(nΔt)ensΔt Δt=Δtn=0f(nΔt)ensΔtと書き換えることができますね。

ここで、両辺を Δt で割り、さらにesΔt=z1,   xn=f(nΔt)とおきます。

すると、SΔt=n=0f(nΔt)ensΔt(*)=n=0f(nΔt)zn=n=0xnznと変形することができます。

この、n=0xnznの形が z 変換の公式となり、Z[xn] と表記されます。

(3) 定義に沿ってz変換を求めてみよう

では、(1)で紹介した定義に沿ってz変換を計算してみましょう!

 例題1 

つぎの(1), (2)で表される数列 xn のz変換 Z[xn] を求めなさい。

(1) Z[1]

(2) Z[n]

[解説1]

(1)

まずは、xn=1 をz変換の公式に代入してみましょう。すると、Z[1]=n=0xnzn=1+z1+z2+の形になりますね。

すると、初項1、公比 z の無限等比数列の総和の形になっていることがわかりますね。

よって、Z[1]=1+z1+z2+=11z1=zz1とz変換を求めることができますね。

[別解]

マクローリン展開11z1=1+z1+z2+の形からz変換を求めてもOKです。

無限等比数列の和の公式

初項 :a、公比 r の無限等比数列n=1arn1の級数の総和は、|r|<1 のときに限り、n=1arn1=a1rとなる。(収束半径は |r|

公式を忘れてしまっても、等比数列の公式a(1rn)1rn に飛ばすことで導出が可能。

(2)

(1)と同じように xn=n をz変換の公式に代入してみましょう。すると、Z[n]=n=0xnzn=z1+2z2+3z3+4z4+の形になりますね。

(1)のように無限等比数列の総和の形になんとか持ち込みたいですよね。

しかし、今回の問題はどう頑張っても無限等比数列の形には持ち込めません。

なので別の方法を考えてみましょう。

ここで、11z1=1+z1+z2+の両辺を微分してみましょう。

すると、ddz11z1=z22z33z44z5z2(1z1)2=z22z33z44z5が出てきますね。

さらに、両辺に z を掛けると、zz2(1z1)2=z(z22z33z44z5)z1(1z1)2=z1+2z2+3z3+4z4+となる。

よって、z変換はZ[n]=n=0xnzn=z1+2z2+3z3+4z4+=z1(1z1)2=z2z1z2(1z1)2=z(z1)2と求められる。

※ しれっと無限級数 1+z1+z2+z で微分しましたが、厳密には無限級数が収束するかどうかを確かめてから微分する必要があるので、答案などを書く際には注意しましょう。

無限級数の項別微分

無限級数n=1f(z)収束するならば、項別微分ddzn=1f(z)=n=1ddzf(z)が可能である。

(4) 片側z変換と両側z変換

先程(1), (2)で取り上げたz変換は、n0 の整数 n のみで定義される xn が対象でしたね。

正と負のうちの片方(正)でのみ定義されてるz変換なので、片側z変換と呼ばれることもります。

一方、 xnx1, x2, … のような n<0 でも定義されるz変換のことを両側z変換と呼びます。

式で書くと、下のような形になります。n=xnzn

※ 本記事では特に指示がない限り、z変換と呼ばれたら片側z変換を指していると思ってください。

スポンサードリンク

2.逆z変換

z変換を行う前の数列 xn とz変換後の関数 X(z)1対1に対応しているのでしたね。

1対1に対応していることを利用することで、z変換後の関数 X(z) からz変換前の数列 xn に戻す逆z変換 Z1] が定義されます。

f:id:momoyama1192:20210222155916j:plain

先程、xn=1 をz変換した結果が X(z)=zz1 であることを確認しましたね。

z変換前・変換後の関数は1対1の関係にあるため、X(z)=zz1 を逆z変換した結果はxn=Z1[X(z)]=Z1[zz1]=1と求めることができます。

f:id:momoyama1192:20210222155912j:plain

スポンサードリンク

3.重要なz変換の6つの公式

つぎに、z変換で重要な6つの公式

  • 線形の法則(重要度:★★★★★)
  • 微分の法則(重要度:★★★★★)
  • 指数倍の法則(重要度:★★★★★)
  • シフトの法則(重要度:★★★★☆)
  • 初期値定理(重要度:★★★☆☆)
  • 最終値定理(重要度:★★☆☆☆)

を見ていきましょう。

時間がないという人は、赤色で示された4つの公式を確認すればOKです。

その1  線形(定数)の法則

積分でも、5x2+3x dx=5x2 dx+3x dxと足し算引き算、定数倍を分離できるように、z変換においても足し算引き算、定数倍を分離することができます。

z変換における線形(定数)の法則

(1) 足し算(引き算もOK)の分離ができるZ[xn+yn]=Z[xn]+Z[yn]

(2) 定数倍の分離ができるZ[k xn]=kZ[xn]

※ 2つ合わせてZ[a xn+b yn]=a Z[xn]+b Z[yn]と書いてある参考書が多い。

[導出過程]

数列 xn, yn のz変換がZ[xn]=X(z)Z[yn]=Y(z)で表せるとする。

Z[a xn+b yn]=n=0(a xn+b yn)zn=n=0a xn+n=0b yn=an=0xn+bn=0yn=a X(z)+b Y(z)=a Z[xn]+b Z[yn]

逆変換でも線形の法則は成り立つ!

なお、逆z変換であっても、Z1[a X(z)+b Y(z)]=a Z1[X(z)]+b Z1[Y(z)]と、定数倍・足し算を分離することができます。

逆z変換における線形の法則

※ラプラス変換と同じです

(1) 足し算(引き算もOK)の分離ができるZ1[X(z)+Y(z)]=Z1[X(z)]+Z1[Y(z)]

(2) 定数倍の分離ができるZ1[k X(z)]=kZ1[X(z)]

※ 2つ合わせてZ1[a X(z)+b Y(z)]=a Z1[X(z)]+b Z1[Y(z)]と書いてある参考書が多い。

その2  微分の法則

z変換前の数列 xnxn=n2+4n+3 のような na の多項式の形になっているときに使える法則です。

まずは公式を見てみましょう。

z変換における微分の法則

Z[nxn]=zddzX(z)=zddzZ[xn] [意味] 元の数列 xn のz変換をzで微分し、-z倍したものは数列 nxn となる。

微分の法則を使うことで、元の数列 xnna の形が含まれている場合に、z変換の定義式を使うことなしにz変換を行うことができます。

早速導出していきましょう。

まず、z変換の定義式Z[n]=n=0xnzn=x0+x1z1+x2z2++xnzn+=f(z)の両辺を微分してみましょう。

すると、f(z)=x1z22x2z33x3z4nxnz(n+1)=z1(x1z1+2x2z2+3x3z3++nzn+)=z1(x1z1+2x2z2+3x3z3++nzn+)=z1n=0nxnzn=z1Z[nxn]の形になりますね。

よって、ddzZ[n]=z1Z[nxn]Z[nxn]=zddzZ[n]の関係式を導出することができます。

※ 本記事の1章同じく、しれっと無限級数 1+z1+z2+z で微分しましたが、厳密には無限級数が収束するかどうかを確かめてから微分する必要があるので、答案などを書く際には注意しましょう。

使用例

実際に使用する場合には、ベースとなるz変換の公式Z[1]=zz1に多項式の次数の数だけ微分します。

例えば、Z[n2] を導出する場合は、

  1. Z[1] に1回目の微分の公式を適用し、Z[n] をつくる
  2. Z[n] に2回目の微分の公式を適用し、Z[n2] をつくる

の2ステップで導出が可能です。

具体的に微分の法則を用いてz変換を導出する方法は、第02羽のz変換計算編にて説明しますが、非常に重要なため、忘れないうちに1題だけ例題を解いてみましょう。

 例題2 

数列 xn=n2 のz変換 Z[n2] を微分の公式を用いて導出しなさい。必要であればZ[1]=zz1となることを使ってもよい。

[解説2]

まずは Z[n] を作りましょう。Z[n]=Z[n1]=zddzZ[1]=zddzzz1=z1(z1)z1(z1)2=z1(z1)2=z(z1)2

つぎに目標の Z[n2] を作りましょう。Z[n2]=Z[nn]=zddzZ[n]=zddzz(z1)2=zddz1(z1)2z2(z1)(z1)4=zz1(z1)3=z(z+1)(z1)3となるので、xn=n2 の z 変換は、Z[n2]=z(z+1)(z1)3と求められる。

その3  指数倍の法則

z変換前の数列 xnxn=3n のような an のような指数関数の形になっているときに使える法則です。

微分の公式と同じく、z変換、逆z変換の導出に重要な公式の1つです。

同じく、公式を見てみましょう。

z変換における指数倍の法則

Z[anxn]=X(a1z) [文章での説明] 数列 xnan 倍した数列のz変換は、xn をz変換した結果 X(z)zza1z にしたものとなる。

指数倍の法則を使うことで、元の数列 xnan の形が含まれている場合でも、あっという間にz変換の結果を出すことができます。

早速導出していきましょう。

z変換の定義式Z[n]=n=0anxnzn=a0x0+a1x1z1+a2x2z2++anxnzn+=n=0anxnzn=n=0xn(a1z)n=X(a1z)と導出することができます。

指数倍の公式は、微分の公式と組み合わせて使うことができます。

例えば、Z[3nn2] であれば、

  • Z[1] に対して微分の公式を2回適用することで Z[n2] を作成
  •  Z[n2] に対して指数倍の公式を適用することで Z[3nn2] を作成

の2ステップで行うことができます。

指数倍の公式が微分の公式と組み合わせて使えることを体感してもらうために、また1問例題を用意してみたので、解いてみましょう。

 例題3 

数列 xn=4nn2 のz変換を指数倍の公式を用いて導出しなさい。必要であれば例題2の答えを使ってもよい。

[解説3]

n2 のz変換を X(z) とする。Z[n2]=z(z+1)(z1)3=X(z)

あとは z41z に置き換えるだけでOK。Z[4nn2]=X(41z)=41z(41z+1)(41z1)3=(41z(41z+1))43((41z1)3)43=4z(z+4)(z4)3

その4  シフトの法則

シフト変換は、数列 xn をz変換、逆z変換する際にはあまり使いませんが、z変換を用いて差分方程式(漸化式)を解く際に必ずお世話になる法則です。

z変換におけるシフトの法則

Z[xn+1]=zX(z)x0zZ[xn+2]=z2X(z)x0z2x1zZ[xn+3]=z3X(z)x0z3x1z2x2zZ[xn+k]=zkX(z)x0zkx1zk1x2zk2xk1z

xn+2 のときまで導出してみましょう。

基本的な導出ステップとしては、

  1. z変換の定義式Z[xn+k]=n=0xn+kznによりz変換。
  2. xn+k のとき、 n=n+k とおき、n=0xnzn=X(z)の形に持ち込み、逆z変換を行う。

の2つです。

Z[xn+1] の導出Z[xn+1]=n=0xn+1zn=zn=0xn+1zn1=zn=1xn+1zn1x0z=zn=0xnznx0z=zX(z)x0z

Z[xn+2] の導出Z[xn+2]=n=0xn+2zn=z2n=0xn+2zn2=z2n=2xn+2zn2x0z2x1z=z2n=0xnznx0z2x1z=z2X(z)x0z2x1z

なお、 xn1, xn2 のように負のシフト法則も同じように導出が可能です。導出結果(公式)のみを下に載せておきます。

z変換におけるシフトの法則 (負Ver)

Z[xn1]=z1X(z)+x1Z[xn2]=z2X(z)+x1z1+x2Z[xn3]=z3X(z)+x1z2+x2z1+x3Z[xnk]=zkX(z)+x1z(k1)+x2z(k2)++xk

Z[xn1] の導出(途中で n=n1 とおいています)

Z[xn1]=n=0xn1zn=z1n=0xn1zn+1=z1n=1xn1zn+1+x1=z1n=0xnzn+x1=z1X(z)+x1

Z[xn2] の導出(途中で n=n2 とおいています)

Z[xn2]=n=0xn2zn=z2n=0xn2zn+2=z2n=2xn2zn+2+x2+x1z1=z2n=0xnzn+x1z1+x2=z2X(z)+x1z1+x2

その5 初期値定理

初期値定理は、初項 x0 がわからない数列に対して、初項を求めるときに使うことができます。

z変換における初期値定理

x0=limzX(z)

導出もかなり簡単です。

定義式に z の極限を適用するだけです。limzX(z)=limzn=0xnzn=limz(x0+x1z1+x2z2++xnzn+)=x0

なお、「その4 シフト法則」と組み合わせることで、x1=limz(zX(z)x0z)のように、x0 以外の項も計算を行うことも可能です。

その6 最終値定理

最終値定理は、数列 xnn を極限まで増やしたとき、つまり n のときに収束する値を調べる際に使用します。

z変換における初期値定理

limnxn=limz1(z1)X(z)

(参考書によってはlimnxn=limz1(1z1)X(z)と書かれている場合あり)

最終値定理のゆるめな導出(※厳密ではないため注意!!)

zX(z)x0z=Z[xn+1]=n=0xn+1znzX(z)=n=0xn+1zn+x0zより、(z1)X(z)=limn(k=0nxk+1zk+x0zn=knxkzk)=limn(x0(z1)+x1(1z1)++xnz(n1)(1z1)+xn+1zn)=x0(z1)+x1(1z1)++limnxnz(n1)(1z1)+limnxn+1znとなるため、

limz1(z1)X(z)= limz1(x0(z1)+x1(1z1)++limnxnz(n1)(1z1)+limnxn+1zn)= limz1limnxnz(n1)(1z1)+limz1limnxn+1zn= limnlimz1xnz(n1)(1z1)+limnlimz1xn+1zn= limnxn+1= limnxn(n n+1n)

※ 厳密に証明する場合、極限の入れ替えが可能なことの証明が必要

途中の式k=0nxk+1zk+x0zn=knxkzkの詳しい計算過程は下の画像をご覧ください。

f:id:momoyama1192:20210508230813g:plain

4.三角関数のz変換

第3章で説明した「微分の法則」、「指数倍の法則」を直接使うだけでは導出できない三角関数 sinbn, cosbn のz変換も導出してみましょう。

今回は、オイラーの公式eibn=cosbn+isinbnを使って導出を行いたいと思います。

指数関数 an が含まれている場合のz変換は、以下の2ステップの公式で導出が可能ですね。Z[1]=X(z)=zz1Z[anxn]=X(a1z)

今回ほしいのは、eibn のz変換なので、Z[1]=X(z)=zz1Z[eibnxn]=X(eibz)=eibzeibz1=zzeibで計算が可能です。

ここで、eib=cosb+isinbを適用し、さらに t=zcosb とおくと、zzeib=zzcosbisinb=ztisinb=z(t+isinb)(tisinb)(t+isinb)=zt+izsinbt2+sin2b=z(zcosb)+izsinb(zcosb)2+sin2b=z2zcosb+izsinbz22zcosb+cos2b+sin2b=z2zcosb+izsinbz22zcosb+1=z2zcosbz22zcosb+1+izsinbz22zcosb+1

となるため、Z[eibnxn]=Z[cosbn]+iZ[sinbn]=zzeib=z2zcosbz22zcosb+1+izsinbz22zcosb+1の関係式が成り立ちますね。

よって、三角関数のz変換Z[cosbn]=z2zcosbz22zcosb+1Z[sinbn]=zsinbz22zcosb+1を2つまとめて導出することができました!

5.z変換と信号処理

z変換を行うと、数式で表されたディジタル信号 xn の信号の特徴を

  • 時刻
  • (ある時刻における)信号の値

の2つで捉えることができます。

まず、z変換の公式はZ[xn]=n=0xnzn=n=0f(nΔt)zn=f(0)z0+f(Δt)z1+f(2Δt)z2+と変形できます。

ここで、xn=f(nΔt は、時刻 nΔt における信号の値を表しています*3

そのため、xn の値、つまりそれぞれの zn の係数部分を見ると、 ディジタル信号がどの時刻にどれくらいの信号値を持っているかがすぐにわかってしまうということなのです!

言い換えると、見た目は数式で表されていてよくわからないディジタル信号 xn でも、z変換という魔法をかけるだけで、時間に対する信号値のグラフを簡単に書くことができるということです!

試しに例題を解いてみましょう。

 例題4 

ある数列 xn で表されるディジタル信号をz変換したところ、以下のようになった。4+2z1z2+z4

(1) 時刻 2Deltat における信号の値を答えなさい。
(2) ディジタル信号を縦軸を時刻、横軸を信号としたグラフで表現しなさい。

[解説4]

(1)

2Δt のときの信号は、z2 の係数部分に着目すればOK。係数は-1なので、信号の値は-1となる。

(2)

与えられた数列 xn のz変換の結果から、

  • 時刻 0 のときの信号の値:4
  • 時刻 Δt のときの信号の値:2
  • 時刻 2Δt のときの信号の値:-1
  • 時刻 3Δt のときの信号の値:0
    (忘れたり、-1にしないように注意!)
  • 時刻 4Δt のときの信号の値:1
  • 時刻 5Δt 以降の信号の値:0

となることがわかる。あとはこれをグラフにすればOK。

f:id:momoyama1192:20210508230809g:plain

6.さいごに

今回は、制御数学で頻出のz変換を数学的に説明していきました。

次回は、今回説明した公式を使って、実際にz変換や逆z変換を解く練習をしていきましょう!

*1:数列 xnn の関数 x(n) とみなすことで関数と名前をつけていると思ってください。

*2:説明のため、か図ではかなり大きめに刻んでいます

*3:例えば、z2 の項にある f(2Δt) は、時刻 2Δt における信号の値を示している

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

おすすめの記事