本文簡要介紹 python 語言中 scipy.signal.lfilter_zi
的用法。
用法:
scipy.signal.lfilter_zi(b, a)#
為階躍響應 steady-state 構建 lfilter 的初始條件。
計算初始狀態子為了scipy.signal.lfilter對應於階躍響應的穩態的函數。
此函數的典型用途是設置初始狀態,以便濾波器的輸出從與要濾波的信號的第一個元素相同的值開始。
- b, a: 數組 (1-D)
IIR 濾波器係數。有關詳細信息,請參閱
lfilter
。
- zi: 一維ndarray
過濾器的初始狀態。
參數 ::
返回 ::
注意:
m階線性濾波器有一個狀態空間表示(A, B, C, D),對於它,濾波器的輸出y可以表示為:
z(n+1) = A*z(n) + B*x(n) y(n) = C*z(n) + D*x(n)
其中 z(n) 是長度為 m 的向量,A 的形狀為 (m, m),B 的形狀為 (m, 1),C 的形狀為 (1, m),D 的形狀為 (1, 1)(假設 x (n) 是一個標量)。 lfilter_zi 解決:
zi = A*zi + B
換句話說,它找到了對所有輸入的響應為常數的初始條件。
給定濾波器係數 a 和 b,線性濾波器的轉置直接形式 II 實現的狀態空間矩陣,它是 scipy.signal.lfilter 使用的實現,是:
A = scipy.linalg.companion(a).T B = b[1:] - a[1:]*b[0]
假設 a[0] 為 1.0;如果 a[0] 不為 1,則 a 和 b 先除以 a[0]。
例子:
以下代碼創建一個低通巴特沃斯濾波器。然後它將該過濾器應用於值全為 1.0 的數組;正如低通濾波器所預期的那樣,輸出也全部為 1.0。如果子的論點scipy.signal.lfilter沒有給出,輸出將顯示瞬態信號。
>>> from numpy import array, ones >>> from scipy.signal import lfilter, lfilter_zi, butter >>> b, a = butter(5, 0.25) >>> zi = lfilter_zi(b, a) >>> y, zo = lfilter(b, a, ones(10), zi=zi) >>> y array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])
另一個例子:
>>> x = array([0.5, 0.5, 0.5, 0.0, 0.0, 0.0, 0.0]) >>> y, zf = lfilter(b, a, x, zi=zi*x[0]) >>> y array([ 0.5 , 0.5 , 0.5 , 0.49836039, 0.48610528, 0.44399389, 0.35505241])
請注意,子參數scipy.signal.lfilter計算使用
lfilter_zi
並按比例縮放x[0].然後輸出y在輸入從 0.5 下降到 0.0 之前沒有瞬態。
相關用法
- Python SciPy signal.lfilter用法及代碼示例
- Python SciPy signal.lp2hp用法及代碼示例
- Python SciPy signal.lti用法及代碼示例
- Python SciPy signal.lp2bs_zpk用法及代碼示例
- Python SciPy signal.lp2bp_zpk用法及代碼示例
- Python SciPy signal.lsim用法及代碼示例
- Python SciPy signal.lp2bs用法及代碼示例
- Python SciPy signal.lp2bp用法及代碼示例
- Python SciPy signal.lp2hp_zpk用法及代碼示例
- Python SciPy signal.lsim2用法及代碼示例
- 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.lfilter_zi。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。