Scipy 双线性变换

Scipy Bilinear Transformation

所以我试图用 scipy 执行这个双线性变换,但最终结果没有 配书

题目中T = 1/2 。因此fs = 1/T = 2 。如果我错了请纠正我

 import scipy.signal as s 

 z = s.bilinear([0.1,1],[16.01,0.2,1],2)

Result
 z = (array([0.0054272 , 0.00775314, 0.00232594]), array([ 1.        , -1.97829121,  0.99379749]))

示例中来自 bilinear's docs one uses an lti 对象。 lti 的文档指出

If (numerator, denominator) is passed in for *system, coefficients for both the numerator and denominator should be specified in descending exponent order (e.g., s^2 + 3s + 5 would be represented as [1, 3, 5]).

这是一个提示,所以代码是

z = s.bilinear([1,0.1],[1,0.2,16.01],2)
print(z)

系数顺序相反。输出是

(array([ 0.1249619,  0.0060957, -0.1188662]), array([1.00000000e+00, 6.09570253e-04, 9.51234380e-01]))

这与书中给出的值非常接近,由于数值微积分效应,几乎可以肯定存在差异。但是,我不知道为什么输出包含非反转顺序的系数,而且我无法在文档中找到扩展信息。