How to simplify the discrete time tf?

5 visualizzazioni (ultimi 30 giorni)
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;

Risposte (0)

Community Treasure Hunt

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

Start Hunting!

Translated by