# ss2tf() Acting Oddly

5 views (last 30 days)
Daniel Gelman on 24 Aug 2016
Answered: Jose Lara on 31 Aug 2016
I am constructing a few transfer functions and I believe this the output is very wrong. I am not expecting the numerator and denominator to be the same. As expected B is a 'tf' (transfer function) but for some reason F defaulted to 'ss' (solid-state representation).
s = tf('s');
B = 0.05/(0.0303*s+1);
F = (1+B)/(1+(B*exp(-0.1*s)));
[num,den] = ss2tf(F.a,F.b,F.c,F.d)
Fsys = tf(num,den)
Output:
num =
1.0e+03 *
0.001000000000000 0.067656765676568 1.143678724308074
den =
1.0e+03 *
0.001000000000000 0.067656765676568 1.143678724308074
Fsys =
s^2 + 67.66 s + 1144
--------------------
s^2 + 67.66 s + 1144
Continuous-time transfer function.

Jose Lara on 31 Aug 2016
You are trying to create an irrational transfer function. System interconnections using internal delays can only be represented in state-space, that is why F is defaulted to state-space. Try creating the system using only one equation by simplifying F and then using Pade approximation for the transport delays. Try the following steps:
s = tf('s');
Fs = ((0.0303*s + 1.05)/(0.0303*s+1+0.05*exp(-0.1*s)));
[num,den] = ss2tf(F.a,F.b,F.c,F.d);
Fsys = tf(num,den);