Scilab Function
Last update : 12/01/2004

ssrand - random system generator

### Calling Sequence

  `sl=ssrand(nout,nin,nstate)`
  `[sl,U]=ssrand(nout,nin,nstate,flag)`

### Parameters

- `nout`: integer (number of output)
- `nin`: integer (number of input)
- `nstate`: integer (dimension of state-space)
- `flag`: list made of one character string and one or several integers
- `sl`: list (`syslin` list)
- `U`square `(nstate x nstate)` nonsingular matrix

### Description

`sl=ssrand(nout,nin,nstate)` returns a random strictly proper (`D=0`) state-space system of size `[nout,nint]` represented by a `syslin` list and with `nstate` state variables.

`[sl,U]=ssrand(nout,nin,nstate,flag)` returns a test linear system with given properties specified by `flag`. `flag` can be one of the following:

    flag=list('co',dim_cont_subs)
    flag=list('uo',dim_unobs_subs)
    flag=list('ncno',dim_cno,dim_ncno,dim_co,dim_nco)
    flag=list('st',dim_cont_subs,dim_stab_subs,dim_stab0)
    flag=list('dt',dim_inst_unob,dim_instb0,dim_unobs)
    flag=list('on',nr,ng,ng0,nv,rk)
    flag=list('ui',nw,nwu,nwui,nwuis,rk)

The complete description of the `Sys` is given in the code of the `ssrand` function (in `SCIDIR/macros/util`). For example with `flag=list('co',dim_cont_subs)` a non-controllable system is return and `dim_cont_subs` is the dimension of the controllable subspace of `Sys`. The character strings `'co','uo','ncno','st','dt','on','ui'` stand for "controllable", "unobservable", "non-controllable-non-observable", "stabilizable","detectable","output-nulling","unknown-input".

### Examples

    //flag=list('st',dim_cont_subs,dim_stab_subs,dim_stab0)
    //dim_cont_subs<=dim_stab_subs<=dim_stab0
    //pair (A,B) U-similar to:
    //    [*,*,*,*;     [*;
    //    [0,s,*,*;     [0;
    //A=  [0,0,i,*;   B=[0;
    //    [0,0,0,u]     [0]
    //
    // (A11,B1) controllable  s=stable matrix i=neutral matrix u=unstable matrix
    [Sl,U]=ssrand(2,3,8,list('st',2,5,5));
    w=ss2ss(Sl,inv(U)); //undo the random change of basis => form as above
    [n,nc,u,sl]=st_ility(Sl);n,nc

### See Also

`syslin`,