3

我目前正在使用 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 系统?

4

1 回答 1

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

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

于 2013-08-15T02:01:49.147 回答