"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como suavizar efetivamente curvas de dados barulhentas?

Como suavizar efetivamente curvas de dados barulhentas?

Publicado em 2024-11-06
Navegar:659

How to Effectively Smoothen Noisy Data Curves?

Suavização ideal de curvas ruidosas

Considere um conjunto de dados aproximado por:

import numpy as np
x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)   np.random.random(100) * 0.2

Isso inclui variação de 20%. Abordagens como UnivariateSpline e médias móveis apresentam limitações.

Filtro Savitzky-Golay

Uma solução eficaz é o filtro Savitzky-Golay, disponível em scipy. Ele usa regressão de mínimos quadrados para estimar o valor no centro de uma pequena janela usando um polinômio. A janela então muda para repetir o processo, resultando no ajuste otimizado de cada ponto.

import numpy as np
import matplotlib.pyplot as plt
from scipy.signal import savgol_filter

x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)   np.random.random(100) * 0.2
yhat = savgol_filter(y, 51, 3) # window size 51, polynomial order 3

plt.plot(x,y)
plt.plot(x,yhat, color='red')
plt.show()
Declaração de lançamento Este artigo foi reimpresso em: 1729411035 Se houver alguma violação, entre em contato com [email protected] para excluí-lo
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3