# Singular

#### 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 ==> ```