Convert transfer function from s domain to z^-1 domain
246 views (last 30 days)
Show older comments
I've tried to convert transfer function from s domain to z^-1 domain. I'm following one research paper and I can't get the same result. I've attached a screenshot of research paper and the code I've run to obtain transfer function.
The numerator should be 1.365 z^-1. It's a typo in the equation but in the simulink model it says 1.365 z^1.
>> Ts = 0.001
Ts =
1.0000e-03
>> num = [910]
num =
910
>> den = [0.0665e-2 1]
den =
0.0007 1.0000
>> sys = tf(num, den)
sys =
910
--------------
0.000665 s + 1
Continuous-time transfer function.
>> sys_z = c2d(sys, Ts)
sys_z =
707.7
----------
z - 0.2223
Sample time: 0.001 seconds
Discrete-time transfer function.
>> sys_DSP = filt(sys_z.Numerator, sys_z.Denominator, Ts)
sys_DSP =
707.7 z^-1
---------------
1 - 0.2223 z^-1
Sample time: 0.001 seconds
Discrete-time transfer function.
>>
0 Comments
Answers (2)
Paul
on 2 Aug 2021
c2d supports different methods. The "pole-zero mapping" is what c2d calls "matched." However the result using "matched" does not give the expected result:
Ts = 0.001;
hc = tf(910,[0.065e-2 1]);
hd = c2d(hc,Ts,'matched')
But this result appears to be correct insofar as pole zero mapping uses the relationhip z = exp(s*T)
[z,p,k] = zpkdata(hc);
exp(p{1}*Ts)
Maybe the authors were really using a much smaller sample time?
Ts = log(.9985)/p{1}
hd = c2d(hc,Ts,'matched');
hd.Variable = 'z^-1'
0 Comments
See Also
Categories
Find more on Switches and Breakers 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!