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)[source]#

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

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

参数:
  • Zxx (Array) – 要重建的信号的 STFT。

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

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

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

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

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

  • input_onesided (bool) – 如果为 Tru`(默认值),则将输入解释为单边 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.]