python中的线性系统连接与scipy

时间:2012-08-08 13:39:00

标签: python signals scipy

我目前正在使用Scipy的信号处理模块scipy.signals来检查线性时不变(LTI)系统。我想知道如何最好地将系统连接在一起。例如,假设我想连接两个系统

from scipy import signal

a = signal.lti([T1,0],[T1,1])
b = signal.lti(1,[T2,1])

串联。

我能做到这一点
cnum=signal.convolve(a.num,b.num)
cden=signal.convolve(a.den,b.den)    
c=signal.lti(cnum,cden)

获得最终系统。这种表示法虽然不是很优雅,特别是如果我们处理两个以上的系统。此外,并行连接两个这样的系统或通过另一个系统反馈信号并不是那么简单。

我看到我可以安装python-control系统库,但如果Scipy以某种方式不包含此功能,我会感到非常惊讶。

如何最优雅地互连LTI系统?

1 个答案:

答案 0 :(得分:2)

发布此信息以防其他人出现此情况。

您可以按照以下方式开发信号处理功能,以串联信号。

import scipy.signal as signal

def signal_processor(signals):
    """ Must pass an iterable containing sigal.lti signals """
    (result, signals) = (signals[0], signals[1:])
    for sig in signals:
        cnum = signal.convolve(result.num, sig.num)
        cden = signal.convolve(result.den, sig.den)
        result = signal.lti(cnum, cden)
    return result

 # Can then be used as follows:
 series_signal = signal_processor([sigA, sigB, sigC])

我将看一下将其扩展到构建它以处理其他用例。