## Documentation |

Create empty `iconnect` (interconnection)
objects

```
H = iconnect
```

Interconnection objects (class `iconnect`)
are an alternative to `sysic`, and are used to build
complex interconnections of uncertain matrices and systems.

An `iconnect` object has 3 fields to be set
by the user, `Input`, `Output` and `Equation`. `Input` and `Output` are `icsignal` objects,
while `Equation`.is a cell-array of equality constraints
(using `equate`) on `icsignal` objects.
Once these are specified, then the `System` property
is the input/output model, implied by the constraints in `Equation`.
relating the variables defined in `Input` and `Output`.

`iconnect` can be used to create the transfer
matrix `M` as described in the following figure.

Create three scalar `icsignal:` `r,
e` and `y`. Create an empty `iconnect` object, `M`.
Define the output of the interconnection to be `[e; y]`,
and the input to be `r`. Define two constraints among
the variables: `e = r-y`, and `y = (2/s)
e`. Get the transfer function representation of the relationship
between the input (`r`) and the output `[e;
y]`.

r = icsignal(1); e = icsignal(1); y = icsignal(1); M = iconnect; M.Input = r; M.Output = [e;y]; M.Equation{1} = equate(e,r-y); M.Equation{2} = equate(y,tf(2,[1 0])*e); tf(M.System)

The transfer functions from input to outputs are

s #1: ----- s + 2 2 #2: ----- s + 2

By not explicitly introducing `e`, this can
be done more concisely with only one equality constraint.

r = icsignal(1); y = icsignal(1); N = iconnect; N.Input = r; N.Output = [r-y;y]; N.Equation{1} = equate(y,tf(2,[1 0])*(r-y)); tf(N.System)

You have created the same transfer functions from input to outputs.

s #1: ----- s + 2 2 #2: ----- s + 2

You can also specify uncertain, multivariable interconnections
using `iconnect`. Consider two uncertain motor/generator
constraints among 4 variables `[V;I;T;W]`, `V-R*I-K*W=0`,
and `T=K*I`. Find the uncertain `2x2` matrix `B` so
that `[V;T] = B*[W;I]`.

R = ureal('R',1,'Percentage',[-10 40]); K = ureal('K',2e-3,'Percentage',[-30 30]); V = icsignal(1); I = icsignal(1); T = icsignal(1); W = icsignal(1); M = iconnect; M.Input = [W;I]; M.Output = [V;T]; M.Equation{1} = equate(V-R*I-K*W,iczero(1)); M.Equation{2} = equate(T,K*I); B = M.System UMAT: 2 Rows, 2 Columns K: real, nominal = 0.002, variability = [-30 30]%, 2 occurrences R: real, nominal = 1, variability = [-10 40]%, 1 occurrence B.NominalValue ans = 0.0020 1.0000 0 0.0020

A simple system interconnection, identical to the system illustrated
in the `sysic` reference pages.
Consider a three-input, two-output state-space matrix *T*,

which has internal structure

P = rss(3,2,2); K = rss(1,1,2); A = rss(1,1,1); W = rss(1,1,1); M = iconnect; noise = icsignal(1); deltemp = icsignal(1); setpoint = icsignal(1); yp = icsignal(2); rad2deg = 57.3 rad2deg = 57.3000 M.Equation{1} = equate(yp,P*[W*deltemp;A*K*[noise+yp(2);setpoint]]); M.Input = [noise;deltemp;setpoint]; M.Output = [rad2deg*yp(1);setpoint-yp(2)]; T = M.System; size(T) State-space model with 2 outputs, 3 inputs, and 6 states.

The syntax for `iconnect` objects and `icsignal`s
is very flexible. Without care, you can build inefficient (i.e., nonminimal)
representations where the state dimension of the interconnection is
greater than the sum of the state dimensions of the components. This
is in contrast to `sysic`. In `sysic`,
the syntax used to specify inputs to systems (the `input_to_ListedSubSystemName` variable)
forces you to include each subsystem of the interconnection only once
in the equations. Hence, interconnections formed with `sysic` are
componentwise minimal. That is, the state dimension of the interconnection
equals the sum of the state dimensions of the components.

Was this topic helpful?