gpt4 book ai didi

python - 从 Scipy 过滤器设计构建 SymPy 有理函数

转载 作者:太空宇宙 更新时间:2023-11-04 05:06:46 27 4
gpt4 key购买 nike

为什么 num_den_to_sympy(b, a)sy.simplify(sy.expand(tf)) 不一样?扩展版多了一个s ** 4 不知道从哪里来的。

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)))

最佳答案

问题是系数顺序不一致。 SciPy 从最低到最高程度对它们进行排序。 SymPy 的 Poly 构造函数期望它们从最高到最低:例如,Poly([1, 0, 0], s)s**2

如果在使用 Poly 时反转系数,则两个结果是相同的。

G = sy.Poly(num[::-1], s) / sy.Poly(den[::-1], s)

关于python - 从 Scipy 过滤器设计构建 SymPy 有理函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44230262/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com