2016-11-10 7 views
1

簡単なコード戻り次の例外TypeError:ABSの悪いオペランドタイプ():私はpとRの置換TypeError例外:ABSの悪いオペランドタイプ(): 'リスト'

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 = [-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で使用されているため、この解決策を適用できません。

+0

なぜ最初にリストを渡そうとしていますか? –

答えて

2

ドキュメントdocsを見ると、出力の入力が誤っているようです。 residueBをとり、RPKを返します。

3番目のパラメータ(tol)は数字である必要がありますが、リストを渡しています。


誤った方法を使用している可能性があります。 scipy.signal.invresをご覧ください。それはあなたが探しているものであるはずです。

+0

ああ、私は見る!私はとても恥ずかしいです...はい、scipy.signal.invresは私が探していたものです。私に言ってくれてありがとう。 – IanHacker

+1

もう一度ありがとう、私に言い訳をさせてください。 MATLABのresidue()は '[r、p、k] = residue(b、a)'と '[b、a] = residue(r、p、k)の両方を行うことができるので、 '。だから、私はそれらを混ぜた。 – IanHacker

関連する問題