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.)
),或者是一个指定 kaiser 窗口形状参数的单个浮点数(即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 列表示“幅度”或功率谱密度(“psd”)频谱。此参数将属性scaling
设置为相同的值。有关详细信息,请参见方法scale_to
。- phase_shiftint | None
如果设置,则为每个频率
f
添加线性相位phase_shift
/mfft
*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)