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)、slldB 抑制水平(默认值: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])
请注意,周期窗可以通过丢弃最后一个样本从对称窗中创建。