Matlab transfer function problem

Click For Summary

Discussion Overview

The discussion revolves around a problem encountered while using MATLAB to define and manipulate transfer functions. Participants explore the behavior of a specific transfer function and its derived form, questioning the results obtained through MATLAB's syntax and routines.

Discussion Character

  • Technical explanation, Debate/contested, Mathematical reasoning

Main Points Raised

  • One participant describes a transfer function L(s) and its derived function H(s) but notes unexpected behavior when calculating H(s) using MATLAB syntax.
  • Another participant questions whether 's' is defined as a vector, suggesting a potential misunderstanding in the context of MATLAB's operations.
  • A third participant clarifies that 's' is defined as a transfer function using the command tf('s').
  • A later reply critiques the initial MATLAB statement for not being valid syntax, suggesting a corrected form for defining Ls that includes proper division.

Areas of Agreement / Disagreement

Participants express differing views on the validity of the MATLAB syntax used and the resulting behavior of the transfer functions. There is no consensus on whether the issue lies with MATLAB's routines or the user's implementation.

Contextual Notes

Participants have not reached a resolution regarding the underlying cause of the unexpected results in MATLAB, and there are assumptions about the definitions and syntax that remain unverified.

Who May Find This Useful

Individuals working with MATLAB for control systems, particularly those dealing with transfer functions and seeking to understand syntax and behavior in MATLAB's computational environment.

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?
 
Physics news on Phys.org
Is s a vector?
 
No,

s= tf('s');
 
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.)
 

Similar threads

  • · Replies 8 ·
Replies
8
Views
3K
  • · Replies 1 ·
Replies
1
Views
1K
Replies
1
Views
2K
  • · Replies 11 ·
Replies
11
Views
4K
  • · Replies 3 ·
Replies
3
Views
2K
  • · Replies 2 ·
Replies
2
Views
6K
  • · Replies 3 ·
Replies
3
Views
2K
  • · Replies 40 ·
2
Replies
40
Views
6K
  • · Replies 1 ·
Replies
1
Views
2K
Replies
1
Views
2K