本文简要介绍 python 语言中 scipy.signal.firwin2
的用法。
用法:
scipy.signal.firwin2(numtaps, freq, gain, *, nfreqs=None, window='hamming', nyq=<object object>, antisymmetric=False, fs=None)#
使用窗口方法设计 FIR 滤波器。
根据给定的频率 freq 和相应的增益增益,此函数构造一个具有线性相位和(近似)给定频率响应的 FIR 滤波器。
- numtaps: int
FIR 滤波器中的抽头数。 numtaps 必须小于 nfreqs。
- freq: 数组,一维
频率采样点。通常为 0.0 至 1.0,其中 1.0 为奈奎斯特。奈奎斯特频率是一半fs。中的值频率必须是非减的。一个值可以重复一次以实现不连续性。第一个值在频率必须为 0,并且最后一个值必须为
fs/2
。值 0 和fs/2
不得重复。- gain: array_like
滤波器在频率采样点处增益。根据滤波器类型,对增益值应用了某些约束,详细信息请参见注释。
- nfreqs: 整数,可选
用于构造过滤器的插值网格的大小。对于最有效的行为,这应该是 2 加 1 的幂(例如,129、257 等)。默认值是不小于 numtaps 的 2 的最小幂的 1。 nfreqs 必须大于 numtaps。
- window: string or (string, float) or float, or None, 可选
要使用的窗口函数。默认为“hamming”。有关可能值的完整列表,请参阅
scipy.signal.get_window
。如果为 None,则不应用窗口函数。- nyq: 浮点数,可选,已弃用
这就是奈奎斯特频率。 freq 中的每个频率必须介于 0 和 nyq 之间。默认值为 1。
- antisymmetric: 布尔型,可选
产生的脉冲响应是否对称/反对称。有关详细信息,请参阅注释。
- fs: 浮点数,可选
信号的采样频率。每个频率在隔断必须介于 0 和
fs/2
.默认值为 2。
- taps: ndarray
FIR 滤波器的滤波器系数,作为长度为 numtaps 的一维数组。
参数 ::
返回 ::
注意:
根据给定的一组频率和增益,在频域中构建所需的响应。将逆 FFT 应用于所需的响应以创建相关的卷积核,并返回该核的第一个 numtaps 系数,按窗口缩放。
FIR 滤波器将具有线性相位。过滤器的类型由“numtaps”的值和反对称标志决定。有四种可能的组合:
odd numtaps, antisymmetric is False, type I filter is produced
even numtaps, antisymmetric is False, type II filter is produced
odd numtaps, antisymmetric is True, type III filter is produced
even numtaps, antisymmetric is True, type IV filter is produced
除了 I 型滤波器之外,所有滤波器的幅度响应均受以下约束:
type II - zero at the Nyquist frequency
type III - zero at zero and Nyquist frequencies
type IV - zero at zero frequency
参考:
[1]Oppenheim, A. V. 和 Schafer, R. W.,“Discrete-Time 信号处理”,Prentice-Hall,新泽西州恩格尔伍德悬崖 (1989)。 (例如,参见第 7.4 节。)
[2]Smith, Steven W.,“科学家和工程师的数字信号处理指南”,第 1 章。 17.http://www.dspguide.com/ch17/1.htm
例子:
一个低通 FIR 滤波器,其响应在 [0.0, 0.5] 上为 1,并且在 [0.5, 1.0] 上从 1 线性减小到 0:
>>> from scipy import signal >>> taps = signal.firwin2(150, [0.0, 0.5, 1.0], [1.0, 1.0, 0.0]) >>> print(taps[72:78]) [-0.02286961 -0.06362756 0.57310236 0.57310236 -0.06362756 -0.02286961]
相关用法
- Python SciPy signal.firwin用法及代码示例
- Python SciPy signal.firls用法及代码示例
- Python SciPy signal.find_peaks用法及代码示例
- Python SciPy signal.filtfilt用法及代码示例
- Python SciPy signal.findfreqs用法及代码示例
- Python SciPy signal.find_peaks_cwt用法及代码示例
- Python SciPy signal.freqs用法及代码示例
- Python SciPy signal.freqs_zpk用法及代码示例
- Python SciPy signal.freqz用法及代码示例
- Python SciPy signal.freqresp用法及代码示例
- Python SciPy signal.fftconvolve用法及代码示例
- Python SciPy signal.freqz_zpk用法及代码示例
- 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用法及代码示例
- Python SciPy signal.lfilter用法及代码示例
注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.signal.firwin2。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。