2024-04-29 17:17:48 发布
网友
我想用python模拟/建模一个闭环、线性、时不变系统(特别是一个锁定PLL近似)。
模型中的每个子块都有一个已知的传递函数,它是以复频率H(s) = K / ( s * tau + 1 )给出的。使用该模型,我想了解当参数(如VCO增益)改变时,系统响应和噪声响应是如何受到影响的。这将涉及使用波特图和根轨迹图。
H(s) = K / ( s * tau + 1 )
我应该寻找哪些Python模块来完成这项工作?
我知道这有点老了,但一次调查就引出了这个问题。当我找不到合适的模块时,我就把它组装起来了。不算多,但如果有人发现自己在这里,这是个好的开始。
import matplotlib.pylab as plt import numpy as np import scipy.signal def bode(G,f=np.arange(.01,100,.01)): plt.figure() jw = 2*np.pi*f*1j y = np.polyval(G.num, jw) / np.polyval(G.den, jw) mag = 20.0*np.log10(abs(y)) phase = np.arctan2(y.imag, y.real)*180.0/np.pi % 360 plt.subplot(211) #plt.semilogx(jw.imag, mag) plt.semilogx(f,mag) plt.grid() plt.gca().xaxis.grid(True, which='minor') plt.ylabel(r'Magnitude (db)') plt.subplot(212) #plt.semilogx(jw.imag, phase) plt.semilogx(f,phase) plt.grid() plt.gca().xaxis.grid(True, which='minor') plt.ylabel(r'Phase (deg)') plt.yticks(np.arange(0, phase.min()-30, -30)) return mag, phase f=scipy.signal.lti([1],[1,1]) bode(f)
编辑:我回来是因为有人投票给了我这个答案,你应该试试Control Systems Library。他们已经用匹配的语法和所有东西实现了大部分的Matlab控制系统工具箱。
正如“马特”所说,我知道这是旧的。但这是我在谷歌的第一次点击,所以我想编辑它。
您可以使用scipy.signal.lti来建模线性、时不变系统。这给了你lti.bode。
scipy.signal.lti
lti.bode
对于H(s)=(As^2+Bs+C)/(Ds^2+Es+F)形式的脉冲响应,您可以输入h = scipy.signal.lti([A,B,C],[D,E,F])。为了得到bode图,你可以做plot(*h.bode()[:2])。
h = scipy.signal.lti([A,B,C],[D,E,F])
plot(*h.bode()[:2])
根据http://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.bode.html 现在您可以使用:
from scipy import signal import matplotlib.pyplot as plt s1 = signal.lti([1], [1, 1]) w, mag, phase = signal.bode(s1) plt.figure() plt.semilogx(w, mag) # bode magnitude plot plt.figure() plt.semilogx(w, phase) # bode phase plot plt.show()
我知道这有点老了,但一次调查就引出了这个问题。当我找不到合适的模块时,我就把它组装起来了。不算多,但如果有人发现自己在这里,这是个好的开始。
编辑:我回来是因为有人投票给了我这个答案,你应该试试Control Systems Library。他们已经用匹配的语法和所有东西实现了大部分的Matlab控制系统工具箱。
正如“马特”所说,我知道这是旧的。但这是我在谷歌的第一次点击,所以我想编辑它。
您可以使用
scipy.signal.lti
来建模线性、时不变系统。这给了你lti.bode
。对于H(s)=(As^2+Bs+C)/(Ds^2+Es+F)形式的脉冲响应,您可以输入
h = scipy.signal.lti([A,B,C],[D,E,F])
。为了得到bode图,你可以做plot(*h.bode()[:2])
。根据http://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.bode.html 现在您可以使用:
相关问题 更多 >
编程相关推荐