from scipy.signal import lti, lsim
# 微分環節的參數
T = 10 # 時間常數
# 創建慣性環節的傳遞函數
num = [T,0]
den = [T, 1]
system = lti(num, den)
# 10s
#-------
# 10s+1
# 計算階躍響應
t = np.linspace(0, 50, 500)
dt = 0.1
y = np.zeros(len(t))
y1 = np.zeros(len(t))
out = np.zeros(len(t))
r = np.ones(len(t))
for i in range(len(t)):
if i < 10:
r[i] = 0
else:
r[i] = 1
#傳遞函數
t,y,u = lsim(system, r,t)
# 傳遞函數離散化
for i in range(1,len(t)):
out[i] = (1-dt/T)*out[i-1]+(dt/T)*r[i-1]
y1[i] = r[i]-out[i]
# 繪制階躍響應曲線
plt.figure(figsize=(10, 6))
plt.plot(t, y,label='傳遞函數')
plt.plot(t,y1,label='離散化')
plt.plot(t,r,label='階躍信號')
plt.title('微分環節的階躍響應')
plt.xlabel('時間 (s)')
plt.ylabel('輸出')
plt.legend()
plt.grid(True)
plt.show()
![]()