({{, (RefLink[SystemsModelMerge, paclet:ref/SystemsModelMerge])[{(Subscript[sys, 1]),(Subscript[sys, 2]),…}] 
merges the systems models (Subscript[sys, j]). }})

OpenersNotesSection(Spacer1)Details

The systems model (Subscript[sys, j]) can be a (RefLink[TransferFunctionModel, paclet:ref/TransferFunctionModel]), (RefLink[StateSpaceModel, paclet:ref/StateSpaceModel]), (RefLink[AffineStateSpaceModel, paclet:ref/AffineStateSpaceModel]), or (RefLink[NonlinearStateSpaceModel, paclet:ref/NonlinearStateSpaceModel]).

If inputs and states share variable names, they are considered to be the same signal.

The merged system is given in the most general form of all the (Subscript[sys, j]).

OpenersPrimaryExamplesSection(Spacer1)Examples  (22)

OpenersExampleSection0(Spacer1)Basic Examples  (4)

Merge two continuous-time systems:

SystemsModelMerge[{(TransferFunctionModelFull[(1/(α s)), , , ]),(TransferFunctionModelFull[((b+s)/(a+s)), , , ])}]

Merge two discrete-time systems:

SystemsModelMerge[{(TransferFunctionModelFull[((b+z)/(a+z)), T, , ]),(TransferFunctionModelFull[((β+z)/(α+z)), T, , ])}]

Merge two (RefLink[StateSpaceModel, paclet:ref/StateSpaceModel]) systems:

SystemsModelMerge[{(StateSpaceModelFull[0, 1, 0, -(Subscript[α, 0]), -(Subscript[α, 1]), 1, (Subscript[β, 0]), (Subscript[β, 1]), 0, , , ]),(StateSpaceModelFull[0, 1, 0, -(Subscript[a, 0]), -(Subscript[a, 1]), 1, (Subscript[b, 0]), (Subscript[b, 1]), 0, , , ])}]

Merge (RefLink[AffineStateSpaceModel, paclet:ref/AffineStateSpaceModel]) systems with a common input variable:

SystemsModelMerge[{AffineStateSpaceModel[{{-a (Subscript[x, 1])},{{b}},{(Subscript[x, 1])},{{0}}},{(Subscript[x, 1])},{(Subscript[u, 1])}], 
   AffineStateSpaceModel[{{α (Subscript[x, 2]^2)},{{β}},{(Subscript[x, 2])},{{0}}},{(Subscript[x, 2])},{(Subscript[u, 1])}]}]

OpenersExampleSection1(Spacer1)Scope  (13)

OpenersExampleSubsection0(Spacer1)Basic Uses  (5)

Merge two scalar systems:

SystemsModelMerge[{(StateSpaceModelFull[(Subscript[a, 11]), (Subscript[a, 12]), (Subscript[b, 11]), (Subscript[a, 21]), (Subscript[a, 22]), (Subscript[b, 21]), (Subscript[c, 11]), (Subscript[c, 12]), 0, , , ]),(StateSpaceModelFull[(Subscript[α, 11]), (Subscript[α, 12]), (Subscript[β, 11]), (Subscript[α, 21]), (Subscript[α, 22]), (Subscript[β, 21]), (Subscript[γ, 11]), (Subscript[γ, 12]), 0, , , ])}]

Merge three systems:

SystemsModelMerge[{(StateSpaceModelFull[(Subscript[a, 11]), (Subscript[a, 12]), (Subscript[b, 11]), (Subscript[b, 12]), (Subscript[a, 21]), (Subscript[a, 22]), (Subscript[b, 21]), (Subscript[b, 22]), (Subscript[c, 11]), (Subscript[c, 12]), (Subscript[d, 11]), (Subscript[d, 12]), (Subscript[c, 21]), (Subscript[c, 22]), (Subscript[d, 21]), (Subscript[d, 22]), , , ]),(StateSpaceModelFull[(Subscript[α, 11]), (Subscript[α, 12]), (Subscript[β, 11]), (Subscript[β, 12]), (Subscript[α, 21]), (Subscript[α, 22]), (Subscript[β, 21]), (Subscript[β, 22]), (Subscript[γ, 11]), (Subscript[γ, 12]), (Subscript[D, 11]), (Subscript[D, 12]), , , ]),(StateSpaceModelFull[Α, Β, Χ, Δ, , , ])}]

Merge systems that share input variables:

