# Interconnecting descriptor system models

Building aggregate models by appending the inputs and outputs.`append`

Connecting models in parallel (also overloaded with`parallel`

).`+`

Connecting models in series (also overloaded with`series`

).`*`

Applying a static output feedback.`feedback`

Horizontal concatenation of descriptor system models (also overloaded with`horzcat`

).`[ * * ]`

Vertical concatenation of descriptor system models (also overloaded with`vertcat`

).`[ *; * ]`

`DescriptorSystems.append`

— Function`sys = append(systems...)`

Append the descriptor systems `systems`

by concatenating the input and output vectors of individual systems. This corresponds to the block diagonal concatenation of their transfer function matrices. Appending systems with constant matrices, vectors or scalars or with UniformScalings is also supported.

`DescriptorSystems.parallel`

— Function```
sys = parallel(sys1, sys2)
sys = sys1 + sys2
```

Connect the descriptor systems `sys1`

and `sys2`

in parallel such that `sys = sys1 + sys2`

. This coupling corresponds to the addition of their transfer function matrices. Parallel coupling of systems with constant matrices or vectors having the same row and column dimensions or with UniformScalings is also supported. Parallel coupling with a constant is equivalent to elementwise parallel coupling of the transfer function matrix with the constant.

`DescriptorSystems.series`

— Function```
sys = series(sys1, sys2)
sys = sys2*sys1
```

Connect the descriptor systems `sys1`

and `sys2`

in series such that `sys = sys2*sys1`

. This coupling corresponds to the multiplication of their transfer function matrices. Series coupling of systems with constant matrices and vectors having suitable dimensions or with UniformScalings is also supported. Series coupling with a constant is equivalent to elementwise multiplication of the transfer function matrix with the constant.

`DescriptorSystems.feedback`

— Function` syscl = feedback(sys, K, inp1, out1; negative = true)`

Build for a given descriptor system `sys`

with input vector `u`

and output vector `y`

and a static output feedback gain `K`

the closed-loop descriptor system `syscl`

is constructed corresponding to the static output feedback `u[inp] = -K*y[out] + v`

, where `inp`

and `out`

are are indices, vectors of indices, index ranges, `:`

or any combinations of them. Only distinct indices can be specified. If `negative = false`

, a positive feedback `u[inp] = K*y[out] + v`

is used.

`DescriptorSystems.horzcat`

— Function```
sys = horzcat(sys1,sys2)
sys = [sys1 sys2]
sys = horzcat(systems...)
```

Concatenate horizontally two systems `sys1`

and `sys2`

or several descriptor systems `systems...`

by concatenating the input vectors of individual systems. This corresponds to the horizontal concatenation of their transfer function matrices. Concatenation of systems with constant matrices, vectors, or scalars having the same row dimensions or with UniformScalings is also supported.

`DescriptorSystems.vertcat`

— Function```
sys = vertcat(sys1,sys2)
sys = [sys1; sys2]
sys = vertcat(systems...)
```

Concatenate vertically two descriptor systems `sys1`

and `sys2`

or several descriptor systems `systems...`

by concatenating the output vectors of individual systems. This corresponds to the vertical concatenation of their transfer function matrices. Concatenation of systems with constant matrices, vectors, or scalars having the same column dimensions or with UniformScalings is also supported.