Bases: LTI
Transfer function representation for LTI input/output systems.
The TransferFunction class is used to represent systems in transfer function form. Transfer functions are usually created with the tf
factory function.
Polynomial coefficients of the numerator.
Polynomial coefficients of the denominator.
System timebase. 0 (default) indicates continuous time, True indicates discrete time with unspecified sampling time, positive number is discrete time with specified sampling time, None indicates unspecified timebase (either continuous or discrete time).
Number of input and output signals.
shape
tuple
2-tuple of I/O system dimension, (noutputs, ninputs).
Names for the input and output signals.
System name.
Numerator and denominator polynomial coefficients as 2D array of 1D array objects (of varying length).
Numerator and denominator polynomial coefficients as 2D lists of 1D array objects (of varying length).
Display format used in printing the TransferFunction object. Default behavior is polynomial display and can be changed by changing config.defaults['xferfcn.display_format']
.
s
TransferFunction
Differentiation operator (continuous time).
z
TransferFunction
Delay operator (discrete time).
Notes
The numerator and denominator polynomials are stored as 2D arrays with each element containing a 1D array of coefficients. These data structures can be retrieved using num_array
and den_array
. For example,
gives the numerator of the transfer function from the 6th input to the 3rd output. (Note: a single 3D array structure cannot be used because the numerators and denominators can have different numbers of coefficients in each entry.)
The attributes num_list
and den_list
are properties that return 2D nested lists containing MIMO numerator and denominator coefficients. For example,
For legacy purposes, this list-based representation can also be obtained using num
and den
.
A discrete-time transfer function is created by specifying a nonzero ‘timebase’ dt when the system is constructed:
dt
= 0: continuous-time system (default)
dt
= True: discrete time with unspecified sampling period
dt
= None: no timebase specified
Systems must have compatible timebases in order to be combined. A discrete-time system with unspecified sampling time (dt
= True) can be combined with a system having a specified sampling time; the result will be a discrete-time system with the sample time of the other system. Similarly, a system with timebase None can be combined with a system having any timebase; the result will have the timebase of the other system. The default value of dt can be changed by changing the value of config.defaults['control.default_dt']
.
A transfer function is callable and returns the value of the transfer function evaluated at a point in the complex plane. See TransferFunction.__call__
for a more detailed description.
Subsystems corresponding to selected input/output pairs can be created by indexing the transfer function:
subsys = sys[output_spec, input_spec]
The input and output specifications can be single integers, lists of integers, or slices. In addition, the strings representing the names of the signals can be used and will be replaced with the equivalent signal offsets.
The TransferFunction class defines two constants s
and z
that represent the differentiation and delay operators in continuous and discrete time. These can be used to create variables that allow algebraic creation of transfer functions. For example,
>>> s = ct.TransferFunction.s # or ct.tf('s') >>> G = (s + 1)/(s**2 + 2*s + 1)
Attributes
Denominator polynomial (as 2D nested lists of 1D arrays).
Denominator polynomial coefficients as a 2D array of 1D coefficients.
Denominator polynomial (as 2D nested lists of 1D arrays).
System timebase.
List of labels for the input signals.
Number of system inputs.
Number of system outputs.
Number of system states.
Numerator polynomial (as 2D nested list of 1D arrays).
Numerator polynomial coefficients as a 2D array of 1D coefficients.
Numerator polynomial (as 2D nested list of 1D arrays).
List of labels for the output signals.
String representation format.
Differentiation operator (continuous time).
2-tuple of I/O system dimension, (noutputs, ninputs).
List of labels for the state signals.
Delay operator (discrete time).
Methods
Evaluate system transfer function at point in complex plane.
Append a second model to the present model.
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 LTI objects.
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 transfer function at complex frequencies.
Evaluate LTI system response at an array of frequencies.
Evaluate value of transfer function using Horner's method.
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.
Remove canceling pole/zero pairs from a transfer function.
Generate a Nichols plot for the system.
Generate a Nyquist plot for the system.
Compute the poles of a transfer function.
Return a 2D array of scipy.signal.lti
objects.
Convert a continuous-time system to discrete time.
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.
Compute the zeros of a transfer function.
Add two LTI objects (parallel connection).
Evaluate system transfer function at point in complex plane.
Returns the value of the system’s transfer function at a point x
in the complex plane, where x
is s
for continuous-time systems and z
for discrete-time systems.
See LTI.__call__
for details.
Multiply two LTI objects (serial connection).
Negate a transfer function.
Right add two LTI objects (parallel connection).
Right multiply two LTI objects (serial connection).
Right subtract two LTI objects.
Right divide two LTI objects.
Subtract two LTI objects.
Divide two LTI objects.
Append a second model to the present model.
The second model is converted to a transfer function if necessary, inputs and outputs are appended and their order is preserved.
StateSpace
or TransferFunction
System to be appended.
TransferFunction
System model with other
appended to self
.
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 dbdrop
dB.
A strictly negative scalar in dB (default = -3) defines the amount of gain drop for deciding bandwidth.
The first frequency (rad/time-unit) where the gain drops below dbdrop
of 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.
If sys
is not an SISO LTI instance.
If dbdrop
is not a negative scalar.
Generate a Bode plot for the system.
See bode_plot
for more information.
Make a copy of an input/output system.
A copy of the system is made, with a new name. The name
keyword can be used to specify a specific name for the system. If no name is given and use_prefix_suffix
is True, the name is constructed by prepending config.defaults['iosys.duplicate_system_name_prefix']
and appending config.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.
Name of the newly created system.
If True and name
is None, set the name of the new system to the name of the original system with prefix config.defaults['duplicate_system_name_prefix']
and suffix config.defaults['duplicate_system_name_suffix']
.
InputOutputSystem
Natural frequency, damping ratio of system poles.
Natural frequency for each system pole.
Damping ratio for each system pole.
System pole locations.
Return the zero-frequency (“DC”) gain.
For a continuous-time transfer function G(s), the DC gain is G(0) For a discrete-time transfer function G(z), the DC gain is G(1)
By default, don’t issue a warning message if the zero-frequency gain is infinite. Setting warn_infinite
to generate the warning message.
Array or scalar value for SISO systems, depending on config.defaults['control.squeeze_frequency_response']
. The value of the array elements or the scalar is either the zero-frequency (or DC) gain, or inf
, if the frequency response is singular.
For real valued systems, the empty imaginary part of the complex zero-frequency response is discarded and a real array or scalar is returned.
Examples
>>> G = ct.tf([1], [1, 4]) >>> G.dcgain() np.float64(0.25)
Denominator polynomial (as 2D nested lists of 1D arrays).
Denominator polynomial coefficients as a 2D array of 1D coefficients.
Denominator polynomial (as 2D nested lists of 1D arrays).
System timebase.
Feedback interconnection between two LTI objects.
InputOutputSystem
System in the feedback path.
Gain to use in feedback path. Defaults to -1.
Find the index for an input given its name (None if not found).
Signal name for the desired input.
Index of the named input.
Return list of indices matching input spec (None if not found).
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.
List of indices for the specified inputs.
Find the index for a output given its name (None if not found).
Signal name for the desired output.
Index of the named output.
Return list of indices matching output spec (None if not found).
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.
List of indices for the specified outputs.
Find the index for a state given its name (None if not found).
Signal name for the desired state.
Index of the named state.
Return list of indices matching state spec (None if not found).
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.
List of indices for the specified states..
Generate the forced response for the system.
See forced_response
for more information.
Evaluate transfer function at complex frequencies.
Evaluate LTI system response at an array of frequencies.
See frequency_response
for more detailed information.
Evaluate value of transfer function using Horner’s method.
Evaluates sys(x)
where x
is a complex number s
for continuous-time systems and z
for discrete-time systems. Expects inputs and outputs to be formatted correctly. Use sys(x)
for a more user-friendly interface.
Complex frequency at which the transfer function is evaluated.
If True (default), generate a warning if x
is a pole.
Generate the impulse response for the system.
See impulse_response
for more information.
Generate the initial response for the system.
See initial_response
for more information.
List of labels for the input signals.
Check to see if a system is a continuous-time system.
If strict is True, make sure that timebase is not None. Default is False.
Check to see if a system is a discrete-time system.
If strict is True, make sure that timebase is not None. Default is False.
Indicate if a linear time invariant (LTI) system is passive.
See ispassive
for details.
Check to see if a system is single input, single output.
Remove canceling pole/zero pairs from a transfer function.
Tolerance for determining whether poles and zeros overlap.
Generate a Nichols plot for the system.
See nichols_plot
for more information.
Number of system inputs.
Number of system outputs.
Number of system states.
Numerator polynomial (as 2D nested list of 1D arrays).
Numerator polynomial coefficients as a 2D array of 1D coefficients.
Numerator polynomial (as 2D nested list of 1D arrays).
Generate a Nyquist plot for the system.
See nyquist_plot
for more information.
List of labels for the output signals.
Compute the poles of a transfer function.
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_format
parameter when the system is created or by setting the repr_format
property after system creation. Set config.defaults['iosys.repr_format']
to change for all I/O systems or use the repr_format
parameter/attribute for a single system.
Return a 2D array of scipy.signal.lti
objects.
For instance,
>>> out = tfobject.returnScipySignalLTI() >>> out[3, 5]
is a scipy.signal.lti
object corresponding to the transfer function from the 6th input to the 4th output.
The timebase tfobject.dt
cannot be None; it must be continuous (0) or discrete (True or > 0).
if tfobject.dt
is None, continuous-time scipy.signal.lti
objects are returned
scipy.signal.TransferFunction
Continuous time (inheriting from scipy.signal.lti
) or discrete time (inheriting from scipy.signal.dlti
) SISO objects.
Differentiation operator (continuous time).
The s
constant can be used to create continuous-time transfer functions using algebraic expressions.
Examples
>>> s = TransferFunction.s >>> G = (s + 1)/(s**2 + 2*s + 1)
Convert a continuous-time system to discrete time.
Creates a discrete-time system from a continuous-time system by sampling. Multiple methods of conversion are supported.
Sampling period.
Method to use for sampling:
‘gbt’: generalized bilinear transformation
‘backward_diff’: Backwards difference (‘gbt’ with alpha=1.0)
‘bilinear’ (or ‘tustin’): Tustin’s approximation (‘gbt’ with alpha=0.5)
‘euler’: Euler (or forward difference) method (‘gbt’ with alpha=0)
‘matched’: pole-zero match method
‘zoh’: zero-order hold (default)
The generalized bilinear transformation weighting parameter, which should only be specified with method
= ‘gbt’, and is ignored otherwise. See scipy.signal.cont2discrete
.
The frequency [rad/s] at which to match with the input continuous- time system’s magnitude and phase (the gain=1 crossover frequency, for example). Should only be specified with method
= ‘bilinear’ or ‘gbt’ with alpha
= 0.5 and ignored otherwise.
Set the name of the sampled system. If not specified and if copy_names
is False, a generic name ‘sys[id]’ is generated with a unique integer id. If copy_names
is True, the new system name is determined by adding the prefix and suffix strings in config.defaults['iosys.sampled_system_name_prefix']
and config.defaults['iosys.sampled_system_name_suffix']
, with the default being to add the suffix ‘$sampled’.
If True, copy the names of the input signals, output signals, and states to the sampled system.
TransferFunction
system
Discrete-time system, with sample period Ts.
Description of the system inputs. If not specified, the original system inputs are used. See InputOutputSystem
for more information.
Description of the system outputs. Same format as inputs
.
Notes
Available only for SISO systems. Uses scipy.signal.cont2discrete
.
Examples
>>> sys = ct.tf(1, [1, 1]) >>> sysd = sys.sample(0.5, method='bilinear')
Set the number/names of the system inputs.
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).
If inputs
is 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 the number/names of the system outputs.
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).
If outputs
is 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 the number/names of the system states.
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).
If states
is 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]’.
2-tuple of I/O system dimension, (noutputs, ninputs).
List of labels for the state signals.
Generate the step response for the system.
See step_response
for more information.
Convert to state space representation.
See ss
for details.
Convert to transfer function representation.
See tf
for details.
Update signal and system names for an I/O system.
New system name.
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 InputOutputSystem
for more information.
Description of output signals; defaults to ‘y[i]’.
Description of system states; defaults to ‘x[i]’.
Set the prefix for input signals. Default = ‘u’.
Set the prefix for output signals. Default = ‘y’.
Set the prefix for state signals. Default = ‘x’.
Delay operator (discrete time).
The z
constant can be used to create discrete-time transfer functions using algebraic expressions.
Examples
>>> z = TransferFunction.z >>> G = 2 * z / (4 * z**3 + 3*z - 1)
Compute the zeros of a transfer function.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4