Convert transfer function from s domain to z^-1 domain

조회 수: 175 (최근 30일)
skela
skela 2021년 8월 2일
답변: mmbaka douglas 2023년 9월 11일
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.
>>

답변 (2개)

Paul
Paul 2021년 8월 2일
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')
hd = 714.6 ---------- z - 0.2147 Sample time: 0.001 seconds Discrete-time transfer function.
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)
ans = 0.2147
Maybe the authors were really using a much smaller sample time?
Ts = log(.9985)/p{1}
Ts = 9.7573e-07
hd = c2d(hc,Ts,'matched');
hd.Variable = 'z^-1'
hd = 1.365 z^-1 --------------- 1 - 0.9985 z^-1 Sample time: 9.7573e-07 seconds Discrete-time transfer function.

mmbaka douglas
mmbaka douglas 2023년 9월 11일
how to convert z dormain to s dormain F = 1/(Z -5)^2

카테고리

Help CenterFile Exchange에서 Switches and Breakers에 대해 자세히 알아보기

제품


릴리스

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by