在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的系数,因为我认为没有明确的标准。
发布于 2013-08-20 14:47:00
似乎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)因此,对于lti类的对象,参数system不能。虽然scipy.signal.dlsim的文档确实声明它接受LTI实例,但我认为这是错误的。至少在scipy 0.10.0中,我得到了:
TypeError: object of type 'lti' has no len()显然,dlsim也希望system参数是一个元组。
发布于 2014-03-01 20:26:34
我认为在scipy中有一点不一致。一方面,您可以使用以下内容定义lti系统:
>> sys = sig.lti([1],[1,1])此系统的类型为:
>> type(sys)
scipy.signal.ltisys.ltiscipy.signal.ltisys下的许多模拟系统的过程对于这些类型的系统都工作得很好,但对于您在flat scipy中找到的那些则不是这样。在这里,您还可以使用以下命令以不同方式定义系统:
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)要绘制它,你可以这样做:
plt.plot(t,y[0])signal.tf2ss创建的对象只是一个带有状态空间矩阵的元组。要么我不是很好地理解它(我碰巧在python方面没有太多的经验),要么就是它相当混乱。
https://stackoverflow.com/questions/18326309
复制相似问题