scipy.signal.

get_window#

scipy.signal.get_window(window, Nx, fftbins=True, *, xp=None, device=None)[来源]#

用于创建各种窗函数的便捷函数。

此函数是 scipy.signal.windows 命名空间中提供的窗函数的包装器。

参数:
windowstr | tuple | float

可以是带有窗名称的字符串,也可以是包含窗名称和窗参数的元组。如果它是浮点数,则会创建一个 kaiser 窗,其中 window 是形状参数。有关详细信息,请参阅下面的注释。

Nxint

窗中的样本数。

fftbinsbool, 可选

如果为 True(默认值),则创建周期窗,可与 ifftshift 一起使用,并乘以 FFT 结果(另请参见 fftfreq)。如果为 False,则创建对称窗,用于滤波器设计。如果 window 参数中的窗名称附加了 '_periodic''_symmetric' 后缀(例如,'hann_symmetric'),则此参数将被忽略。

xparray_namespace, 可选

可选的数组命名空间。应与数组 API 标准兼容,或受 array-api-compat 支持。默认值:numpy

device: 任意

可选的输出设备规范。应与 xp 中受支持的设备规范之一匹配。

返回:
get_windowndarray

以由 Nx 个样本构成的一维数组形式返回创建的窗。

引发:
ValueError

如果提供的参数不允许选择具有有效参数的有效窗函数。

附注

请注意,默认情况下,此函数返回周期窗,而包装的窗函数默认返回对称窗。这是由于 fftbins 参数的含义与包装函数的 sym 参数相反,两者默认都为 True

以下列表显示了包装的窗函数及其各自的 window 参数设置,后跟简短描述。替代窗名称的别名在括号中给出。

barthann / 'barthann'

