Overview

SciPy 1.13, released on April 27, 2024, improves STFT (Short-Time Fourier Transform) and the optimize module.

Main Features

Improved STFT

The ShortTimeFFT class provides a more flexible API for time-frequency analysis.

python
from scipy.signal import ShortTimeFFT
from scipy.signal.windows import gaussian
import numpy as np

T_x, N = 1/20, 1000
t = np.arange(N) * T_x
x = np.sin(2 * np.pi * 5 * t)

win = gaussian(50, std=8, sym=True)
SFT = ShortTimeFFT(win, hop=10, fs=1/T_x)
Sx = SFT.stft(x)

Optimize module

New methods and improved performance for minimization and curve fitting.

python
from scipy.optimize import minimize
import numpy as np

def rosenbrock(x):
    return sum(100*(x[1:]-x[:-1]**2)**2 + (1-x[:-1])**2)

x0 = np.array([0.0, 0.0])
result = minimize(rosenbrock, x0, method='L-BFGS-B')
print(f'Minimum: {result.fun:.6f}')

Sources