control.feedback

control.feedback(sys1, sys2=1, sign=-1, **kwargs)[source]

Feedback interconnection between two I/O systems.

Parameters
sys1, sys2scalar, array, or InputOutputSystem

I/O systems to combine.

signscalar, optional

The sign of feedback. sign=-1 indicates negative feedback (default), and sign=1 indicates positive feedback.

Returns
outInputOutputSystem

Feedback interconnection of the systems.

Other Parameters
inputs, outputsstr, or list of str, optional

List of strings that name the individual signals. If not given, signal names will be of the form ‘s[i]’ (where ‘s’ is one of ‘u’, or ‘y’). See InputOutputSystem for more information.

statesstr, or list of str, optional

List of names for system states. If not given, state names will be of of the form ‘x[i]’ for interconnections of linear systems or ‘<subsys_name>.<state_name>’ for interconnected nonlinear systems.

namestring, optional

System name (used for specifying signals). If unspecified, a generic name ‘sys[id]’ is generated with a unique integer id.

Raises
ValueError

If sys1 does not have as many inputs as sys2 has outputs, or if sys2 does not have as many inputs as sys1 has outputs.

NotImplementedError

If an attempt is made to perform a feedback on a MIMO TransferFunction object.

Notes

This function is a wrapper for the feedback function in the I/O system classes. It calls sys1.feedback if sys1 is an I/O system object. If sys1 is a scalar, then it is converted to sys2’s type, and the corresponding feedback function is used.

Examples

>>> G = ct.rss(3, inputs=2, outputs=5)
>>> C = ct.rss(4, inputs=5, outputs=2)
>>> T = ct.feedback(G, C, sign=1)
>>> T.ninputs, T.noutputs, T.nstates
(2, 5, 7)