SystemsConnectionsModel[{sys1,sys2,…},conxs,ins,outs]
gives a model with inputs ins and outputs outs obtained by connecting the systems models sysi using connections conxs.
SystemsConnectionsModel
SystemsConnectionsModel[{sys1,sys2,…},conxs,ins,outs]
gives a model with inputs ins and outputs outs obtained by connecting the systems models sysi using connections conxs.
Details and Options
- The systems model sysi can be a TransferFunctionModel, StateSpaceModel, AffineStateSpaceModel, NonlinearStateSpaceModel or another SystemsConnectionsModel.
- The p
input or output of sysi is referred to by the integer pair {i,p}. - Each connection in conxs must be specified as {i,p}->{j,q}.
- Each input and output in ins and outs must be specified as {i,p}.
Examples
open all close allBasic Examples (3)
{Subscript[sys, 1], Subscript[sys, 2]} = {StateSpaceModel[{{{0, 1}, {-Subscript[α, 0], -Subscript[α, 1]}},
{{0}, {1}}, {{Subscript[β, 0], Subscript[β, 1]}}, {{0}}},
SamplingPeriod -> None, SystemsModelLabels -> None], StateSpaceModel[{{{0, 1, 0}, {0, 0, 1}, {-Subscript[a, 0],
-Subscript[a, 1], -Subscript[a, 2]}}, {{0}, {0}, {1}},
{{Subscript[b, 0], Subscript[b, 1], Subscript[b, 2]}},
{{0}}}, SamplingPeriod -> None, SystemsModelLabels -> None]};
sys = SystemsConnectionsModel[{Subscript[sys, 1], Subscript[sys, 2]}, {{1, 1} -> {2, 1}}, {{1, 1}}, {{2, 1}}]{cp, Subscript[sys, 1], Subscript[sys, 2]} = {StateSpaceModel[{{}, {}, {}, {{1, -1}}}, SamplingPeriod -> None, SystemsModelLabels -> None], StateSpaceModel[{{{0, 1}, {-Subscript[α, 0], -Subscript[α, 1]}},
{{0}, {1}}, {{Subscript[β, 0], Subscript[β, 1]}}, {{0}}},
SamplingPeriod -> None, SystemsModelLabels -> None], StateSpaceModel[{{{0, 1, 0}, {0, 0, 1}, {-Subscript[a, 0],
-Subscript[a, 1], -Subscript[a, 2]}}, {{0}, {0}, {1}},
{{Subscript[b, 0], Subscript[b, 1], Subscript[b, 2]}},
{{0}}}, SamplingPeriod -> None, SystemsModelLabels -> None]};
sys = SystemsConnectionsModel[{cp, Subscript[sys, 1], Subscript[sys, 2]}, {{1, 1} -> {2, 1}, {2, 1} -> {3, 1}, {3, 1} -> {1, 2}}, {{1, 1}}, {{2, 1}}]{cp, Subscript[sys, 11], Subscript[sys, 12], Subscript[sys, 2]} = {TransferFunctionModel[{{{1, -1}}, 1}, ], TransferFunctionModel[{{{s + Subscript[β, 0]}},
s + Subscript[α, 0]}, s], TransferFunctionModel[{{{b + s}}, a + s},
s], TransferFunctionModel[{{{1}}, s*α}, s]};
Subscript[sys, 1] = SystemsConnectionsModel[{cp, Subscript[sys, 11], Subscript[sys, 12]}, {{1, 1} -> {2, 1}, {2, 1} -> {3, 1}, {3, 1} -> {1, 2}}, {{1, 1}}, {{2, 1}}]sys = SystemsConnectionsModel[{Subscript[sys, 1], Subscript[sys, 2]}, {{1, 1} -> {2, 1}}, {{1, 1}}, {{2, 1}}]Scope (6)
Connect systems of the same kind:
{Subscript[sys, 1], Subscript[sys, 2]} = {TransferFunctionModel[{{{1}}, s*α}, s], TransferFunctionModel[{{{b + s}}, a + s},
s]};
sys = SystemsConnectionsModel[{Subscript[sys, 1], Subscript[sys, 2]}, {{1, 1} -> {2, 1}}, {{1, 1}}, {{2, 1}}]Connect systems of different kinds:
{Subscript[sys, 1], Subscript[sys, 2], Subscript[sys, 3]} = {StateSpaceModel[{{{Subscript[a, 11], Subscript[a, 12]},
{Subscript[a, 21], Subscript[a, 22]}},
{{Subscript[b, 11]}, {Subscript[b, 21]}},
{{Subscript[c, 11], Subscript[c, 12]}}, {{0}}}, SamplingPeriod -> None,
SystemsModelLabels -> None], TransferFunctionModel[{{{k}}, s + α}, s], AffineStateSpaceModel[{{Subscript[x, 1]^2, -Subscript[x, 1] +
Subscript[x, 2]}, {{0}, {1}},
{Subscript[x, 1]*Subscript[x, 2]}, {{0}}},
{Subscript[x, 1], Subscript[x, 2]}, {u}, {Automatic},
Automatic, SamplingPeriod -> None]};
sys = SystemsConnectionsModel[{Subscript[sys, 1], Subscript[sys, 2], Subscript[sys, 3]}, {{1, 1} -> {2, 1}, {2, 1} -> {3, 1}}, {{1, 1}}, {{3, 1}}]Connect discrete-time systems:
{Subscript[sys, 1], Subscript[sys, 2], Subscript[sys, 3]} = {TransferFunctionModel[{{{b + z}}, a + z},
z, SamplingPeriod -> T], TransferFunctionModel[{{{B + z}}, A + z},
z, SamplingPeriod -> T], TransferFunctionModel[{{{z + β}}, z + α},
z, SamplingPeriod -> T]};
sys = SystemsConnectionsModel[{Subscript[sys, 1], Subscript[sys, 2], Subscript[sys, 3]}, {{1, 1} -> {2, 1}, {2, 1} -> {3, 1}}, {{1, 1}}, {{3, 1}}]{Subscript[sys, 1], Subscript[sys, 2], Subscript[sys, 3]} = {TransferFunctionModel[{{{Subscript[α, 11], Subscript[α, 12]},
{Subscript[α, 21], Subscript[α, 22]}},
{{s + Subscript[β, 11], s +
Subscript[β, 12]}, {s + Subscript[β, 21],
s + Subscript[β, 22]}}}, s], StateSpaceModel[{{{Subscript[a, 11], Subscript[a, 12]},
{Subscript[a, 21], Subscript[a, 22]}},
{{Subscript[b, 11]}, {Subscript[b, 21]}},
{{Subscript[c, 11], Subscript[c, 12]}}, {{0}}}, SamplingPeriod -> None,
SystemsModelLabels -> None], NonlinearStateSpaceModel[{{f[x, u]},
{g[x, u]}}, {x}, {u},
{Automatic}, Automatic, SamplingPeriod -> None]};
sys = SystemsConnectionsModel[{Subscript[sys, 1], Subscript[sys, 2], Subscript[sys, 3]}, {{1, 1} -> {2, 1}, {1, 1} -> {3, 1}}, {{1, 1}, {1, 2}}, {{2, 1}, {3, 1}}]A system with an internal signal that is also an output:
{Subscript[sys, 1], Subscript[sys, 2]} = {TransferFunctionModel[{{{1}}, s*α}, s], TransferFunctionModel[{{{b + s}}, a + s},
s]};
sys = SystemsConnectionsModel[{Subscript[sys, 1], Subscript[sys, 2]}, {{1, 1} -> {2, 1}}, {{1, 1}}, {{2, 1}, {1, 1}}]A system with no internal connections:
{Subscript[sys, 1], Subscript[sys, 2], Subscript[sys, 3]} = {TransferFunctionModel[{{{b + z}}, a + z},
z, SamplingPeriod -> T], TransferFunctionModel[{{{B + z}}, A + z},
z, SamplingPeriod -> T], TransferFunctionModel[{{{z + β}}, z + α},
z, SamplingPeriod -> T]};
sys = SystemsConnectionsModel[{Subscript[sys, 1], Subscript[sys, 2], Subscript[sys, 3]}, {}, {{1, 1}, {2, 1}, {3, 1}}, {{1, 1}, {2, 1}, {3, 1}}]Applications (2)
{Subscript[sys, 1], Subscript[sys, 2], Subscript[sys, 3], comp} = {StateSpaceModel[{{{Subscript[a, 1], 0}, {0, Subscript[a, 2]}},
{{Subscript[b, 1], 0}, {0, Subscript[b, 2]}},
{{Subscript[c, 1], 0}, {0, Subscript[c, 2]}},
{{Subscript[d, 1], 0}, {0, Subscript[d, 2]}}}, SamplingPeriod -> None,
SystemsModelLabels -> None], StateSpaceModel[{{{Subscript[α, 11], Subscript[α, 12]},
{Subscript[α, 21], Subscript[α, 22]}},
{{Subscript[β, 1], 0}, {0, Subscript[β, 2]}},
{{Subscript[γ, 11], Subscript[γ, 12]}},
{{Subscript[δ, 11], Subscript[δ, 12]}}}, SamplingPeriod -> None,
SystemsModelLabels -> None], TransferFunctionModel[{{{s}}, a + s}, s], StateSpaceModel[{{}, {}, {}, {{1, -1}}}, SamplingPeriod -> None, SystemsModelLabels -> None]};SystemsConnectionsModel[{Subscript[sys, 1], Subscript[sys, 2], Subscript[sys, 3], comp}, {{1, 2}{4, 1}, {4, 1}{2, 1}, {2, 1}{3, 1}, {3, 1}{4, 2}}, {{1, 1}, {1, 2}, {2, 2}}, {{1, 1}, {2, 1}}]SystemsModelMerge[%]A systems model with three subsystems running on an Arduino Uno microcontroller board:
The first subsystem is a moving-average filter:
ma = StateSpaceModel[y[t] == (u[t] + u[t - 1] + u[t - 2]/3), y[t], u[t], y[t], t, SamplingPeriod -> 0.2]//NThe second subsystem is a ButterworthFilterModel:
bf = ToDiscreteTimeModel[ButterworthFilterModel[2], 0.2]The third subsystem compares the outputs of the earlier subsystems:
cf = NonlinearStateSpaceModel[{{}, Which[u1 > u2, 5, True, 0]}, {}, {u1, u2}, SamplingPeriod -> 0.2]sys = SystemsConnectionsModel[{ma, bf, cf}, {{1, 1} -> {3, 1}, {2, 1} -> {3, 2}}, {{1, 1}, {2, 1}}, {{3, 1}}]Embed it in the microcontroller board:
Needs["MicrocontrollerKit`"]MicrocontrollerEmbedCode[sys, <|"Target" -> "ArduinoUno", "Inputs" -> {"A0" -> "Analog", "A1" -> "Analog"}, "Outputs" -> {"4" -> "Digital"}|>, "/dev/tty.usbmodem1411"]Properties & Relations (4)
SystemsModelMerge will try to merge a SystemsConnectionsModel:
sys = SystemsConnectionsModel[{TransferFunctionModel[{{{1}}, s*α}, s],
TransferFunctionModel[{{{b + s}}, a + s}, s]}, {DirectedEdge[{1, 1}, {2, 1}]}, {{1, 1}},
{{2, 1}, {1, 1}}];SystemsModelMerge[sys]SystemsModelSeriesConnect is a special case:
{Subscript[sys, 1], Subscript[sys, 2]} = {TransferFunctionModel[{{{1}}, s*α}, s], TransferFunctionModel[{{{b + s}}, a + s},
s]};
SystemsModelSeriesConnect[Subscript[sys, 1], Subscript[sys, 2]]//TransferFunctionExpandSystemsModelMerge[SystemsConnectionsModel[{Subscript[sys, 1], Subscript[sys, 2]}, {{1, 1} -> {2, 1}}, {{1, 1}}, {{2, 1}}]]//TransferFunctionExpandSystemsModelParallelConnect is a special case:
{Subscript[sys, 1], Subscript[sys, 2], com, sum} = {TransferFunctionModel[{{{1}}, s*α}, s], TransferFunctionModel[{{{b + s}}, a + s},
s], TransferFunctionModel[{{{1}}, 1}, s], TransferFunctionModel[{{{1, 1}}, 1}, s]};
SystemsModelParallelConnect[Subscript[sys, 1], Subscript[sys, 2]]//TransferFunctionExpandSystemsModelMerge[SystemsConnectionsModel[{com, Subscript[sys, 1], Subscript[sys, 2], sum}, {{1, 1} -> {2, 1}, {1, 1} -> {3, 1}, {2, 1} -> {4, 1}, {3, 1} -> {4, 2}}, {{1, 1}}, {{4, 1}}]]//TransferFunctionExpandSystemsModelFeedbackConnect is a special case:
{Subscript[sys, 1], Subscript[sys, 2], cp} = {TransferFunctionModel[{{{1}}, s*α}, s], TransferFunctionModel[{{{b + s}}, a + s},
s], TransferFunctionModel[{{{1, -1}}, 1}, s]};
SystemsModelFeedbackConnect[Subscript[sys, 1], Subscript[sys, 2]]SystemsModelMerge[SystemsConnectionsModel[{cp, Subscript[sys, 1], Subscript[sys, 2]}, {{1, 1} -> {2, 1}, {2, 1} -> {3, 1}, {3, 1} -> {1, 2}}, {{1, 1}}, {{2, 1}}]]//TransferFunctionExpandRelated Guides
History
Text
Wolfram Research (2019), SystemsConnectionsModel, Wolfram Language function, https://reference.wolfram.com/language/ref/SystemsConnectionsModel.html.
CMS
Wolfram Language. 2019. "SystemsConnectionsModel." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/SystemsConnectionsModel.html.
APA
Wolfram Language. (2019). SystemsConnectionsModel. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/SystemsConnectionsModel.html
BibTeX
@misc{reference.wolfram_2026_systemsconnectionsmodel, author="Wolfram Research", title="{SystemsConnectionsModel}", year="2019", howpublished="\url{https://reference.wolfram.com/language/ref/SystemsConnectionsModel.html}", note=[Accessed: 13-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_systemsconnectionsmodel, organization={Wolfram Research}, title={SystemsConnectionsModel}, year={2019}, url={https://reference.wolfram.com/language/ref/SystemsConnectionsModel.html}, note=[Accessed: 13-June-2026]}