【问题标题】:linear system connections in python with scipypython中的线性系统连接与scipy
【发布时间】:2012-08-08 13:38:59
【问题描述】:

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

【问题讨论】:

标签: python signals scipy


【解决方案1】:

发布这个以防其他人出现。

您可以开发如下信号处理函数来串联信号。

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

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

【讨论】:

    猜你喜欢
    • 2015-08-03
    • 1970-01-01
    • 1970-01-01
    • 2019-01-21
    • 1970-01-01
    • 1970-01-01
    • 2015-08-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多