本文簡要介紹 python 語言中 scipy.signal.lsim
的用法。
用法:
scipy.signal.lsim(system, U, T, X0=None, interp=True)#
模擬continuous-time 線性係統的輸出。
- system: LTI 類的實例或說明係統的元組。
下麵給出元組中元素的數量和解釋:
1:(
lti
的實例)2:(數字,書房)
3:(零點、極點、增益)
4:(A、B、C、D)
- U: array_like
說明每個時間 T 的輸入的輸入數組(假定在給定時間之間進行插值)。如果有多個輸入,則 rank-2 數組的每一列代表一個輸入。如果 U = 0 或 None,則使用零輸入。
- T: array_like
定義輸入和期望輸出的時間步長。必須是非負的、遞增的和等距的。
- X0: 數組,可選
狀態向量的初始條件(默認為零)。
- interp: 布爾型,可選
是否對輸入數組使用線性(True,默認值)或 zero-order-hold (False) 插值。
- T: 一維ndarray
輸出的時間值。
- yout: 一維ndarray
係統響應。
- xout: ndarray
狀態向量的時間演化。
參數 ::
返回 ::
注意:
如果 (num, den) 為
system
傳入,則分子和分母的係數應按 index 降序指定(例如s^2 + 3s + 5
將表示為[1, 3, 5]
)。例子:
我們將使用
lsim
來模擬應用於信號的模擬貝塞爾濾波器。>>> import numpy as np >>> from scipy.signal import bessel, lsim >>> import matplotlib.pyplot as plt
創建一個截止頻率為 12 Hz 的 low-pass Bessel 濾波器。
>>> b, a = bessel(N=5, Wn=2*np.pi*12, btype='lowpass', analog=True)
生成應用過濾器的數據。
>>> t = np.linspace(0, 1.25, 500, endpoint=False)
輸入信號是三個正弦曲線的總和,頻率分別為 4 Hz、40 Hz 和 80 Hz。濾波器應該主要消除 40 Hz 和 80 Hz 分量,隻留下 4 Hz 信號。
>>> u = (np.cos(2*np.pi*4*t) + 0.6*np.sin(2*np.pi*40*t) + ... 0.5*np.cos(2*np.pi*80*t))
使用
lsim
模擬濾波器。>>> tout, yout, xout = lsim((b, a), U=u, T=t)
繪製結果。
>>> plt.plot(t, u, 'r', alpha=0.5, linewidth=1, label='input') >>> plt.plot(tout, yout, 'k', linewidth=1.5, label='output') >>> plt.legend(loc='best', shadow=True, framealpha=1) >>> plt.grid(alpha=0.3) >>> plt.xlabel('t') >>> plt.show()
在第二個示例中,我們模擬雙積分器
y'' = u
,輸入常量u = 1
。我們將使用積分器的狀態空間表示。>>> from scipy.signal import lti >>> A = np.array([[0.0, 1.0], [0.0, 0.0]]) >>> B = np.array([[0.0], [1.0]]) >>> C = np.array([[1.0, 0.0]]) >>> D = 0.0 >>> system = lti(A, B, C, D)
t 和 u 定義要模擬的係統的時間和輸入信號。
>>> t = np.linspace(0, 5, num=50) >>> u = np.ones_like(t)
計算模擬,然後繪製y.正如預期的那樣,該圖顯示了曲線
y = 0.5*t**2
.>>> tout, y, x = lsim(system, u, t) >>> plt.plot(t, y) >>> plt.grid(alpha=0.3) >>> plt.xlabel('t') >>> plt.show()
相關用法
- Python SciPy signal.lsim2用法及代碼示例
- Python SciPy signal.lfilter用法及代碼示例
- Python SciPy signal.lfilter_zi用法及代碼示例
- Python SciPy signal.lp2hp用法及代碼示例
- Python SciPy signal.lti用法及代碼示例
- Python SciPy signal.lp2bs_zpk用法及代碼示例
- Python SciPy signal.lp2bp_zpk用法及代碼示例
- Python SciPy signal.lp2bs用法及代碼示例
- Python SciPy signal.lp2bp用法及代碼示例
- Python SciPy signal.lp2hp_zpk用法及代碼示例
- Python SciPy signal.lp2lp_zpk用法及代碼示例
- Python SciPy signal.lp2lp用法及代碼示例
- Python SciPy signal.lombscargle用法及代碼示例
- Python SciPy signal.czt_points用法及代碼示例
- Python SciPy signal.chirp用法及代碼示例
- Python SciPy signal.residue用法及代碼示例
- Python SciPy signal.iirdesign用法及代碼示例
- Python SciPy signal.max_len_seq用法及代碼示例
- Python SciPy signal.kaiser_atten用法及代碼示例
- Python SciPy signal.oaconvolve用法及代碼示例
- Python SciPy signal.hilbert用法及代碼示例
- Python SciPy signal.ricker用法及代碼示例
- Python SciPy signal.group_delay用法及代碼示例
- Python SciPy signal.cheb2ord用法及代碼示例
- Python SciPy signal.get_window用法及代碼示例
注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.signal.lsim。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。