jax.scipy.signal.istft

目录

jax.scipy.signal.istft#

jax.scipy.signal.istft(Zxx, fs=1.0, window='hann', nperseg=None, noverlap=None, nfft=None, input_onesided=True, boundary=True, time_axis=-1, freq_axis=-2)[源代码][源代码]#

执行逆短时傅里叶变换(ISTFT)。

JAX 实现的 scipy.signal.istft(); 计算 jax.scipy.signal.stft() 的逆。

参数:
  • Zxx (Array) – 待重建信号的短时傅里叶变换。

  • fs (ArrayLike) – 时间序列的采样频率(默认值:1.0)

  • window (str) – 应用于每个片段的数据锥形窗口。可以是窗口函数名称、指定窗口长度和函数的元组,或是一个数组(默认值:'hann')。

  • nperseg (int | None) – STFT 中每个段的数据点数。如果为 None``(默认),则该值根据 ``Zxx 的大小确定。

  • noverlap (int | None) – 段落之间重叠的点数(默认值:nperseg // 2)。

  • nfft (int | None) – STFT 中使用的 FFT 点数。如果为 None``(默认),则该值根据 ``Zxx 的大小确定。

  • input_onesided (bool) – 如果为 True(默认),将输入解释为单边 STFT(仅正频率)。如果为 False,将输入解释为双边 STFT。

  • boundary (bool) – 如果为 True(默认),则假设输入信号在其边界处通过 stft 进行了扩展。如果为 False,则假设输入信号在边界处通过 stft 被截断。

  • time_axis (int) – Zxx 中的轴对应于时间片段(默认:-1)。

  • freq_axis (int) – Zxx 中的轴对应于频率箱(默认:-2)。

返回:

长度为2的元组 (t, x)t 是信号时间的数组,x 是重建的时间序列。

返回类型:

tuple[Array, Array]

参见

jax.scipy.signal.stft(): 短时傅里叶变换。

示例

证明这给出了 stft() 的逆:

>>> x = jnp.array([1., 2., 3., 2., 1., 0., 1., 2.])
>>> f, t, Zxx = jax.scipy.signal.stft(x, nperseg=4)
>>> print(Zxx)  
[[ 1. +0.j   2.5+0.j   1. +0.j   1. +0.j   0.5+0.j ]
 [-0.5+0.5j -1.5+0.j  -0.5-0.5j -0.5+0.5j  0. -0.5j]
 [ 0. +0.j   0.5+0.j   0. +0.j   0. +0.j  -0.5+0.j ]]
>>> t, x_reconstructed = jax.scipy.signal.istft(Zxx)
>>> print(x_reconstructed)
[1. 2. 3. 2. 1. 0. 1. 2.]