Как правильно подобрать универсальную функцию синуса к синусоидальным данным в python - PullRequest
0 голосов
/ 05 июня 2018

У меня есть некоторые данные в python, которые представляют движение обнаруженных ключевых точек SURF по нескольким кадрам видео.Мне нужно отделить точки, которые колеблются, от точек, испытывающих другие виды движения.Я думаю, что я должен быть в состоянии сделать это, подгоняя синусоидальную функцию к данным и затем устанавливая пороговые значения параметров, чтобы отбрасывать движение вне параметров того, что я ищу.

Итак, я определил общий синусфункция и вызов scipy.optimize.curve_fit

def sine(x,a,b,c,d):
    return a * np.sin(b*(x+c)) + d

opt, cov = opt.curve_fit(sine, np.linspace(0,119,119), x[:,5])

(x[:,5] - это элемент данных, который, как мне известно, имеет довольно чистые и очевидные синусоидальные характеристики)

Но когда я строю sine(sine(np.linspace(0,119,119), *opt) против x[:,5] в matplotlib я получаю кривую, которая не похожа ни на что, кроме моих данных, за исключением, возможно, смещения по оси y

Data Plot

Я что-то упустил, или это просто за пределамичто можно сделать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...