from_window#
- classmethod ShortTimeFFT.from_window(win_param, fs, nperseg, noverlap, *, symmetric_win=False, fft_mode='onesided', mfft=None, scale_to=None, phase_shift=0)[source]#
使用
get_window
实例化ShortTimeFFT
。方法
get_window
用于创建长度为 nperseg 的窗口。参数名 noverlap 和 nperseg 在这里使用,因为它们更符合其他经典 STFT 库。- 参数:
- win_param: Union[str, tuple, float],
传递给
get_window
的参数。对于没有参数的窗口,它可以是字符串(例如,'hann'
),对于参数化窗口,可以是元组(例如,('gaussian', 2.)
)或单个浮点数,指定凯泽窗口的形状参数(即4.
和('kaiser', 4.)
相等。有关更多详细信息,请参阅get_window
。- fsfloat
输入信号的采样频率。它与采样间隔
T
的关系为T = 1 / fs
。- nperseg: int
窗口长度(以样本为单位),对应于
m_num
。- noverlap: int
窗口重叠(以样本为单位)。它与
hop
增量相关,由hop = npsereg - noverlap
计算得出。- symmetric_win: bool
如果为
True
,则生成对称窗口,否则生成周期性窗口(默认值)。虽然对称窗口在大多数应用中似乎更有意义,但默认情况下选择周期性窗口是为了与get_window
的默认值相一致。- fft_mode‘twosided’, ‘centered’, ‘onesided’, ‘onesided2X’
要使用的 FFT 模式(默认值 ‘onesided’)。有关详细信息,请参阅属性
fft_mode
。- mfft: int | None
如果需要零填充 FFT,则使用的 FFT 长度。如果为
None
(默认值),则使用窗口win
的长度。- scale_to‘magnitude’, ‘psd’ | None
如果为
None
(默认值),则对窗口函数进行缩放,因此每个 STFT 列表示幅度谱 (‘magnitude’) 或功率谱密度 (‘psd’) 谱。此参数将属性scaling
设置为相同的值。有关详细信息,请参阅方法scale_to
。- phase_shiftint | None
如果设置,则将线性相位
phase_shift
/mfft
*f
添加到每个频率f
。默认值 0 确保在第零切片(其中 t=0 居中)上没有相移。有关详细信息,请参阅属性phase_shift
。
另请参阅
scipy.signal.get_window
返回给定长度和类型的窗口。
from_dual
使用对偶窗口创建实例。
ShortTimeFFT
使用标准初始化程序创建实例。
示例
以下实例
SFT0
和SFT1
等效>>> from scipy.signal import ShortTimeFFT, get_window >>> nperseg = 9 # window length >>> w = get_window(('gaussian', 2.), nperseg) >>> fs = 128 # sampling frequency >>> hop = 3 # increment of STFT time slice >>> SFT0 = ShortTimeFFT(w, hop, fs=fs) >>> SFT1 = ShortTimeFFT.from_window(('gaussian', 2.), fs, nperseg, ... noverlap=nperseg-hop)