Dsp Using Matlab® - 5
-
Upload
api-3721164 -
Category
Documents
-
view
138 -
download
5
Transcript of Dsp Using Matlab® - 5
Lecture 5: Z-Transform
Mr. Iskandar Yahya
Prof. Dr. Salina A. Samad
Properties of z-TransformThe important properties of the z-transform:
1. Linearity
2. Sample shifting
3. Frequency shifting
4. Folding
5. Complex conjugation
6. Differentiation in the z-domain
212121 xx ROCROC:ROC)z(X)z(X)]n(x)n(x[z
xn ROC:ROC)z(Xz)]nn(x[z 0
0
abyscaledROC:ROC)a
z(X)]n(xa[z x
n
xROCinverted:ROC)z
(X)]n(x[z1
x*** ROC:ROC)z(X)]n(x[z
xROC:ROCdz
)z(dXz)]n(nx[z
Properties of z-TransformThe important properties of the z-transform:
7. Multiplication
8. Convolution
211
2121 2
1xx
c
ROCinvertedROC:ROCdvv)v/z(X)v(Xj
)]n(x)n(x[z
212121 xx ROCROC:ROC)z(X)z(X)]n(x*)n(x[z
Properties of z-TransformThe important properties of the z-transform:
7. Multiplication
8. Convolution
The time domain convolution transforms into a multiplication of two functions. We can use “conv” to implement the product of X1(z) and X2(z).
211
2121 2
1xx
c
ROCinvertedROC:ROCdvv)v/z(X)v(Xj
)]n(x)n(x[z
212121 xx ROCROC:ROC)z(X)z(X)]n(x*)n(x[z
Properties of z-TransformExample 1:
Let
Find
From definition of the z-transforms,
Hence
?)()()(
6543)(,432)(
213
3212
211
zXzXzX
zzzzXzzzX
}6,5,4,3{)(}4,3,2{)( 21 nxnx
x1 = [2,3,4]; x2 = [3,4,5,6];
x3 = conv(x1,x2)
x3 =
6 17 34 43 38 24
543213 24384334176 zzzzz)z(X
Properties of z-TransformExample 2:
We can use the “conv_m” function in to multiply two z-domain polynomials corresponding to noncausal sequences:
We have
Therefore X3(z) = 2z3 + 8z2 + 17z + 23 + 19z-1 + 15z-2
?)()()(
5342)(,32)(
213
122
11
zXzXzX
Find
zzzzXzzzX
}5,3,4,2{)(}3,2,1{)( 21 nxnx
x1 = [1,2,3]; n1 = [-1:1];
x2 = [2,4,3,5]; n2 = [-2:1];
[x3,n3] = conv_m(x1,n1,x2,n2)
x3 =
2 8 17 23 19 15
n3 =
-3 -2 -1 0 1 2
Properties of z-TransformTo divide one polynomial by another, we need an inverse
operation called deconvolution.In Matlab we use “deconv”, i.e. [p,r] = deconv(b,a) where we are
dividing “b” by “a” in a polynomial part “p” and a remainder “r”.Example,
We divide polynomial X3(z) in previous example by X1(z):
x3 = [6,17,34,43,38,24]; x1 = [2,3,4];
[x2, r] = deconv(x3,x1)
x2 =
3 4 5 6
r =
0 0 0 0 0 0
z-Transform Pairs
z-Transform PairsLet’s look at one example:
Determine the z-transform of )2()]2(3
cos[)5.0)(2()( )2( nunnnx n
5.0;0625.025.075.01
0625.05.025.0
0625.025.075.01
0625.05.025.0)
25.05.01
25.01()(
5.0;25.05.01
25.01
25.0)3cos5.0(21
)3cos5.0(1)](]
3cos[)5.0[(
1.4
;])](]
3cos[)5.0[(
[
)](]3
cos[)5.0([)(
)
4321
543
4321
4321
21
11
21
1
21
1
2
2
zzzzz
zzz
zzzz
zzzz
zz
z
dz
dzzXhence
zzz
z
zz
znunZ
tablefrom
ROCtheinchangenodz
nundZzz
propertyplaneztheinationdifferentitheapplying
nunnZzzX
propertyshiftsampletheapplyingsol
n
n
n
z-Transform PairsIn this example, we can see that the transform is of the form X(z) =
B(z)/A(z).We can use the coefficients of B(z) and A(z) as the “b” and “a” in the
“filter” routine and excite this routine with an impulse sequence, δ(n), where Z[δ(n)] = 1. The output of “filter” will be x(n).
This is a numerical approach of computing the inverse z-transform.We can compare this output with the given x(n) to verify our z-transform
X(z) is indeed the transform of x(n).
z-Transform PairsThe Matlab inplementation:
b= [0,0,0,0.25,-0.5,0.0625]; a = [1,-1,0.75,-0.25,0.0625];
[delta,n] = impseq(0,0,10)
delta =
1 0 0 0 0 0 0 0
n =
0 1 2 3 4 5 6 7
x = filter(b,a,delta) % check sequence
x =
Columns 1 through 7
0 0 0 0.2500 -0.2500 -0.3750 -0.1250
Column 8
0.0781
x = [(n-2).*(1/2).^(n-2).*cos(pi*(n-2)/3)].*stepseq(2,0,7) %original sequence
x =
Columns 1 through 7
0 0 0 0.2500 -0.2500 -0.3750 -0.1250
Column 8
0.0781
z-Transform InversionA Matlab function “residuez” is available to compute
the residue part and the direct (or polynomial) terms of a rational function in z-1.
Let
Therefore we can find the Residues (R), Poles (p) and Direct terms (C) of X(z).
NM
k
kk
N
k k
k
xxNN
MM
zCzp
R
RzR;za....za
zb....zbb)z(X
011
11
110
1
1
[R, p, C] = residuez(b,a)
z-Transform InversionLet’s look at an example:Consider the rational function:
First rearrange X(z) so that it is a fucntion in ascending powers of z-1:
Use matlab:
143)(
2
zz
zzX
21
1
22
2
143)143()(
zz
z
zzz
zzzX
b = [0,1]; a = [3,-4,1];
[R,p,C] = residuez(b,a)
R =
0.5000
-0.5000
p =
1.0000
0.3333
C =
[]
z-Transform InversionWe obtain:
To convert back to the rational function form:
So that we get:
11
311
21
12
1
zz)z(X
[b,a] = residuez(R,p,C)
b =
0.0000
0.3333
a =
1.0000
-1.3333
0.3333
21
1
31
341
31
zz
z)z(X
z-Transform InversionAnother example, compute the inverse z-
transform:90
901901
1121
.z,)z.()z.(
)z(X
b = 1; a = poly([0.9,0.9,-0.9])
a =
1.0000 -0.9000 -0.8100 0.7290
[R,p,c] = residuez(b,a)
R =
0.2500 + 0.0000i
0.5000 - 0.0000i
0.2500
p =
0.9000 + 0.0000i
0.9000 - 0.0000i
-0.9000
c = []
z-Transform InversionUsing table 4.1:
Matlab verification:
)n(u).(.)n(u).)(n(.
.)n(u).(.)n(x nnn 902501901
90
5090250 1
[delta,n] = impseq(0,-1,7);
x = filter(b,a,delta) % check sequence
x =
Columns 1 through 7
0 1.0000 0.9000 1.6200 1.4580 1.9683
1.7715
Columns 8 through 9
2.1258 1.9132
x = (0.25)*(0.9).^n.*stepseq(0,-1,7) + (0.5)*(n+1).*(0.9).^n.*stepseq(-1,-1,7) + (0.25)*(-0.9).^n.*stepseq(0,-1,7) % answer sequence
x =
Columns 1 through 7
0 1.0000 0.9000 1.6200 1.4580 1.9683
1.7715
Columns 8 through 9
2.1258 1.9132
z-Transform InversionAnother Example. Determine the inverse z-
transform of
so that the resulting sequence is causal and contains no complex numbers.We will have to find the poles of X(z) in the polar
form to determine the ROC of the causal sequence.
21
1
6402801
2401
z.z.
z.)z(X
b = [1,0.4*sqrt(2)]; a=[1,-0.8*sqrt(2),0.64];
[R,p,C] = residuez(b,a)
R = 0.5000 - 1.0000i
0.5000 + 1.0000i
p = 0.5657 + 0.5657i
0.5657 - 0.5657i
C = []
Mp=abs(p) % pole magnitudes
Ap=angle(p)/pi % pole angles in pi units
Mp = 0.8000 0.8000
Ap = -0.2500 0.2500
z-Transform Inversion
From the Matlab calculation, we have:
And from table 4.1 we have:
sequencesidedrighttodue.z
,ze.
j.
ze.
j.)z(X
jj
80
801
50
801
50
1414
)n(u)]nsin()n[cos(.
)n(u)]ee(j)ee(.[.
)n(ue.)j.()n(ue.)j.()n(x
n
njnjnjnjn
njnnjn
42480
5080
80508050
4444
44
z-Transform InversionMatlab Verification:
[delta,n] = impseq(0,0,6);
x = filter(b,a,delta) % check sequence
x =
1.0000 1.6971 1.2800 0.3620 -0.4096 -0.6951 -0.5243
x = ((0.8).^n).*(cos(pi*n/4)+2*sin(pi*n/4)) % answer sequence
x =
1.0000 1.6971 1.2800 0.3620 -0.4096 -0.6951 -0.5243
Systems in The z-DomainTo determine zeros and poles of a rational H(z), we can use
“roots” for both the numerator and denominator. (“poly” is the inverse of “root”)
We can plot these roots in a pole-zero plot using “zplane(b,a)”. This will plot poles and zeros given the numerator row/coloumn vector “b” and the denominator row/coloumn vector “a”. (H(z) = B(z)/A(z))
We can calculate the magnitude and the phase responses of our system using “freqz”:
[H,w] = freqz(b,a,N) – Returns the N-point frequency vector “w” and the N-point complex frequencey response vector “H”.
Systems in The z-DomainSecond form:
[H,w] = freqz(b,a,N,’whole’) – uses N points around the whole unit circle for computation.
Another form:H = freqz(b,a,w) – it returns the frequency response at frequencies designated in vector “w”, normally between 0 and π.
Example:Given a causal system
y(n) = 0.9y(n-1) + x(n)a.Find H(z) and sketch its pole-zero plotb.Plot |H(ejw)| and <H(ejw).c. Determine the impulse response h(n)
Systems in The z-DomainSolution using Matlab:
a. use “zplane” function -
We specified b=[1,0] instead of b=1 because the “zplane” function assumes that scalars are zeros and poles.
>> b = [1,0]; a = [1,-0.9];>> zplane(b,a);>>title(‘Pole-Zero Plot’)
-1 -0.5 0 0.5 1
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
Real Part
Imag
inar
y P
art
Pole-Zero Plot
0 0.9
Systems in The z-DomainB. To plot the magnitude and phase response, we
use “freqz” function:>> [H,w] = freqz(b,a,100);>> magH = abs(H); phaH = angle(H);>> >> subplot(2,1,1); plot(w/pi,magH); grid>> xlabel('frequency in pi units'); ylabel('Magnitude');>> title('Magnitude Response')>> subplot(2,1,2); plot(w/pi,phaH/pi); grid>> xlabel('Frequency in pi units'); ylabel('Phase in pi units');>> title('Phase Response')
Systems in The z-DomainB. The plots:
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 10
2
4
6
8
10
12
frequency in pi units
Ma
gn
itud
e
Magnitude Response
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-0.4
-0.3
-0.2
-0.1
0
Frequency in pi units
Ph
ase
in p
i un
its
Phase Response
Systems in The z-DomainB. Points to note:
We see the plots, the points computed is between 0<w<0.99π
Short at w = π.To overcome this, use the second form of “freqz”:
>> [H,w] = freqz(b,a,200,’whole’);>> magH = abs(H(1:101)); phaH = angle(H(1:101));
Now the 101st element of the array H will correspond to w = π.
Similar result can be obtained using the third form: >> w = [0:1:100]*pi/100;
>> H = freqz(b,a,w);>> magH = abs(H); phaH = angle(H);
Try this
Systems in The z-DomainB. Points to note:
Also, note that in the plots we divided the “w” and “phaH” arrays by π so that the plot axes are in the units of π and easier to read
This is always a recommended practice!
END!!!!