MIMOStateSpace

Defined in module: wield.control.MIMO.ss.MIMOStateSpace

class MIMOStateSpace(*args, inputs=None, outputs=None, inout=None, hermitian=True, time_symm=False, dt=None, fiducial_rtol=None, fiducial_atol=None, algorithm_choices=None, algorithm_ranking=None)[source][github]

Bases: BareStateSpaceUser, MIMO

State space class to represent MIMO Transfer functions using dense matrix representations

This class allows both string-based and number based indexing

inputs and outputs can either be a list of names or a dictionary of names to indices.

inputs and outputs can contain overlapping indices

__init__(*args, inputs=None, outputs=None, inout=None, hermitian=True, time_symm=False, dt=None, fiducial_rtol=None, fiducial_atol=None, algorithm_choices=None, algorithm_ranking=None)[source][github]

Form a MIMO LTI system from statespace matrices.

There are lots of ways to create LTI systems. From the arguments

Methods

L2_norm(**kwargs)

Linf_norm(**kwargs)

__init__(*args[, inputs, outputs, inout, ...])

Form a MIMO LTI system from statespace matrices.

balance(**kwargs)

balanceABC(**kwargs)

balance_and_truncate(**kwargs)

constraint([outputs, matrix])

Adds an output constraint to the system and returns the altered system

constraints([output_matrix])

Adds multiple output constraints to the system and returns the altered system

dissect(*, ilists, inames, olists, onames)

This implements the dissection interface to break the statespace into blocks.

dissectB(iname)

dissectC(oname)

dissectD(iname, oname)

feedback_connect(*[, connections, gain])

Feedback linkage for a single statespace.

fresponse(*[, f, w, s])

in2out([inputs])

inverse(inputs, outputs)

Creates the inverse between the set of inputs and outputs.

minreal([job, scale_io, scale, tol])

namespace(ns)

prepend a namespace to all inputs and outputs and return the new system

out2in([outputs])

permute_UT(**kwargs)

print_nonzero()

reduceE(**kwargs)

reduceE2(**kwargs)

rename(renames[, which])

Rename inputs and outputs of the statespace and return the new systems

rename_inputs(renames)

rename_outputs(renames)

schur_form(**kwargs)

secondaries([outputs])

Return a new system with additional inputs and outputs created from the names of the originals

series_connect(*[, input_connections, ...])

Like feedback but extends inputs and outputs through gain or gain systems in series

set_algorithm_choices(algorithm_choices)

siso(row, col)

convert a single output (row) and input (col) into a SISO representation

stochastic_balance_and_truncate(**kwargs)

Attributes

property input_dissections_byname[github]
property output_dissections_byname[github]
secondaries(outputs=None)[source][github]

Return a new system with additional inputs and outputs created from the names of the originals

Properly implementing should use a topological sort on inputs and outputs to check for cycles and ensure that the index dependency is resolvable

siso(row, col)[source][github]

convert a single output (row) and input (col) into a SISO representation

dissect(*, ilists, inames, olists, onames)[source][github]

This implements the dissection interface to break the statespace into blocks. This is useful for a number of advanced control synthesis and analysis routines that depend on categories of input and output blocks

dissectB(iname)[source][github]
dissectC(oname)[source][github]
dissectD(iname, oname)[source][github]
namespace(ns)[source][github]

prepend a namespace to all inputs and outputs and return the new system

rename(renames, which='both')[source][github]

Rename inputs and outputs of the statespace and return the new systems

renames: dictionary mapping from:to name pairs or a function(from) -> to which: can be “inputs”, “outputs”, or “both” (the default).

rename_inputs(renames)[source][github]
rename_outputs(renames)[source][github]
fresponse(*, f=None, w=None, s=None, **kwargs)[source][github]
in2out(inputs=None)[source][github]
out2in(outputs=None)[source][github]
inverse(inputs, outputs)[source][github]

Creates the inverse between the set of inputs and outputs. the size of inputs and outputs must be the same.

constraint(outputs=None, matrix=None)[source][github]

Adds an output constraint to the system and returns the altered system

outputs: this is a list of outputs which establishes an order matrix: this is a matrix for the list of outputs which adds the system constraint G:=matrix -> G @ C @ x = 0 by augmenting the A and E matrices

constraints(output_matrix=[])[source][github]

Adds multiple output constraints to the system and returns the altered system

output_matrix is a list of output, matrix pairs. This function is equivalent to calling constraint many times with the list, but is faster to perform all at once

series_connect(*, input_connections=None, output_connections=None, gain=1)[source][github]

Like feedback but extends inputs and outputs through gain or gain systems in series

the gain terms can be SISO systems, StateSpaceRaw, D, ABCD, or ABCDE blocks

feedback_connect(*, connections=None, gain=1)[source][github]

Feedback linkage for a single statespace.

connections is a list of row, col pairs or row,col,gain tuples

gain is the connection gain to apply. It can be a scalar or a matrix

TODO: allow gain to be a SISO response, StateSpaceRaw, D, ABCD, or ABCDE blocks

property A[github]
property ABCD[github]
property ABCDE[github]
property ABCDe[github]
property AE[github]
property Ae[github]
property B[github]
property C[github]
property D[github]
property E[github]
L2_norm(**kwargs)[github]
Linf_norm(**kwargs)[github]
property algorithm_choices[github]
property algorithm_ranking[github]
property as_controlLTI[github]
balance(**kwargs)[github]
balanceABC(**kwargs)[github]
balance_and_truncate(**kwargs)[github]
property dt[github]
property e[github]
property hermitian[github]
property isEeye[github]
minreal(job='minimal', scale_io=True, scale=True, tol=None)[github]
permute_UT(**kwargs)[github]
print_nonzero()[github]
reduceE(**kwargs)[github]
reduceE2(**kwargs)[github]
schur_form(**kwargs)[github]
set_algorithm_choices(algorithm_choices)[github]
stochastic_balance_and_truncate(**kwargs)[github]
property structure_flags[github]
property time_symm[github]