Matlab transfer function problem

Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
3 replies · 2K views
MechatronO
Messages
30
Reaction score
1
I have a transfer function

L(s) = A(s)/B(s)

that I call Ls.

However, when defining

H(s)= L(s)/(1+L(s))

by

Code:
%%
Ls =
 
  -70.6s^2 - 2003 s + 3375
  --------------------------
   s^3 + 119.6 s^2 + 2806 s

%%

Hs = Ls / (1+Ls)

things go wild. The highest exponent power doubles or so and I get several extra poles or zeros. What I should get is

H(s) = A(s) / ( B(s)+A(s) )

which is the exact result. This I can achieve in MATLAB by

Code:
[As,Bs] = tfdata(Ls,'v');

Hs= tf(As,Bs+As)

and the result from this are exactly the expected.

However, why won't

Code:
 Hs = Ls / (1+Ls)

work?

Are matlabs routines that bad? Or am I doing something wrong?
 
on Phys.org
MechatronO said:
Code:
%%
Ls =
 
  -70.6s^2 - 2003 s + 3375
  --------------------------
   s^3 + 119.6 s^2 + 2806 s

%%
[/QUOTE]
This doesn't look like a valid Matlab statement to me. I would write it as 
Ls = ( -70.6s^2 - 2003 s + 3375 ) / ( s^3 + 119.6 s^2 + 2806 s );
(It presumes that s has already been defined earlier.)