How to get z transfer function from difference equation?
14 views (last 30 days)
Show older comments
Brendan Finch
on 14 Dec 2015
Answered: Yash Sharma
on 6 Aug 2021
I have the difference equation
y(k) == (4*y(k - 1))/5 + (2*u(k))/5
and would like to get the transfer function
0.4*z
Gz(z)= -------
z-0.8
There are two issues. If I use vpa() to get
y(k) == 0.8*y(k - 1) + 0.4*u(k)
ztrans throws this error:
Error using symengine
The 'List' option is not allowed for input of this type.
Error in transform (line 74)
F = mupadmex('symobj::vectorizeSpecfunc', f.s, x.s, w.s, trans_func,
'infinity');
Error in sym/ztrans (line 28)
F = transform('ztrans', 'n', 'z', 'w', f, varargin{:});
Error in drt (line 31)
sys = ztrans(discrete_eqn,k,z)
but even if I don't use vpa(), ztrans(eqn,k,z) just gives the following output:
ztrans(y(k) == (4*y(k - 1))/5 + (2*u(k))/5, k, z)
Why doesn't it replace y(k-1) with 1/z*ztrans(y(k)) etc?
0 Comments
Accepted Answer
Vidya Viswanathan
on 22 Dec 2015
The function "ztrans" returns the Z-transform of a symbolic expression/symbolic function with respect to the transformation index at a specified point. For example, the line of code
ztrans(f,trans_index,eval_point)
computes the Z-transform of f with respect to trans_index at point eval_point. For a given difference equation, say, y(n)=0.8y(n-1)+0.4u(n), the Z-transform can be computed as follows:
syms y(n) z;
eq=y(n)-0.8*y(n-1)-0.4*heaviside(n);
Zeq=ztrans(eq,n,z)
The output of the above is as follows:
Zeq =
ztrans(y(n), n, z) - 2/(5*(z - 1)) - (4*ztrans(y(n), n, z))/(5*z) - (4*y(-1))/5 - 1/5
In this case, the Z-transform of y(n-1) is correctly replaced by (1/z)*ztrans(y(n)).
Refer to the following link for more information about the computation of Z-Transforms using MATLAB:
0 Comments
More Answers (1)
Yash Sharma
on 6 Aug 2021
Zeq =
ztrans(y(n), n, z) - 2/(5*(z - 1)) - (4*ztrans(y(n), n, z))/(5*z) - (4*y(-1))/5 - 1/5
0 Comments
See Also
Categories
Find more on Calculus 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!