Vue d'ensemble

SciPy 1.7, publie le 21 juin 2021, ajoute de nouvelles fonctions de fenetrage et ameliore le module de traitement du signal.

Fonctionnalites principales

Fonctions de fenetrage

Le module scipy.signal.windows gagne de nouvelles fonctions de fenetrage comme Kaiser-Bessel et Taylor, utiles pour l'analyse spectrale et le filtrage numerique.

python
from scipy.signal import windows
import numpy as np

# Fenetre de Kaiser-Bessel
n = 256
fenetre_kb = windows.kaiser(n, beta=14)

# Fenetre de Taylor pour les lobes lateraux reduits
fenetre_taylor = windows.taylor(n, nbar=5, sll=30)

# Application a un signal
signal = np.sin(2 * np.pi * 10 * np.linspace(0, 1, n))
signal_fenetre = signal * fenetre_kb
print(f'Energie originale : {np.sum(signal**2):.1f}')
print(f'Energie fenetree  : {np.sum(signal_fenetre**2):.1f}')

Ameliorations du signal

Le module scipy.signal ameliore les fonctions de filtrage avec de nouveaux algorithmes de conception de filtres et une meilleure gestion des filtres IIR.

python
from scipy import signal
import numpy as np

# Conception d'un filtre passe-bas Butterworth
fs = 1000  # frequence d'echantillonnage
fc = 50    # frequence de coupure
b, a = signal.butter(N=4, Wn=fc, fs=fs, btype='low')

# Application au signal bruite
t = np.linspace(0, 1, fs)
x = np.sin(2 * np.pi * 10 * t) + 0.5 * np.random.randn(fs)
y = signal.filtfilt(b, a, x)
print(f'Bruit avant : {np.std(x - np.sin(2*np.pi*10*t)):.3f}')
print(f'Bruit apres : {np.std(y - np.sin(2*np.pi*10*t)):.3f}')

Sources