修改的 Bartlett-Hann 窗(别名:'brthan', 'bth'

bartlett / 'bartlett'

Bartlett 窗(别名:'bart', 'brt'

blackman/ 'blackman'

Blackman 窗(别名:'black', 'blk'

blackmanharris / 'blackmanharris'

4 项 Blackman-Harris 窗(别名:'blackharr', 'bkh'

bohman / 'bohman'

Bohman 窗(别名:'bman', 'bmn'

boxcar / 'boxcar'

矩形窗(别名:'box', 'ones', 'rect', 'rectangular'

chebwin / ('chebwin', at)

带有 at dB 衰减的 Dolph-Chebyshev 窗(别名:'cheb'

cosine / 'cosine'

余弦窗(别名:'halfcosine'

dpss / ('dpss', NW)

具有标准化半带宽 NW 和“近似”范数的离散扁球序列的第一个窗。

exponential / 'exponential' / ('exponential', center, tau)

center 为中心(默认值:None),衰减为 tau(默认值:1)的指数/泊松窗(别名:'poisson'

flattop/ 'flattop'

平顶窗(别名:'flat', 'flt'

gaussian / ('gaussian', std)

标准差为 std 的高斯窗(别名:'gauss', 'gss'

general_cosine / ('general cosine', a)

带有加权系数 a 的余弦项的通用加权和(别名:'general_cosine'

general_gaussian / ('general gaussian', p, sig)

形状参数为 p 且标准差为 sig 的广义高斯窗(别名:'general_gaussian', 'general gauss', 'general_gauss', 'ggs'

general_hamming / ('general hamming', alpha)

系数为 alpha 的广义汉明窗(别名:'general_hamming'

hamming / 'hamming'

汉明窗(别名:'hamm', 'ham'

hann / 'hann'

Hann 窗(别名:'han'

kaiser / ('kaiser', beta)

形状参数为 beta 的 Kaiser 窗(别名:'ksr'

kaiser_bessel_derived / ('kaiser bessel derived', beta)

形状参数为 beta 的 Kaiser-Bessel 派生窗(别名:'kaiser_bessel_derived', 'kbd'

lanczos / 'lanczos'

Lanczos / sinc 窗(别名:'sinc'

nuttall/ 'nuttall'

根据 Nuttall 的最小 4 项 Blackman-Harris 窗(别名:'nutl', 'nut'

parzen / 'parzen'

Parzen 窗(别名:'parz', 'par'

taylor / 'taylor' / ('taylor', nbar, sll, norm)

Taylor 窗,具有 nbar 个相邻旁瓣(默认值:4)、sll dB 抑制水平(默认值:30)和布尔值 norm(默认值:True)(别名:taylorwin

triang/ 'triangle'

三角窗(别名:'triang', 'tri'

tukey / 'tukey' / ('tukey', alpha)

形状参数为 alpha(默认值:0.5)的 Tukey 窗(别名:'tuk'

数组 API 标准支持

get_window 除了 NumPy 之外,还实验性地支持 Python Array API Standard 兼容后端。请考虑通过设置环境变量 SCIPY_ARRAY_API=1 并提供 CuPy、PyTorch、JAX 或 Dask 数组作为数组参数来测试这些功能。支持以下后端和设备(或其他功能)组合。

CPU

GPU

NumPy

不适用

CuPy

不适用

PyTorch

JAX

Dask

不适用

有关更多信息,请参阅 对数组 API 标准的支持

数组 API 标准支持

get_window 除了 NumPy 之外,还实验性地支持 Python Array API Standard 兼容后端。请考虑通过设置环境变量 SCIPY_ARRAY_API=1 并提供 CuPy、PyTorch、JAX 或 Dask 数组作为数组参数来测试这些功能。支持以下后端和设备(或其他功能)组合。

CPU

GPU

NumPy

不适用

CuPy

不适用

PyTorch

JAX

Dask

不适用

有关更多信息,请参阅 对数组 API 标准的支持

示例

此示例展示了 window 参数的不同用法

>>> from scipy.signal import get_window
>>> get_window('triang', 7)
array([ 0.125,  0.375,  0.625,  0.875,  0.875,  0.625,  0.375])
>>> get_window(('exponential', None, 1.), 9)
array([ 0.011109  ,  0.03019738,  0.082085  ,  0.22313016,  0.60653066,
        0.60653066,  0.22313016,  0.082085  ,  0.03019738])
>>> get_window(('kaiser', 4.0), 9)
array([ 0.08848053,  0.29425961,  0.56437221,  0.82160913,  0.97885093,
        0.97885093,  0.82160913,  0.56437221,  0.29425961])
>>> get_window(4.0, 9)  # same as previous call
array([ 0.08848053,  0.29425961,  0.56437221,  0.82160913,  0.97885093,
        0.97885093,  0.82160913,  0.56437221,  0.29425961])

以下代码片段展示了创建相同的对称和周期 Bartlett 窗的不同方法

>>> from scipy.signal import get_window, windows
>>> # Symmetric window:
>>> windows.bartlett(5)  # Parameter `sym` defaults to True
array([0. , 0.5, 1. , 0.5, 0. ])
>>> get_window('bartlett', 5, fftbins=False)
array([0. , 0.5, 1. , 0.5, 0. ])
>>> get_window('bartlett_symmetric', 5)
array([0. , 0.5, 1. , 0.5, 0. ])
>>> # Periodic window:
>>> windows.bartlett(4, sym=False)
array([0. , 0.5, 1. , 0.5])
>>> get_window('bartlett', 4)  # Parameter `fftbins` defaults to True
array([0. , 0.5, 1. , 0.5])
>>> get_window('bartlett_periodic', 4)
array([0. , 0.5, 1. , 0.5])
>>> # `_periodic' suffix overrides `fftbins` parameter:
>>> get_window('bartlett_periodic', 4, fftbins=False)
array([0. , 0.5, 1. , 0.5])

请注意,周期窗可以通过丢弃最后一个样本从对称窗中创建。