SystemsModelMerge[{(StateSpaceModelFull[(Subscript[a, 11]), (Subscript[a, 12]), (Subscript[b, 11]), (Subscript[a, 21]), (Subscript[a, 22]), (Subscript[b, 21]), (Subscript[c, 11]), (Subscript[c, 12]), 0, (Subscript[c, 21]), (Subscript[c, 22]), 0, , ,{(Subscript[x, 1]),(Subscript[x, 2])},{(Subscript[u, 1])}]),(StateSpaceModelFull[(Subscript[α, 11]), (Subscript[α, 12]), (Subscript[β, 11]), (Subscript[β, 12]), (Subscript[α, 21]), (Subscript[α, 22]), (Subscript[β, 21]), (Subscript[β, 22]), (Subscript[γ, 11]), (Subscript[γ, 12]), 0, 0, , ,{(Subscript[ξ, 1]),(Subscript[ξ, 2])},{(Subscript[u, 1]),(Subscript[u, 2])}])}]

When an input and state have the same variable name, the state defines the input:

(Subscript[ssm, 1])=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])}, {(Subscript[c, 21]), (Subscript[c, 22])}})),(({{0}, {0}}))}, 
    {(Subscript[x, 1]),(Subscript[x, 2])}, {(Subscript[u, 1])}];

(Subscript[ssm, 2])= StateSpaceModel[{(({{(Subscript[α, 11]), (Subscript[α, 12])}, {(Subscript[α, 21]), (Subscript[α, 22])}})),(({{(Subscript[β, 11]), (Subscript[β, 12])}, {(Subscript[β, 21]), (Subscript[β, 22])}})),(({{(Subscript[γ, 11]), (Subscript[γ, 12])}})),(({{0, 0}}))},{(Subscript[ξ, 1]),(Subscript[ξ, 2])},{(Subscript[x, 1]),(Subscript[u, 2])}];

SystemsModelMerge[{(Subscript[ssm, 1]),(Subscript[ssm, 2])}]

Merge a (RefLink[StateSpaceModel, paclet:ref/StateSpaceModel]) and a (RefLink[TransferFunctionModel, paclet:ref/TransferFunctionModel]):

SystemsModelMerge[{(StateSpaceModelFull[(Subscript[a, 11]), (Subscript[a, 12]), (Subscript[b, 11]), (Subscript[a, 21]), (Subscript[a, 22]), (Subscript[b, 21]), (Subscript[c, 11]), (Subscript[c, 12]), 0, , ]),(TransferFunctionModelFull[(k/(α+s)), , ])}]

OpenersExampleSubsection1(Spacer1)System Types  (8)

Merge two (RefLink[TransferFunctionModel, paclet:ref/TransferFunctionModel]) systems:

SystemsModelMerge[{(TransferFunctionModelFull[(a/(p+s)), , , ]),(TransferFunctionModelFull[(α/(ρ+s)), , , ])}]

Delay systems:

SystemsModelMerge[{(TransferFunctionModelFull[((a (E^(-T s)))/(p+s)), , , ]),(TransferFunctionModelFull[(((E^(-τ s)) α)/(ρ+s)), , , ])}]

Improper transfer functions:

SystemsModelMerge[{(TransferFunctionModelFull[a+s, , , ]),(TransferFunctionModelFull[α+s, , , ])}]

Merge two (RefLink[StateSpaceModel, paclet:ref/StateSpaceModel]) systems:

SystemsModelMerge[{(StateSpaceModelFull[a, b, c, d, , ]),(StateSpaceModelFull[α, β, γ, ρ, , ])}]

Delay systems:

SystemsModelMerge[{(StateSpaceModelFull[a+(SystemsModelDelay[(Subscript[τ, 1])]), b, c, d, , ]),(StateSpaceModelFull[α+(SystemsModelDelay[(Subscript[τ, 2])]), β, γ, ρ, , ])}]

Descriptor state-space systems:

SystemsModelMerge[{(StateSpaceModelFull[e, a, b, c, d, , ]),(StateSpaceModelFull[η, α, β, γ, ρ, , ])}]

(RefLink[AffineStateSpaceModel, paclet:ref/AffineStateSpaceModel]) systems:

SystemsModelMerge[{(AffineStateSpaceModelFull[a[(Subscript[x, 1])], b[(Subscript[x, 1])], c[(Subscript[x, 1])], d[(Subscript[x, 1])], (Subscript[x, 1]), \[Null], \[Null], {(Subscript[\[FormalU], 1])}Automatic, ]),(AffineStateSpaceModelFull[α[(Subscript[x, 2])], β[(Subscript[x, 2])], γ[(Subscript[x, 2])], ρ[(Subscript[x, 2])], (Subscript[x, 2]), \[Null], \[Null], {(Subscript[\[FormalU], 1])}Automatic, ])}]

