scipy.signal.firwin¶
- scipy.signal.firwin(numtaps, cutoff, width=None, window='hamming', pass_zero=True, scale=True, nyq=None, fs=None)[源代码]¶
冷杉过滤采用窗口法设计。
此函数计算有限脉冲响应过滤的系数。过滤将具有线性相位;如果出现以下情况,则为I型 numtaps 是奇数,如果类型II numtaps 扯平了。
类型II筛选器在奈奎斯特频率上始终为零响应,因此如果使用调用Firwin,则会引发ValueError异常 numtaps 均匀且具有其右端位于奈奎斯特频率的通带。
- 参数
- numtaps集成
过滤长度(系数个数,即过滤顺序+1)。 numtaps 如果通带包括奈奎斯特频率,则必须是奇数。
- cutoff浮点或一维阵列_LIKE
过滤截止频率(单位相同 fs )或截止频率阵列(即频带边缘)。在后一种情况下, cutoff 应该是正的,并且在0和0之间单调递增 fs/2 。值0和 fs/2 不得包含在 cutoff 。
- width浮动或无,可选
如果 width 不是NONE,则假设它是过渡区域的大致宽度(使用与相同的单位表示 fs ),用于凯撒冷杉过滤的设计。在本例中, window 参数被忽略。
- window字符串和参数值的字符串或元组,可选
要使用的所需窗口。看见
scipy.signal.get_window
有关窗口和所需参数的列表,请执行以下操作。- pass_zero{True,False,‘BandPass’,‘Low Pass’,‘HighPass’,‘BandStop’},可选
如果为True,则频率0处的增益(即“DC增益”)为1。如果为False,则DC增益为0。也可以是所需过滤类型的字符串参数(等效于
btype
在IIR设计功能中)。1.3.0 新版功能: 支持字符串参数。
- scale布尔值,可选
设置为True可缩放系数,以便在特定频率下频率响应完全一致。该频率为:
如果第一个通带从0开始(即PASS_ZERO为True),则为0(DC)
fs/2 (奈奎斯特频率)如果第一个通带结束于 fs/2 (即过滤是单波段高通过滤);否则为第一通带中心
- nyq浮动,可选
Deprecated. Use `fs` instead. 这是奈奎斯特的频率。输入的每个频率 cutoff 必须介于0和0之间 nyq 。默认值为1。
- fs浮动,可选
信号的采样频率。输入的每个频率 cutoff 必须介于0和0之间
fs/2
。默认值为2。
- 退货
- h(数字敲击,)ndarray
长度系数 numtaps 冷杉过滤。
- 加薪
- ValueError
如果中的任何值 cutoff 小于或等于0或大于或等于
fs/2
,如果中的值 cutoff 不是严格单调递增的,或者如果 numtaps 是偶数,但包括奈奎斯特频率的通带。
示例
从0到f的低通:
>>> from scipy import signal >>> numtaps = 3 >>> f = 0.1 >>> signal.firwin(numtaps, f) array([ 0.06799017, 0.86401967, 0.06799017])
使用特定的窗口函数:
>>> signal.firwin(numtaps, f, window='nuttall') array([ 3.56607041e-04, 9.99286786e-01, 3.56607041e-04])
高通(从0到f的‘STOP’):
>>> signal.firwin(numtaps, f, pass_zero=False) array([-0.00859313, 0.98281375, -0.00859313])
带通:
>>> f1, f2 = 0.1, 0.2 >>> signal.firwin(numtaps, [f1, f2], pass_zero=False) array([ 0.06301614, 0.88770441, 0.06301614])
带阻挡:
>>> signal.firwin(numtaps, [f1, f2]) array([-0.00801395, 1.0160279 , -0.00801395])
多频段(通带为 [0,F1] , [F2、F3] 和 [F4、1] ):
>>> f3, f4 = 0.3, 0.4 >>> signal.firwin(numtaps, [f1, f2, f3, f4]) array([-0.01376344, 1.02752689, -0.01376344])
多频段(通带为 [f1、f2] 和 [F3、F4] ):
>>> signal.firwin(numtaps, [f1, f2, f3, f4], pass_zero=False) array([ 0.04890915, 0.91284326, 0.04890915])