Scilab Function
Last update : 16/12/2004

syslin - linear system definition

### Calling Sequence

  `[sl]=syslin(dom,A,B,C [,D [,x0] ])`
  `[sl]=syslin(dom,N,D)`
  `[sl]=syslin(dom,H)`

### Parameters

- `dom`: character string (`'c'`, `'d'`), or `[]` or a scalar.
- `A,B,C,D`: matrices of the state-space representation (`D` optional with default value zero matrix). For improper systems `D` is a polynomial matrix.
- `x0`: vector (initial state; default value is `0`)
- `N, D`: polynomial matrices
- `H`: rational matrix or linear state space representation
- `sl`: tlist ("`syslin`" list) representing the linear system

### Description

`syslin` defines a linear system as a list and checks consistency of data.

`dom` specifies the time domain of the system and can have the following values:

`dom='c'` for a continuous time system, `dom='d'` for a discrete time system, `n` for a sampled system with sampling period `n` (in seconds).

`dom=[]` if the time domain is undefined

State-space representation:

    sl=syslin(dom,A,B,C [,D [,x0] ])

represents the system :

          s x  = A*x + B*u
            y  = C*x + D*u
          x(0) = x0

The output of `syslin` is a list of the following form: `sl=tlist(['lss','A','B','C','D','X0','dt'],A,B,C,D,x0,dom)` Note that `D` is allowed to be a polynomial matrix (improper systems).

Transfer matrix representation:

    sl=syslin(dom,N,D)
    sl=syslin(dom,H)

The output of `syslin` is a list of the following form : `sl=tlist(['r','num','den','dt'],N,D,dom)` or `sl=tlist(['r','num','den','dt'],H(2),H(3),dom)`.

Linear systems defined as `syslin` can be manipulated as usual matrices (concatenation, extraction, transpose, multiplication, etc) both in state-space or transfer representation.

Most of state-space control functions receive a `syslin` list as input instead of the four matrices defining the system.

### Examples

    A=[0,1;0,0];B=[1;1];C=[1,1];
    S1=syslin('c',A,B,C)   //Linear system definition
    S1("A")    //Display of A-matrix
    S1("X0"), S1("dt") // Display of X0 and time domain
    s=poly(0,'s');
    D=s;
    S2=syslin('c',A,B,C,D)
    H1=(1+2*s)/s^2, S1bis=syslin('c',H1)
    H2=(1+2*s+s^3)/s^2, S2bis=syslin('c',H2)
    S1+S2
    [S1,S2]
    ss2tf(S1)-S1bis
    S1bis+S2bis
    S1*S2bis
    size(S1)

### See Also

`tlist`, `lsslist`, `rlist`, `ssrand`, `ss2tf`, `tf2ss`, `dscr`, `abcd`,