Inverse Z-Transform of F(z) How to set ROC?

8 views (last 30 days)
Jason
Jason on 25 Oct 2019
Edited: Paul on 15 Jan 2023
The same F(z) expression have different discrete sequence when they have different ROC, How do i set the ROC in following expression when calling iztrans? like 0.8<|z|<1.25
syms n z;
h=1/((1-0.8*z^(-1))*(1-0.8*z));
r=iztrans(h,z,n)

Answers (1)

Paul
Paul on 11 Jan 2023
Edited: Paul on 15 Jan 2023
No, we can't specify the ROC for iztrans, which always assumes the time domain sequence is causal. Same issue with ilaplace.
However, we can use z-transform properties to obtain the desired result
syms n integer
syms z;
Define the discrete time unit step function (assumes default sympref)
u(n) = kroneckerDelta(n)/2 + heaviside(n);
Define H(z)
H(z) = 1/((1-0.8*z^(-1))*(1-0.8*z)) % ROC: 0.8 < |z| < 1.25
H(z) = 
Partial fraction expansion of H(z)
H(z) = partfrac(H(z))
H(z) = 
c = children(H(z));
H1(z) = c{1}
H1(z) = 
H2(z) = c{2}
H2(z) = 
Based on the ROC, we know that H2(z) with a pole at z = 0.8 that is inside the ROC corresponds to a right-sided, causal sequence. We can use iztrans directly
h2(n) = iztrans(H2(z))*u(n);
Based on the ROC, we know that H1(z) with a pole at z = 1.25 that is outside the ROC corresponds to a left-sided, noncausal sequence.
Define w[n] = h1[-n]. w[n] is right-sided and causal, and its z-transform is
W(z) = H1(1/z); % ROC |z| > 1.25
Get w[n]
w(n) = iztrans(W(z),z,n)*u(n);
Then h1[n] must be
h1(n) = w(-n);
Therefore h[n] is
h(n) = h1(n) + h2(n)
h(n) = 
Plot h[n] for some values of n
nval = -10:10;
figure
stem(nval,h(nval))
Had we done this by hand using z-transform tables, we'd get
hbyhand(n) = 25/9*( (4/5)^n*u(n) + (5/4)^(n)*u(-n-1) )
hbyhand(n) = 
It doesn't look like the same answer, but we can make it look closer:
rewrite(h(n),'piecewise')
ans = 
rewrite(hbyhand(n),'piecewise')
ans = 
Verify these are actually the same signals
simplify(rewrite(h(n),'piecewise') - rewrite(hbyhand(n),'piecewise'))
ans = 

Categories

Find more on Measurements and Feature Extraction in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!