Convert transfer function from s domain to z^-1 domain
16 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
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 Kommentare
Antworten (2)
Paul
am 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 Kommentare
Siehe auch
Kategorien
Mehr zu Filter Analysis finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!