在主题中,我正在使用 python/numpy/scipy 进行一些数据分析,并且我想为离散系统创建一个 LTI 类的对象,指定 (num, den, dt) 或 (zeros,poles, gain, dt) 甚至 (A, B, C, D, dt),但文档从未提及如何做到这一点。

尽管如此,还是有像 dsim/dstep/dimpulse 这样的函数可以接受一个 LTI 对象并用它做事,所以我想这是可能的。一旦我有了它,我想做一些事情,比如从一种表示转换为另一种(num/den -> zpk -> A、B、C、D),绘制波特图等。

此外,我完全不清楚 (num, den, dt) 表示是否会使用 z 或 z^-1 的系数,因为我认为没有明确的标准。

最佳答案

似乎 scipy.signal.lti 类仅适用于连续时间系统。检查例如 scipy.signal.dstep 的文档,可以得到:

system : a tuple describing the system.
    The following gives the number of elements in the tuple and
    the interpretation.
      * 3: (num, den, dt)
      * 4: (zeros, poles, gain, dt)
      * 5: (A, B, C, D, dt)

所以参数 system 不能被类 lti 的对象所引用。虽然 scipy.signal.dlsim 的文档确实声明它接受 LTI 实例,但我认为这是错误的。至少使用 scipy 0.10.0,我得到:
TypeError: object of type 'lti' has no len()

所以显然 dlsim 也希望 system 参数是一个元组。

关于python - 如何为离散 LTI 系统创建 scipy.lti 对象?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18326309/

10-12 20:29