tf2zpk#
- scipy.signal.tf2zpk(b, a)[source]#
Return zero, pole, gain (z, p, k) representation from a numerator, denominator representation of a linear filter.
- Parameters:
- barray_like
Numerator polynomial coefficients.
- aarray_like
Denominator polynomial coefficients.
- Returns:
- zndarray
Zeros of the transfer function.
- pndarray
Poles of the transfer function.
- kfloat
System gain.
Notes
If some values of b are too close to 0, they are removed. In that case, a BadCoefficients warning is emitted.
The b and a arrays are interpreted as coefficients for positive, descending powers of the transfer function variable. So the inputs and can represent an analog filter of the form:
or a discrete-time filter of the form:
This “positive powers” form is found more commonly in controls engineering. If M and N are equal (which is true for all filters generated by the bilinear transform), then this happens to be equivalent to the “negative powers” discrete-time form preferred in DSP:
Although this is true for common filters, remember that this is not true in the general case. If M and N are not equal, the discrete-time transfer function coefficients must first be converted to the “positive powers” form before finding the poles and zeros.
Examples
Find the zeroes, poles and gain of a filter with the transfer function
>>> from scipy.signal import tf2zpk >>> tf2zpk([3, 0, 0], [1, 5, 13]) ( array([ 0. , 0. ]), array([ -2.5+2.59807621j , -2.5-2.59807621j]), 3.0)