(RefLink[NonlinearStateSpaceModel, paclet:ref/NonlinearStateSpaceModel]) systems:

SystemsModelMerge[{(NonlinearStateSpaceModelFull[(Subscript[f, 1])[(Subscript[x, 1]),(Subscript[u, 1])], (Subscript[h, 1])[(Subscript[x, 1]),(Subscript[u, 1])], (Subscript[x, 1]), \[Null], \[Null], {(Subscript[u, 1])}Automatic, ]),(NonlinearStateSpaceModelFull[(Subscript[f, 2])[(Subscript[x, 2]),(Subscript[u, 2])], (Subscript[h, 2])[(Subscript[x, 2]),(Subscript[u, 2])], (Subscript[x, 2]), \[Null], \[Null], {(Subscript[u, 2])}Automatic, ])}]

Merging a (RefLink[TransferFunctionModel, paclet:ref/TransferFunctionModel]) and (RefLink[StateSpaceModel, paclet:ref/StateSpaceModel]) will give a (RefLink[StateSpaceModel, paclet:ref/StateSpaceModel]):

SystemsModelMerge[{(TransferFunctionModelFull[((k (s+(Subscript[z, 1])))/(s+(Subscript[p, 1]))), , ]),(StateSpaceModelFull[a, b, c, d, , ])}]

Systems with delays:

SystemsModelMerge[{(TransferFunctionModelFull[(((E^(-s (Subscript[τ, 1]))) k (s+(Subscript[z, 1])))/(s+(Subscript[p, 1]))), , ]),(StateSpaceModelFull[a+(SystemsModelDelay[(Subscript[τ, 2])]), b, c, d, , ])}]

Standard linear system and an (RefLink[AffineStateSpaceModel, paclet:ref/AffineStateSpaceModel]) will give an (RefLink[AffineStateSpaceModel, paclet:ref/AffineStateSpaceModel]):

SystemsModelMerge[{(TransferFunctionModelFull[((k (s+(Subscript[z, 1])))/(s+(Subscript[p, 1]))), , ]),(AffineStateSpaceModelFull[α[x], β[x], γ[x], ρ[x], x, \[Null], \[Null], {(Subscript[u, 1])}Automatic, ])}]

SystemsModelMerge[{(StateSpaceModelFull[a, b, c, d, , ]),(AffineStateSpaceModelFull[α[x], β[x], γ[x], ρ[x], x, \[Null], \[Null], {(Subscript[u, 1])}Automatic, ])}]

Standard linear with (RefLink[NonlinearStateSpaceModel, paclet:ref/NonlinearStateSpaceModel]) gives a (RefLink[NonlinearStateSpaceModel, paclet:ref/NonlinearStateSpaceModel]):

SystemsModelMerge[{(StateSpaceModelFull[a, b, c, d, , ]),(NonlinearStateSpaceModelFull[f[x,u], h[x,u], x, \[Null], \[Null], {u}Automatic, ])}]

(RefLink[AffineStateSpaceModel, paclet:ref/AffineStateSpaceModel]) with (RefLink[NonlinearStateSpaceModel, paclet:ref/NonlinearStateSpaceModel]) again gives the latter:

SystemsModelMerge[{(AffineStateSpaceModelFull[a[(Subscript[x, 1])], b[(Subscript[x, 1])], c[(Subscript[x, 1])], d[(Subscript[x, 1])], (Subscript[x, 1]), \[Null], \[Null], {(Subscript[u, 1])}Automatic, ]),(NonlinearStateSpaceModelFull[f[(Subscript[x, 2]),(Subscript[u, 2])], h[(Subscript[x, 2]),(Subscript[u, 2])], (Subscript[x, 2]), \[Null], \[Null], {(Subscript[u, 2])}Automatic, ])}]

OpenersExampleSection3(Spacer1)Applications  (1)

Use (RefLink[SystemsModelMerge, paclet:ref/SystemsModelMerge]) in multi-loop reduction:

The subsystems:

{(Subscript[sys, 1]),(Subscript[sys, 2]),(Subscript[sys, 3]),(Subscript[sys, 4])}={(TransferFunctionModelFull[(1/(10+s)), , , ]),(TransferFunctionModelFull[(1/(1+s)), , , ]),(TransferFunctionModelFull[((1+(s^2))/(4+4 s+(s^2))), , , ]),(TransferFunctionModelFull[((1+s)/(6+s)), , , ])};

