control.TransferFunction¶
- class control.TransferFunction(*args)¶
A class for representing transfer functions
The TransferFunction class is used to represent systems in transfer function form.
The main data members are ‘num’ and ‘den’, which are 2-D lists of arrays containing MIMO numerator and denominator coefficients. For example,
>>> num[2][5] = numpy.array([1., 4., 8.])
means that the numerator of the transfer function from the 6th input to the 3rd output is set to s^2 + 4s + 8.
Discrete-time transfer functions are implemented by using the ‘dt’ instance variable and setting it to something other than ‘None’. If ‘dt’ has a non-zero value, then it must match whenever two transfer functions are combined. If ‘dt’ is set to True, the system will be treated as a discrete time system with unspecified sampling time.
- __init__(*args)¶
Construct a transfer function.
The default constructor is TransferFunction(num, den), where num and den are lists of lists of arrays containing polynomial coefficients. To crete a discrete time transfer funtion, use TransferFunction(num, den, dt). To call the copy constructor, call TransferFunction(sys), where sys is a TransferFunction object (continuous or discrete).
Methods
__init__(*args) Construct a transfer function. damp() evalfr(omega) Evaluate a transfer function at a single angular frequency. feedback([other, sign]) Feedback interconnection between two LTI objects. freqresp(omega) Evaluate a transfer function at a list of angular frequencies. horner(s) Evaluate the systems’s transfer function for a complex variable isctime([strict]) Check to see if a system is a continuous-time system isdtime([strict]) Check to see if a system is a discrete-time system issiso() minreal([tol]) Remove cancelling pole/zero pairs from a transfer function pole() Compute the poles of a transfer function. returnScipySignalLTI() Return a list of a list of scipy.signal.lti objects. sample(Ts[, method, alpha]) Convert a continuous-time system to discrete time zero() Compute the zeros of a transfer function. - evalfr(omega)¶
Evaluate a transfer function at a single angular frequency.
self.evalfr(omega) returns the value of the transfer function matrix with input value s = i * omega.
- feedback(other=1, sign=-1)¶
Feedback interconnection between two LTI objects.
- freqresp(omega)¶
Evaluate a transfer function at a list of angular frequencies.
mag, phase, omega = self.freqresp(omega)
reports the value of the magnitude, phase, and angular frequency of the transfer function matrix evaluated at s = i * omega, where omega is a list of angular frequencies, and is a sorted version of the input omega.
- horner(s)¶
Evaluate the systems’s transfer function for a complex variable
Returns a matrix of values evaluated at complex variable s.
- isctime(strict=False)¶
Check to see if a system is a continuous-time system
Parameters: sys : LTI system
System to be checked
strict: bool (default = False)
If strict is True, make sure that timebase is not None
- isdtime(strict=False)¶
Check to see if a system is a discrete-time system
Parameters: strict: bool (default = False)
If strict is True, make sure that timebase is not None
- minreal(tol=None)¶
Remove cancelling pole/zero pairs from a transfer function
- pole()¶
Compute the poles of a transfer function.
- returnScipySignalLTI()¶
Return a list of a list of scipy.signal.lti objects.
For instance,
>>> out = tfobject.returnScipySignalLTI() >>> out[3][5]
is a signal.scipy.lti object corresponding to the transfer function from the 6th input to the 4th output.
- sample(Ts, method='zoh', alpha=None)¶
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.
Parameters: Ts : float
Sampling period
method : {“gbt”, “bilinear”, “euler”, “backward_diff”, “zoh”, “matched”}
Which method to use:
- gbt: generalized bilinear transformation
- bilinear: Tustin’s approximation (“gbt” with alpha=0.5)
- euler: Euler (or forward differencing) method (“gbt” with alpha=0)
- backward_diff: Backwards differencing (“gbt” with alpha=1.0)
- zoh: zero-order hold (default)
alpha : float within [0, 1]
The generalized bilinear transformation weighting parameter, which should only be specified with method=”gbt”, and is ignored otherwise
Returns: sysd : StateSpace system
Discrete time system, with sampling rate Ts
Notes
- Available only for SISO systems
- Uses the command cont2discrete from scipy.signal
Examples
>>> sys = TransferFunction(1, [1,1]) >>> sysd = sys.sample(0.5, method='bilinear')
- zero()¶
Compute the zeros of a transfer function.