用法:
cusignal.filter_design.fir_filter_design.firwin(numtaps, cutoff, width=None, window='hamming', pass_zero=True, scale=True, nyq=None, fs=None, gpupath=True)
使用窗口方法设计 FIR 滤波器。
该函数计算有限脉冲响应滤波器的系数。滤波器将具有线性相位;如果
numtaps
为奇数,则为 Type I,如果numtaps
为偶数,则为 Type II。II 型滤波器在奈奎斯特频率处始终具有零响应,因此如果使用
numtaps
even 调用 firwin 并且具有右端处于奈奎斯特频率的通带,则会引发 ValueError 异常。- numtaps:int
滤波器的长度(系数的数量,即滤波器阶数 + 1)。如果通带包括奈奎斯特频率,
numtaps
必须是奇数。- cutoff:float 或 1D 数组
滤波器的截止频率(以与
fs
相同的单位表示)或截止频率数组(即频带边)。在后一种情况下,cutoff
中的频率应该是正的并且在 0 和fs/2
之间单调递增。值 0 和fs/2
不得包含在cutoff
中。- width:浮点数或无,可选
如果
width
不是 None,则假定它是用于 Kaiser FIR 滤波器设计的过渡区域的近似宽度(以与fs
相同的单位表示)。在这种情况下,window
参数将被忽略。- window:字符串或字符串和参数值的元组,可选
想要使用的窗口。有关窗口和所需参数的列表,请参见
cusignal.get_window
。- pass_zero:{对,错,‘bandpass’, ‘lowpass’, ‘highpass’, ‘bandstop’},
可选 如果为真,则频率 0(即“DC gain”)处的增益为 1。如果为假,则直流增益为 0。也可以是所需滤波器类型的字符串参数(相当于 IIR 设计函数中的
btype
)。1.3.0 版中的新函数:支持字符串参数。
- scale:布尔型,可选
设置为 True 以缩放系数,以便频率响应在某个频率处完全一致。该频率是:
- 0 (DC) 如果第一个通带从 0 开始(即 pass_zero 为真)
fs/2
(奈奎斯特频率)如果第一个通带结束于fs/2
(即滤波器是单频带高通滤波器);否则为第一通带中心
- nyq:浮点数,可选
Deprecated. Use `fs` instead.
这是奈奎斯特频率。cutoff
中的每个频率必须介于 0 和nyq
之间。默认值为 1。- fs:浮点数,可选
信号的采样频率。
cutoff
中的每个频率必须介于 0 和fs/2
之间。默认值为 2。- gpupath:布尔型,可选
滤波器设计的可选路径。如果过滤器尺寸很小,gpupath == False 可能是可取的。
- h:(numtaps,) ndarray
长度系数
numtaps
FIR 滤波器。
- ValueError
如果
cutoff
中的任何值小于或等于 0 或大于或等于fs/2
,如果cutoff
中的值不是严格单调递增的,或者如果numtaps
是偶数但通带包括奈奎斯特频率。
参数:
返回:
抛出:
例子:
Low-pass 从 0 到 f:
>>> import cusignal >>> numtaps = 3 >>> f = 0.1 >>> cusignal.firwin(numtaps, f) array([ 0.06799017, 0.86401967, 0.06799017])
使用特定的窗口函数:
>>> cusignal.firwin(numtaps, f, window='nuttall') array([ 3.56607041e-04, 9.99286786e-01, 3.56607041e-04])
High-pass(‘stop’ 从 0 到 f):
>>> cusignal.firwin(numtaps, f, pass_zero=False) array([-0.00859313, 0.98281375, -0.00859313])
Band-pass:
>>> f1, f2 = 0.1, 0.2 >>> cusignal.firwin(numtaps, [f1, f2], pass_zero=False) array([ 0.06301614, 0.88770441, 0.06301614])
Band-stop:
>>> cusignal.firwin(numtaps, [f1, f2]) array([-0.00801395, 1.0160279 , -0.00801395])
多频段(通带为 [0, f1]、[f2, f3] 和 [f4, 1]):
>>> f3, f4 = 0.3, 0.4 >>> cusignal.firwin(numtaps, [f1, f2, f3, f4]) array([-0.01376344, 1.02752689, -0.01376344])
多频段(通带为 [f1, f2] 和 [f3,f4]):
>>> cusignal.firwin(numtaps, [f1, f2, f3, f4], pass_zero=False) array([ 0.04890915, 0.91284326, 0.04890915])
相关用法
- Python cusignal.filter_design.fir_filter_design.cmplx_sort用法及代码示例
- Python cusignal.filtering.resample.resample_poly用法及代码示例
- Python cusignal.filtering.resample.resample用法及代码示例
- Python cusignal.windows.windows.hann用法及代码示例
- Python cusignal.windows.windows.general_gaussian用法及代码示例
- Python cusignal.waveforms.waveforms.chirp用法及代码示例
- Python cusignal.windows.windows.gaussian用法及代码示例
- Python cusignal.windows.windows.hamming用法及代码示例
- Python cusignal.windows.windows.get_window用法及代码示例
- Python cusignal.waveforms.waveforms.gausspulse用法及代码示例
- Python cusignal.peak_finding.peak_finding.argrelmin用法及代码示例
- Python cusignal.windows.windows.bartlett用法及代码示例
- Python cusignal.spectral_analysis.spectral.welch用法及代码示例
- Python cusignal.windows.windows.chebwin用法及代码示例
- Python cusignal.windows.windows.general_cosine用法及代码示例
- Python cusignal.peak_finding.peak_finding.argrelextrema用法及代码示例
- Python cusignal.convolution.convolve.convolve2d用法及代码示例
- Python cusignal.convolution.correlate.correlate用法及代码示例
- Python cusignal.convolution.convolve.fftconvolve用法及代码示例
- Python cusignal.waveforms.waveforms.unit_impulse用法及代码示例
注:本文由纯净天空筛选整理自rapids.ai大神的英文原创作品 cusignal.filter_design.fir_filter_design.firwin。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。