Hi guys
I have used the function
s=tf('s')
to ceate a transfer function, but I find that Matlab do not simplify the tf at all.
for example.
s=tf('s');
A=1/(1+s);B=A/(1+A);
the result is 1+s/(s^2+3*s+2)
What I want is 1/(2+s)
Anyone know that how to simplify the tf in Matlab?
Thank you!

1 comentario

Paul
Paul el 13 de Nov. de 2026 a las 22:16
s=tf('s');
A=1/(1+s); %B=A/(1+A);
B = feedback(A,1)
B =
1 ----- s + 2 Continuous-time transfer function.

Iniciar sesión para comentar.

 Respuesta aceptada

Thomas
Thomas el 25 de Abr. de 2012
Try
s=tf('s');
A=1/(1+s);B=A/(1+A);
minreal(B)

2 comentarios

tqy
tqy el 27 de Abr. de 2012
Thanks a lot.
But in another case, I have to set the tolerance so that I can get what I want.
I think Matlab only keeps the default effective bit of the a number.
Tim
Tim el 5 de Feb. de 2015
Looks like a solution to my problem, however I need to find variables from a rewritten tf.
I have a tf G like below
lsys = ss(A B C D); % were all matrices are 3x3
G = tf(lsys);
from which I am intersted in rewriting G(2,2)
G(2,2)=
1.422e-05 s + 4.696e-06
-----------------------
s^2 + 21.76 s + 1.216
into
a * (b*s + 1)
-----------------
(c*s +1)*(d*s+1)
to yield constants a b c d
MatLab does not accept
minreal(G(2,2));
any suggestions?

Iniciar sesión para comentar.

Más respuestas (1)

Artur Araujo
Artur Araujo el 14 de Nov. de 2016

1 voto

You could try H = zpk(G(2,2))

2 comentarios

Zuhair Abduljabbar
Zuhair Abduljabbar el 31 de En. de 2021
Thanks
Anish Mitra
Anish Mitra el 13 de Nov. de 2026 a las 15:52
In addition to this, you can set the DisplayFormat of the zpk model to 'timeconstant' which would show it in the format needed when displayed in the Command Window.
s = tf('s');
G = (1.422e-5*s + 4.696e-6)/(s^2 + 21.76*s + 1.216);
G_zpk = zpk(G);
G_zpk.DisplayFormat = 'timeconstant';
disp(G_zpk);
3.8618e-06 (1+3.028s) ----------------------- (1+0.04607s) (1+17.85s) Continuous-time zero/pole/gain model.
If you want to store the time constants in variables, you can use zpkdata to first extract the zeros and poles and the compute it using those.
[z,p,k] = zpkdata(G_zpk,'v');
tau_z = -1./z
tau_z = 3.0281
tau_p = -1./p
tau_p = 2×1
0.0461 17.8487
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
Note that for a general approach you will have to account for complex poles and zeros.

Iniciar sesión para comentar.

Categorías

Más información sobre MATLAB en Centro de ayuda y File Exchange.

Preguntada:

tqy
el 25 de Abr. de 2012

Editada:

el 14 de Nov. de 2026 a las 1:18

Community Treasure Hunt

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

Start Hunting!

Translated by