MATLAB Answers

Inverse z-Transform

30 views (last 30 days)
I'm trying to compute the inverse Z-transform of and expecting to obtain as result.
Here is the code I'm using:
syms z n x(n) X(z)
assume(n>=0 & in(n,'integer'));
X(z) = ztrans(x)
y = iztrans(X/z)
The answer I get is (same result using simplify):
Where am I wrong ?
Thanks in advance.


Sign in to comment.

Accepted Answer

Sai Sri Pathuri
Sai Sri Pathuri on 28 Aug 2019
You are using syms function to create the functions x(n) and X(z). When you go through the documentation of syms function, you can find that you are just creating symbols for the functions, but not defining or assigning them to any symbolic expressions. This might be the reason why you are not getting the expected result.
The ztrans function is not calculating the z-transform of the function x(n) because it is not defined, or it is abstract.
You may use the following link to refer about creation of symbolic functions using syms function


Angelo Cacini
Angelo Cacini on 28 Aug 2019
Dear Sai, many thanks for your answer and your time.
I'm not assigning the body of the functions but just the relationship between and .
I've tried the following (similar) code in the Laplace domain, and it worked as expected.
syms s t y(t) Y(s)
Y(s) = laplace(y);
% Returns 'y(t)' as expected
% Returns 'diff(y) + y(0) delta(t)' as expected
I expected a similar behavior also for Z-transform (see below).
syms z n x(n) X(z)
assume(n>=0 & in(n,'integer'));
% This express the relationship between x(n) -> X(z)
X(z) = ztrans(x)
% Returns 'x(n)' as expected
% Returns 'iztrans(ztrans(x(n),n,z)/z,z,n)'
% but I expected 'x(n-1)'
Walter Roberson
Walter Roberson on 28 Aug 2019
iztrans(X/z) has to worry about the z == 0 case.

Sign in to comment.

More Answers (0)

Sign in to answer this question.