Вопрос простой. Как удалить шум из данных? Я составил некоторые значения x и y вместе с некоторым шумом, который является грубым упрощением данных, с которыми я имею дело (помимо случайного шума, я не могу сделать его таким же, как шум, с которым мне приходится иметь дело). Я действительно не знаю, нужно ли мне фильтровать или сглаживать. Мой файл содержит два набора данных, которые необходимо нанести на график, и в этих данных есть экспериментальный шум. Как лучше всего его удалить? сглаживание или фильтрация?
Я недавно разместил этот код в другом посте, все, что я сделал, это добавил к нему шум.
import matplotlib.pyplot as plt
import numpy as np
from scipy.optimize import curve_fit, minimize_scalar
x1 = [1,2,2.5,3.2,2.8,3.5,4,5]
y = [1,4,9.2,16,16.1,9.6,4,1]
noise = np.random.normal(0,1,8)
x = x1 + noise #bring on the noise
def f(x, p1, p2, p3):
return p3*(p1/((x-p2)**2 + (p1/2)**2))
p0 = (8, 16, 0.1) # guess perameters
plt.plot(x,y,"ro")
popt, pcov = curve_fit(f, x, y, p0)
fm = lambda x: -f(x, *popt) #this part and below is not my code but the
#solution to my previous question
r = minimize_scalar(fm, bounds=(1, 5))
print "maximum:", r["x"], f(r["x"], *popt)
x_curve = np.linspace(1, 5, 100)
plt.plot(x_curve, f(x_curve, *popt))
plt.plot(r['x'], f(r['x'], *popt), 'ko')
plt.show()
скажем, я убираю шум и заменяю x1 на x... Я получаю хорошее представление о своих точках данных. Как я могу приблизиться к этому, когда присутствует шум?