下面的简单代码返回:TypeError: abs()的错误操作数类型:'list'
from scipy.signal import residue
def x_filter():
p = [complex(-2505.707527665261,3165.104073896715),complex(-2505.707527665261,-3165.104073896715),complex(-3449.516723926777,1032.914743287806),complex(-3449.516723926777,-1032.914743287806)]
r = [complex(-1981.17378001573,2672.79673635191),complex(-1981.17378001573,-2672.79673635191),complex(1981.17378001573,-10000.37025226017),complex(1981.17378001573,10000.37025226017)]
k = []
[b,a]=residue(r,p,k)
filtered = x_filter()
我将p和r替换为:
p = [-2505.707527665261+3165.104073896715j,-2505.707527665261-3165.104073896715j,-3449.516723926777+1032.914743287806j,-3449.516723926777-1032.914743287806j]
r = [-1981.17378001573+2672.79673635191j,-1981.17378001573-2672.79673635191j,1981.17378001573-10000.37025226017j,1981.17378001573+10000.37025226017j]
…,但没有区别。
我做错了什么吗?有什么变通办法吗?
我提到了abs()的坏操作数类型:'list',但我不能应用该解决方案,因为__builtin__.abs()函数在scipy.signal.residue中使用(不在我的代码中)。
查看文档文档,似乎您将输入误认为输出了。residue
需要和 b 并返回 r , p 和 k 。
第三个参数(tol)应该是一个数字,但是你传递的是一个列表。
你可能用错了方法。看一下scipy.signal。