#### D.11.2.12 iostruct

Procedure from library `control.lib` (see control_lib).

Usage:
  iostruct( R ); R a module

Return:
  list L with entries: string s, intvec v, module P and module Q

Purpose:
  if R is the kernel-representation-matrix of some system, then we output a input-ouput representation Py=Qu of the system, the components that have been chosen as outputs(intvec v) and a comment s

Note:
  the procedure uses Bareiss algorithm

Example:

    LIB "control.lib";
    //Example Antenna
    ring r = (0, K1, K2, Te, Kp, Kc),(Dt, delta), (c,dp);
    module RR;
    RR =
    [Dt, -K1, 0, 0, 0, 0, 0, 0, 0],
    [0, Dt+K2/Te, 0, 0, 0, 0, -Kp/Te*delta, -Kc/Te*delta, -Kc/Te*delta],
    [0, 0, Dt, -K1, 0, 0, 0, 0, 0],
    [0, 0, 0, Dt+K2/Te, 0, 0, -Kc/Te*delta, -Kp/Te*delta, -Kc/Te*delta],
    [0, 0, 0, 0, Dt, -K1, 0, 0, 0],
    [0, 0, 0, 0, 0, Dt+K2/Te, -Kc/Te*delta, -Kc/Te*delta, -Kp/Te*delta];
    module R = transpose(RR);
    view(iostruct(R));
    ==> The following components have been chosen as outputs:
    ==>
    ==> 1,
    ==> 2,
    ==> 3,
    ==> 4,
    ==> 5,
    ==> 6
    ==>
    ==> Dt,(-K1)       ,0 ,0           ,0 ,0           ,
    ==> 0 ,Dt+(K2)/(Te),0 ,0           ,0 ,0           ,
    ==> 0 ,0           ,Dt,(-K1)       ,0 ,0           ,
    ==> 0 ,0           ,0 ,Dt+(K2)/(Te),0 ,0           ,
    ==> 0 ,0           ,0 ,0           ,Dt,(-K1)       ,
    ==> 0 ,0           ,0 ,0           ,0 ,Dt+(K2)/(Te)
    ==>
    ==> 0               ,0               ,0               ,
    ==> (-Kp)/(Te)*delta,(-Kc)/(Te)*delta,(-Kc)/(Te)*delta,
    ==> 0               ,0               ,0               ,
    ==> (-Kc)/(Te)*delta,(-Kp)/(Te)*delta,(-Kc)/(Te)*delta,
    ==> 0               ,0               ,0               ,
    ==> (-Kc)/(Te)*delta,(-Kc)/(Te)*delta,(-Kp)/(Te)*delta
    ==>

User manual for Singular version 4-0-3, 2016, generated by texi2html.