2
なぜnum_den_to_sympy(b, a)
とsy.simplify(sy.expand(tf))
が同じではないのですか?展開されたバージョンには追加のs ** 4が含まれており、どこから来たのかわかりません。Scipyフィルタ設計からのSymPy有理関数の構築
import numpy as np
import sympy as sy
from scipy.signal import *
from IPython.display import display
sy.init_printing()
def num_den_to_sympy(num, den, symplify=True):
s = sy.Symbol('s')
G = sy.Poly(num, s)/sy.Poly(den, s)
return sy.simplify(G) if symplify else G
b, a = iirdesign(wp=2 * np.pi * 2.5e3, ws=2 * np.pi * 4.5e3, gpass=1, gstop=26,
analog=True, ftype='cheby1', output='ba')
tf = 1
for sos in tf2sos(b, a):
tf *= num_den_to_sympy(sos[0:3], sos[3:6])
display(num_den_to_sympy(b, a))
display(sy.simplify(sy.expand(tf)))
ありがとうございました!閉ループ・ゲインが10 ** 16であるため、何かが間違っていなければならないと思いました。その価値が合理的かどうか知っていますか? – dvc
申し訳ありませんが、私はこれらのことについて考えていません。恐らく[dsp.se]が助けになるかもしれません。 – FTP