2012-08-08 53 views
3

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

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控制系统库,但是如果scipy以某种方式不包含此功能,我会感到很惊讶。

我怎样才能最优雅地连接LTI系统?

回答

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

我来看看如何扩展它来处理其他用例。