How to simplify the discrete time tf?

6 次查看(过去 30 天)
I have a code given below. Initially I have used the function s=tf('s') to ceate a transfer function in continous domain. Then I convert it in to discrete domain using c2d function. I want to find two TF, STF and NTF from the discrete domain. But the STF I am getting is not the simplified one. But for NTF i get the simplified version.
For STF I should get (0.02503z2+0.1001z+0.02503)/(z3-4.4625z2+5.4739z-2.16116)
But I am getting (0.02503z5+0.02503z4-0.2002z3+0.2002z2-0.02503z-0.02503)/(z6-7.463z5+21.86z4-32.97z3+27.37z2-11.96z+2.16116)
I used simplify(STF) - doesnt work
I used simplifyFraction(STF) - Throwed error "Undefined function 'simplifyFraction' for input arguments of type 'tf'".
I used minreal(STF) - doesnt work. I think minreal is for continous time signals and doesnot work for DT TF.
Please help me how to simplify the DT TF STF.
clc
clear
close
fs=6e6;
b1=0.8076;
a1=-0.8076;
a2=-2.7856;
a3=-9.9000;
c1=1.7166;
c2=0.8332;
c3=1;
s = tf('s');
Kq=0.13;
%Forward path gain
Lo=(b1*c1*c2*c3*(fs^3))/(s^3);
%Feedback path gain
L11=(a1*c1*c2*c3*(fs^3))/(s^3);
L12=(a2*c2*c3*(fs^2))/(s^2);
L13=(a3*c3*fs)/s;
%Total Feedback path gain using superposition
L1=L11+L12+L13;
%CT to DT transfer
Loz = c2d(Lo,1/fs,'ZOH');
L1z = c2d(L1,1/fs,'ZOH');
FF=Loz*Kq;
FB=1+L1z*Kq;
% STF = (Loz*Kq)/(1+(L1z*Kq));
% NTF = 1/(1+(L1z*Kq));
STF=FF/FB;
NTF=1/FB;

回答(1 个)

Teo
Teo 2024-9-5
编辑:Teo 2024-9-5
Try to type "zpk(L1z)" for example in the command window once you ran your project, you should get a simplified discrete time function

类别

Help CenterFile Exchange 中查找有关 Networks 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by