Конечно.Назовите два вектора A и B.
1) (Необязательно) Сгладьте данные либо с помощью простого усредняющего фильтра (Matlab 'smooth'), либо с помощью команды 'filter'.Это избавит от локальных изменений скорости («градиент»), которые, по-видимому, являются по существу шумом (как в восходящем компоненте красной трассы.
2) Различают и A, и B. Теперь вы непосредственно представляетескорость каждого вектора (Matlab 'diff').
3) Добавьте два дифференцированных вектора вместе (поэлементно).Назовите это C.
4) Найдите все точки в C, абсолютное значение которых выше определенного порогового значения (вам придется просмотреть данные, чтобы получить хорошее представление о том, что это должно быть).Точки выше этого порога указывают на очень похожую скорость.
5) Теперь найдите, где за высоким положительным значением в С следует высокое отрицательное значение, или наоборот.Между этими двумя точками у вас будут похожие кривые в A и B.
Примечание: a) Вы можете выполнить сглаживание после шага 3, а не после шага 1. b) Re 5), у вас может возникнуть ситуацияв котором «холм» в ваших данных находится на краю вектора и поэтому «разрезан пополам», и векторы опускаются до базовой линии, а затем поднимаются на следующем холме.Тогда 5) неверно идентифицирует холм как находящийся между начальным спуском и последующим подъемом.Чтобы избежать этого, вам также может потребоваться, чтобы точки в точках A и B между двумя точками сходства скоростей имели высокие абсолютные значения.