ssrand random system generator

## Syntax

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

## Arguments

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 `SCI/modules/cacsd/macros/`). 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