TypeError:abs()的坏操作数类型:' list'

时间:2016-11-10 15:00:06

标签: python scipy signals

以下简单代码返回: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]

......,但没有任何区别。

我做错了吗? 有没有解决方法?

我提到bad operand type for abs(): 'list',但我不能应用该解决方案,因为__builtin __。abs()函数用于scipy.signal.residue(不在我的代码中)。

1 个答案:

答案 0 :(得分:2)

查看文档docs,您似乎误认为输出的输入。 residue需要 a b 并返回 r p k

第三个参数( tol )应该是一个数字,但是你要传递一个列表。

您可能使用了错误的方法。看看scipy.signal.invres,这应该是你想要的。