control.LTI
- class control.LTI(inputs=1, outputs=1, states=None, name=None, **kwargs)[source]
Bases:
InputOutputSystemParent class for linear time-invariant system objects.
LTI is the parent to the
FrequencyResponseData,StateSpace, andTransferFunctionchild classes. It contains the number of inputs and outputs, and the timebase (dt) for the system. This class is not generally accessed directly by the user.Attributes
System timebase.
List of labels for the input signals.
Number of system inputs.
Number of system outputs.
Number of system states.
List of labels for the output signals.
String representation format.
2-tuple of I/O system dimension, (noutputs, ninputs).
List of labels for the state signals.
Methods
Evaluate system transfer function at point in complex plane.
Evaluate bandwidth of an LTI system for a given dB drop.
Generate a Bode plot for the system.
Make a copy of an input/output system.
Natural frequency, damping ratio of system poles.
Return the zero-frequency (DC) gain.
Feedback interconnection between two input/output systems.
Find the index for an input given its name (None if not found).
Return list of indices matching input spec (None if not found).
Find the index for a output given its name (None if not found).
Return list of indices matching output spec (None if not found).
Find the index for a state given its name (None if not found).
Return list of indices matching state spec (None if not found).
Generate the forced response for the system.
Evaluate LTI system response at an array of frequencies.
Generate the impulse response for the system.
Generate the initial response for the system.
Check to see if a system is a continuous-time system.
Check to see if a system is a discrete-time system.
Indicate if a linear time invariant (LTI) system is passive.
Check to see if a system is single input, single output.
Generate a Nichols plot for the system.
Generate a Nyquist plot for the system.
Set the number/names of the system inputs.
Set the number/names of the system outputs.
Set the number/names of the system states.
Generate the step response for the system.
Convert to state space representation.
Convert to transfer function representation.
Update signal and system names for an I/O system.
- __call__(x, squeeze=None, warn_infinite=True)[source]
Evaluate system transfer function at point in complex plane.
Returns the value of the system’s transfer function at a point
xin the complex plane, wherexissfor continuous-time systems andzfor discrete-time systems.By default, a (complex) scalar will be returned for SISO systems and a p x m array will be return for MIMO systems with m inputs and p outputs. This can be changed using the
squeezekeyword.To evaluate at a frequency
omegain radians per second, enterx = omega * 1jfor continuous-time systems,x = exp(1j * omega * dt)for discrete-time systems, or use thefrequency_responsemethod.- Parameters:
- xcomplex or complex 1D array_like
Complex value(s) at which transfer function will be evaluated.
- squeezebool, optional
Squeeze output, as described below. Default value can be set using
config.defaults['control.squeeze_frequency_response'].- warn_infinitebool, optional
If set to False, turn off divide by zero warning.
- Returns:
- frespcomplex ndarray
The value of the system transfer function at
x. If the system is SISO andsqueezeis not True, the shape of the array matches the shape ofx. If the system is not SISO orsqueezeis False, the first two dimensions of the array are indices for the output and input and the remaining dimensions matchx. Ifsqueezeis True then single-dimensional axes are removed.
Notes
See
FrequencyResponseData.__call__,StateSpace.__call__,TransferFunction.__call__for class-specific details.
- bandwidth(dbdrop=-3)[source]
Evaluate bandwidth of an LTI system for a given dB drop.
Evaluate the first frequency that the response magnitude is lower than DC gain by
dbdropdB.- Parameters:
- dbdropfloat, optional
A strictly negative scalar in dB (default = -3) defines the amount of gain drop for deciding bandwidth.
- Returns:
- bandwidthndarray
The first frequency (rad/time-unit) where the gain drops below
dbdropof the dc gain of the system, or nan if the system has infinite dc gain, inf if the gain does not drop for all frequency.
- Raises:
- TypeError
If
sysis not an SISO LTI instance.- ValueError
If
dbdropis not a negative scalar.
- bode_plot(*args, **kwargs)[source]
Generate a Bode plot for the system.
See
bode_plotfor more information.
- copy(name=None, use_prefix_suffix=True)[source]
Make a copy of an input/output system.
A copy of the system is made, with a new name. The
namekeyword can be used to specify a specific name for the system. If no name is given anduse_prefix_suffixis True, the name is constructed by prependingconfig.defaults['iosys.duplicate_system_name_prefix']and appendingconfig.defaults['iosys.duplicate_system_name_suffix']. Otherwise, a generic system name of the form ‘sys[<id>]’ is used, where ‘<id>’ is based on an internal counter.- Parameters:
- namestr, optional
Name of the newly created system.
- use_prefix_suffixbool, optional
If True and
nameis None, set the name of the new system to the name of the original system with prefixconfig.defaults['duplicate_system_name_prefix']and suffixconfig.defaults['duplicate_system_name_suffix'].
- Returns:
- damp()[source]
Natural frequency, damping ratio of system poles.
- Returns:
- wnarray
Natural frequency for each system pole.
- zetaarray
Damping ratio for each system pole.
- polesarray
System pole locations.
- dt
System timebase.
- feedback(other=1, sign=-1)[source]
Feedback interconnection between two input/output systems.
- Parameters:
- other
InputOutputSystem System in the feedback path.
- signfloat, optional
Gain to use in feedback path. Defaults to -1.
- other
- find_input(name)[source]
Find the index for an input given its name (None if not found).
- Parameters:
- namestr
Signal name for the desired input.
- Returns:
- int
Index of the named input.
- find_inputs(name_list)[source]
Return list of indices matching input spec (None if not found).
- Parameters:
- name_liststr or list of str
List of signal specifications for the desired inputs. A signal can be described by its name or by a slice-like description of the form ‘start:end` where ‘start’ and ‘end’ are signal names. If either is omitted, it is taken as the first or last signal, respectively.
- Returns:
- list of int
List of indices for the specified inputs.
- find_output(name)[source]
Find the index for a output given its name (None if not found).
- Parameters:
- namestr
Signal name for the desired output.
- Returns:
- int
Index of the named output.
- find_outputs(name_list)[source]
Return list of indices matching output spec (None if not found).
- Parameters:
- name_liststr or list of str
List of signal specifications for the desired outputs. A signal can be described by its name or by a slice-like description of the form ‘start:end` where ‘start’ and ‘end’ are signal names. If either is omitted, it is taken as the first or last signal, respectively.
- Returns:
- list of int
List of indices for the specified outputs.
- find_state(name)[source]
Find the index for a state given its name (None if not found).
- Parameters:
- namestr
Signal name for the desired state.
- Returns:
- int
Index of the named state.
- find_states(name_list)[source]
Return list of indices matching state spec (None if not found).
- Parameters:
- name_liststr or list of str
List of signal specifications for the desired states. A signal can be described by its name or by a slice-like description of the form ‘start:end` where ‘start’ and ‘end’ are signal names. If either is omitted, it is taken as the first or last signal, respectively.
- Returns:
- list of int
List of indices for the specified states..
- forced_response(*args, **kwargs)[source]
Generate the forced response for the system.
See
forced_responsefor more information.
- frequency_response(omega=None, squeeze=None)[source]
Evaluate LTI system response at an array of frequencies.
See
frequency_responsefor more detailed information.
- impulse_response(*args, **kwargs)[source]
Generate the impulse response for the system.
See
impulse_responsefor more information.
- initial_response(*args, **kwargs)[source]
Generate the initial response for the system.
See
initial_responsefor more information.
- property input_labels
List of labels for the input signals.
- isctime(strict=False)[source]
Check to see if a system is a continuous-time system.
- Parameters:
- strictbool, optional
If strict is True, make sure that timebase is not None. Default is False.
- isdtime(strict=False)[source]
Check to see if a system is a discrete-time system.
- Parameters:
- strictbool, optional
If strict is True, make sure that timebase is not None. Default is False.
- ispassive()[source]
Indicate if a linear time invariant (LTI) system is passive.
See
ispassivefor details.
- nichols_plot(*args, **kwargs)[source]
Generate a Nichols plot for the system.
See
nichols_plotfor more information.
- ninputs
Number of system inputs.
- noutputs
Number of system outputs.
- nstates
Number of system states.
- nyquist_plot(*args, **kwargs)[source]
Generate a Nyquist plot for the system.
See
nyquist_plotfor more information.
- property output_labels
List of labels for the output signals.
- property repr_format
String representation format.
Format used in creating the representation for the system:
‘info’ : <IOSystemType sysname: [inputs] -> [outputs]>
‘eval’ : system specific, loadable representation
‘latex’ : HTML/LaTeX representation of the object
The default representation for an input/output is set to ‘eval’. This value can be changed for an individual system by setting the
repr_formatparameter when the system is created or by setting therepr_formatproperty after system creation. Setconfig.defaults['iosys.repr_format']to change for all I/O systems or use therepr_formatparameter/attribute for a single system.
- set_inputs(inputs, prefix='u')[source]
Set the number/names of the system inputs.
- Parameters:
- inputsint, list of str, or None
Description of the system inputs. This can be given as an integer count or as a list of strings that name the individual signals. If an integer count is specified, the names of the signal will be of the form ‘u[i]’ (where the prefix ‘u’ can be changed using the optional prefix parameter).
- prefixstring, optional
If
inputsis an integer, create the names of the states using the given prefix (default = ‘u’). The names of the input will be of the form ‘prefix[i]’.
- set_outputs(outputs, prefix='y')[source]
Set the number/names of the system outputs.
- Parameters:
- outputsint, list of str, or None
Description of the system outputs. This can be given as an integer count or as a list of strings that name the individual signals. If an integer count is specified, the names of the signal will be of the form ‘y[i]’ (where the prefix ‘y’ can be changed using the optional prefix parameter).
- prefixstring, optional
If
outputsis an integer, create the names of the states using the given prefix (default = ‘y’). The names of the input will be of the form ‘prefix[i]’.
- set_states(states, prefix='x')[source]
Set the number/names of the system states.
- Parameters:
- statesint, list of str, or None
Description of the system states. This can be given as an integer count or as a list of strings that name the individual signals. If an integer count is specified, the names of the signal will be of the form ‘x[i]’ (where the prefix ‘x’ can be changed using the optional prefix parameter).
- prefixstring, optional
If
statesis an integer, create the names of the states using the given prefix (default = ‘x’). The names of the input will be of the form ‘prefix[i]’.
- property shape
2-tuple of I/O system dimension, (noutputs, ninputs).
- property state_labels
List of labels for the state signals.
- step_response(*args, **kwargs)[source]
Generate the step response for the system.
See
step_responsefor more information.
- update_names([name, inputs, outputs, states])[source]
Update signal and system names for an I/O system.
- Parameters:
- namestr, optional
New system name.
- inputslist of str, int, or None, optional
List of strings that name the individual input signals. If given as an integer or None, signal names default to the form ‘u[i]’. See
InputOutputSystemfor more information.- outputslist of str, int, or None, optional
Description of output signals; defaults to ‘y[i]’.
- statesint, list of str, int, or None, optional
Description of system states; defaults to ‘x[i]’.
- input_prefixstring, optional
Set the prefix for input signals. Default = ‘u’.
- output_prefixstring, optional
Set the prefix for output signals. Default = ‘y’.
- state_prefixstring, optional
Set the prefix for state signals. Default = ‘x’.