{(Subscript[fsys, 1]),(Subscript[fsys, 2]),(Subscript[fsys, 3])}={(TransferFunctionModelFull[((1+s)/(2+s)), , , ]),(TransferFunctionModelFull[((2 (6+s))/(1+s)), , , ]),(TransferFunctionModelFull[1, , , ])};

(Subscript[sum, 1])=(Subscript[sum, 2])=(TransferFunctionModelFull[1, -1, , , ]);

(Subscript[sum, 3])=(TransferFunctionModelFull[1, 1, , , ]);

asys={(Subscript[sys, 1]),(Subscript[sys, 2]),(Subscript[sys, 3]),(Subscript[sys, 4]),(Subscript[fsys, 1]),(Subscript[fsys, 2]),(Subscript[fsys, 3]),(Subscript[sum, 1]),(Subscript[sum, 2]),(Subscript[sum, 3])};

The connections:

conxs={{8,1}->{1,1},{1,1}->{9,1},{9,1}->{2,1},{2,1}->{10,1},{10,1}->{3,1},{3,1}->{4,1},{4,1}->{6,1},{6,1}->{9,2},{4,1}->{5,1},{5,1}->{10,2},{4,1}->{7,1},{7,1}->{8,2}};

The inputs and outputs:

ins={{8,1}};
outs={{4,1}};

The connections model:

SystemsConnectionsModel[asys,conxs,ins,outs]

Reduce the system:

SystemsModelMerge[%]

OpenersExampleSection4(Spacer1)Properties & Relations  (4)

By default, (RefLink[SystemsModelMerge, paclet:ref/SystemsModelMerge]) does not connect inputs or sum outputs:

{(Subscript[tfm, 1]),(Subscript[tfm, 2])}=Table[(TransferFunctionModelFull[(1/(s+(Subscript[α, i]))), , , ]),{i,2}];

SystemsModelMerge[{(Subscript[tfm, 1]),(Subscript[tfm, 2])}]

(RefLink[SystemsModelParallelConnect, paclet:ref/SystemsModelParallelConnect]) connects inputs and sums outputs:

SystemsModelParallelConnect[(Subscript[tfm, 1]),(Subscript[tfm, 2])]

When no variables match, (RefLink[SystemsModelMerge, paclet:ref/SystemsModelMerge]) is a case of (RefLink[SystemsModelParallelConnect, paclet:ref/SystemsModelParallelConnect]):

{(Subscript[tfm, 1]),(Subscript[tfm, 2])}=Table[(TransferFunctionModelFull[(1/(s+(Subscript[α, i]))), , , ]),{i,2}];

{SystemsModelMerge[{(Subscript[tfm, 1]),(Subscript[tfm, 2])}], SystemsModelParallelConnect[(Subscript[tfm, 1]),(Subscript[tfm, 2]),None,None]}

(RefLink[SystemsModelMerge, paclet:ref/SystemsModelMerge]) can be used to merge two or more systems:

{(Subscript[tfm, 1]),(Subscript[tfm, 2]),(Subscript[tfm, 3])}=Table[(TransferFunctionModelFull[(1/(s+(Subscript[α, i]))), , , ]),{i,3}];

SystemsModelMerge[{(Subscript[tfm, 1]),(Subscript[tfm, 2]),(Subscript[tfm, 3])}]

(RefLink[SystemsModelParallelConnect, paclet:ref/SystemsModelParallelConnect]) connects only two systems:

SystemsModelParallelConnect[(Subscript[tfm, 1]),(Subscript[tfm, 2]),None,None]

(RefLink[SystemsModelMerge, paclet:ref/SystemsModelMerge]) can merge a system with no inputs or outputs to another system:

(Subscript[asys, 1])=AffineStateSpaceModel[{{(Subscript[x, 2])},{},{}},{(Subscript[x, 1])}];

(Subscript[asys, 2])=AffineStateSpaceModel[{{(Subscript[x, 1])},{{1}},{(Subscript[x, 2])}},{(Subscript[x, 2])},{u}];

SystemsModelMerge[{(Subscript[asys, 1]),(Subscript[asys, 2])}]

It does not make sense to connect such systems in parallel:

SystemsModelParallelConnect[(Subscript[asys, 1]),(Subscript[asys, 2])]

({{DocumentationFooterIconsRelatedFunction.png, ({{See Also}, {(RefLink[SystemsModelParallelConnect, paclet:ref/SystemsModelParallelConnect])  ▪  (RefLink[FullInformationOutputRegulator, paclet:ref/FullInformationOutputRegulator])}})}})

({{DocumentationFooterIconsRelatedGuide.png, ({{Related Guides}, {▪(RefLinkPlain[Model Connections and Manipulations, paclet:guide/ModelConnections])}})}})