Как найти повторения в последовательности?

Имеются данные с датчиков, пример:
acb4c66d12c34b28b5f973cc64562ba7.png
в нем, каждое повторение размечено серой линией вручную. Но данных очень много, чтобы размечать их вручную. Так же колебания имеют самую разную форму (но повторы очень схожи между собой).
Каким образом можно программно определить границы каждого повтора?
Поможет любой совет, любые алгоритмы. А если имеются уже готовые библиотеки, то это великолепно!
  • Вопрос задан
  • 1406 просмотров
Пригласить эксперта
Ответы на вопрос 3
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
1. Берём нужный нам временной диапазон.
2. На нём находим экстремумы max и min для пиковых значений показателей (по вертикальной оси).
3. Делим пополам ((max-min)/2) и получаем горизонтальное осевое значение конкретно для этого показателя/графика.
4. Затем берём отрезок пересечения этой оси: из положительной зоны в отрицательную (и наоборот) и внутри этой зоны ищем max и min значения по вертикальной оси, в зависимости от направления пересечения.
5. Найденные значения укажут разделение через временной показатель.

Каждый 2-й - и будет искомой серой линией.
Ответ написан
Комментировать
@Androniy
Строите быстрое преобразование фурье и ищете в нем максимум. Это будет частотой повторения f. Далее ищете точку, которая вам нравится (экстремум, например) и с периодом 1/f разделяете данные. Еще можно через автокорреляцию, но по сути дела она в быстром исполнении сведется к тому же самому.
Ответ написан
Комментировать
@BorisKorobkov
Web developer
Не усложняйте задачу без необходимости. Где X переходит через 50 вниз - там и граница. Если очень надо совпасть именно с серой линий - сдвинуть на константу.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
02 нояб. 2024, в 21:08
2000000 руб./за проект
02 нояб. 2024, в 20:34
40000 руб./за проект
02 нояб. 2024, в 20:05
800 руб./в час