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.

 Risposta accettata

Sai Sri Pathuri
Sai Sri Pathuri il 28 Ago 2019

0 voti

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

2 Commenti

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)
assume(t>=0);
Y(s) = laplace(y);
% Returns 'y(t)' as expected
ilaplace(Y)
% Returns 'diff(y) + y(0) delta(t)' as expected
ilaplace(s*Y)
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
iztrans(X)
% Returns 'iztrans(ztrans(x(n),n,z)/z,z,n)'
% but I expected 'x(n-1)'
iztrans(X/z)
Thanks
Walter Roberson
Walter Roberson il 28 Ago 2019
iztrans(X/z) has to worry about the z == 0 case.

Accedi per commentare.

Più risposte (0)

Prodotti

Release

R2019a

Community Treasure Hunt

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

Start Hunting!

Translated by