comment lisser une courbe en python
J'ai une entropie de la courbe (1d tableau numpy), mais cette courbe a beaucoup de bruit.
Je voudrais supprimer le bruit avec un lissage.
C'est l'intrigue de ma courbe:
J'ai essayé de résoudre ce problème de fabrication d'un produit de convolution avec un de Kaiser-Bessel de filtre:
gaussian_curve = window_kaiser(windowLength, beta=20) # kaiser filter
gaussian_curve = gaussian_curve / sum(gaussian_curve)
for i in range(0, windows_number):
start = (i * step) + 1
end = (i * step) + windowLength
convolution[i] = (np.convolve(entropy[start:end + 1], gaussian_curve, mode='valid'))
entropy[i] = convolution[i][0]
mais ce code renvoie cette erreur:
File "/usr/lib/python2.7/dist-packages/numpy/core/numeric.py", line 822, in convolve
raise ValueError('v cannot be empty')
ValueError: v cannot be empty
la numpy.convolve opérateur avec les "valides" mode, renvoie l'élément central du chevauchement mais, dans ce cas, le retour d'un élément vide.
est-il un moyen simple d'appliquer un lissage?
merci!
Double Possible de Comment lisser une courbe dans le droit chemin?
OriginalL'auteur elviuz | 2014-04-10
Vous devez vous connecter pour publier un commentaire.
ok, j'ai résolu.
J'ai utilisé une autre approche: Savitzky-Golay filtre
Le code:
maintenant, je peux taper:
le résultat est le suivant:
scipy.signal.savgol_filter
.merci beaucoup!
OriginalL'auteur elviuz