首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为离散LTI系统创建scipy.lti对象?

如何为离散LTI系统创建scipy.lti对象?
EN

Stack Overflow用户
提问于 2013-08-20 11:01:50
回答 2查看 2K关注 0票数 4

在subject中,我使用python/numpy/scipy进行一些数据分析,我想为离散系统创建一个LTI类的对象,指定(num,den,dt)或(零,极,增益,dt),甚至(A,B,C,D,dt),但是文档从来没有提到如何做到这一点。

尽管如此,还是有像dsim/dstep/dimpulse这样的函数可以获取LTI对象并对其执行操作,所以我猜这是可能的。一旦我有了它,我想做一些事情,比如从一种表示转换为另一种表示(num/den -> zpk -> A,B,C,D),绘制Bode图,等等。

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

EN

回答 2

Stack Overflow用户

发布于 2013-08-20 14:47:00

似乎scipy.signal.lti类只适用于连续时间系统。查看例如scipy.signal.dstep的文档,你会得到:

代码语言:javascript
复制
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)

因此,对于lti类的对象,参数system不能。虽然scipy.signal.dlsim的文档确实声明它接受LTI实例,但我认为这是错误的。至少在scipy 0.10.0中,我得到了:

代码语言:javascript
复制
TypeError: object of type 'lti' has no len()

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

票数 2
EN

Stack Overflow用户

发布于 2014-03-01 20:26:34

我认为在scipy中有一点不一致。一方面,您可以使用以下内容定义lti系统:

代码语言:javascript
复制
>> sys = sig.lti([1],[1,1])

此系统的类型为:

代码语言:javascript
复制
>> type(sys)
scipy.signal.ltisys.lti

scipy.signal.ltisys下的许多模拟系统的过程对于这些类型的系统都工作得很好,但对于您在flat scipy中找到的那些则不是这样。在这里,您还可以使用以下命令以不同方式定义系统:

代码语言:javascript
复制
sys_ss = scipy.signal.tf2ss([1],[1,2])
sysd_ss = scipy.signal.cont2discrete(sys_ss,1.0/10)
t,y = scipy.signal.dstep(sysd_ss)

要绘制它,你可以这样做:

代码语言:javascript
复制
plt.plot(t,y[0])

signal.tf2ss创建的对象只是一个带有状态空间矩阵的元组。要么我不是很好地理解它(我碰巧在python方面没有太多的经验),要么就是它相当混乱。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18326309

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档