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()
dcgain() Return the zero-frequency (or DC) gain
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.
dcgain()

Return the zero-frequency (or DC) gain

For a continous-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)

Returns:

gain : ndarray

The zero-frequency gain

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

  1. Available only for SISO systems
  2. 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.