當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Python SciPy signal.bilinear_zpk用法及代碼示例

本文簡要介紹 python 語言中 scipy.signal.bilinear_zpk 的用法。

用法:

scipy.signal.bilinear_zpk(z, p, k, fs)#

使用雙線性變換從模擬濾波器返回數字 IIR 濾波器。

使用 Tustin 的方法將一組極點和零點從模擬 s-plane 轉換為數字 z-plane,該方法用 2*fs*(z-1) / (z+1) 代替 s ,保持頻率響應的形狀。

參數

z array_like

模擬濾波器傳遞函數的零點。

p array_like

模擬濾波器傳遞函數的極點。

k 浮點數

模擬濾波器傳遞函數的係統增益。

fs 浮點數

采樣率,作為普通頻率(例如,赫茲)。此函數中不進行預變形。

返回

z ndarray

變換後的數字濾波器傳遞函數的零點。

p ndarray

變換後的數字濾波器傳遞函數的極點。

k 浮點數

變換後的數字濾波器的係統增益。

注意

例子

>>> import numpy as np
>>> from scipy import signal
>>> import matplotlib.pyplot as plt
>>> fs = 100
>>> bf = 2 * np.pi * np.array([7, 13])
>>> filts = signal.lti(*signal.butter(4, bf, btype='bandpass', analog=True,
...                                   output='zpk'))
>>> filtz = signal.lti(*signal.bilinear_zpk(filts.zeros, filts.poles,
...                                         filts.gain, fs))
>>> wz, hz = signal.freqz_zpk(filtz.zeros, filtz.poles, filtz.gain)
>>> ws, hs = signal.freqs_zpk(filts.zeros, filts.poles, filts.gain,
...                           worN=fs*wz)
>>> plt.semilogx(wz*fs/(2*np.pi), 20*np.log10(np.abs(hz).clip(1e-15)),
...              label=r'$|H_z(e^{j \omega})|$')
>>> plt.semilogx(wz*fs/(2*np.pi), 20*np.log10(np.abs(hs).clip(1e-15)),
...              label=r'$|H(j \omega)|$')
>>> plt.legend()
>>> plt.xlabel('Frequency [Hz]')
>>> plt.ylabel('Magnitude [dB]')
>>> plt.grid(True)
scipy-signal-bilinear_zpk-1.png

相關用法


注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.signal.bilinear_zpk。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。