ztrans doesnt work with transfer function
6 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Josip Juros
el 5 de Nov. de 2019
Comentada: Star Strider
el 5 de Nov. de 2019
I am struggling with some tasks I was given. I have a continuous transfer function. and I have to calculate the dicrete transfer function using the Z transformation, ZOH method, and backward euler.
denominator = [(1/(w_n*w_n)), (2*zeta)/w_n, 1];
numerator = K;
% a)
Gs = tf(numerator, denominator);
Gz = tf(numerator, denominator, Ts);
G_dis = ztrans(Gs) % THIS DOESNT WORK
figure;
pzmap(Gz);
% b)
G_zoh = c2d(Gs, Ts);
figure;
pzmap(G_zoh);
This is what I have so far... the main problem I have is that ztrans(Gs) isnt working for me.... saying it cant work with tf input types. But that is the way I should be doing it in my lectures It says G(z) = Z{G(s)} . So I am a bit lost bc what I have only switches s for z and not z transform. whilst looking online I found that ztrans takes in ztrans(f) f being a function or symbolic expression to be transformed so why doesnt it work with transfer functions?
I need help on how to use z transform on transfer functions.
0 comentarios
Respuesta aceptada
Star Strider
el 5 de Nov. de 2019
The ztrans function is part of the Symbolic Math Toolbox. You are mixing Control System Toolbox and Symbolic Math Toolbox objects in your code, so you need to use the appropriate conversion functions to make them compatible.
Try this:
syms t z
K = 10;
w_n = 0.42;
zeta = 0.5;
Ts = 0.01;
denominator = [(1/(w_n*w_n)), (2*zeta)/w_n, 1]; % Define As A Numeric Vector
numerator = K; % Define As A Numeric Scalar
% a)
Gs = tf(numerator, denominator);
Gz = tf(numerator, denominator, Ts);
G_dis = ztrans(poly2sym(Gs.Numerator{:})) % Use Appropriate Functions To Convert To Symbolic Object
figure;
pzmap(Gz);
% b)
G_zoh = c2d(Gs, Ts);
figure;
pzmap(G_zoh);
producing:
G_dis =
(10*z)/(z - 1)
and the plots.
Experiment to get different results.
2 comentarios
Star Strider
el 5 de Nov. de 2019
As always, my pleasure!
I doubt any MATLAB built-in function would do a backward euler discretization. You would likely have to write that code.
Más respuestas (0)
Ver también
Categorías
Más información sobre Calculus en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!