Pewnie. Wywołaj dwa wektory A i B.
1) (Opcjonalnie) Wygładź dane za pomocą prostego filtru uśredniającego (Matlab 'smooth') lub polecenia "filtruj". Spowoduje to pozbywanie się lokalnych zmian prędkości ("gradientu"), które wydają się być zasadniczo szumem (jak we wstępującym składniku czerwonego śladu)
2) Rozróżnić zarówno A, jak i B. Teraz bezpośrednio reprezentujesz prędkość każdego wektora (Matlab 'diff').
3) Dodaj dwa zróżnicowane wektory (elementowo). Zadzwoń do tego C.
4) Poszukaj wszystkich punktów w C, których wartość bezwzględna jest powyżej pewnego progu (będziesz musiał przeglądać dane, aby uzyskać dobry pomysł, co to powinno być). Punkty powyżej tego progu wskazują bardzo podobną prędkość.
5) Teraz poszukaj, gdzie po wysokiej wartości dodatniej w C następuje wysoka wartość ujemna lub odwrotnie. Pomiędzy tymi dwoma punktami będziesz miał podobne krzywe w A i B.
Uwaga: a) Możesz wykonać wygładzanie po kroku 3 zamiast po kroku 1. b) Re 5), możesz mieć sytuację, w której "wzniesienie" w twoich danych znajduje się na skraju wektora, a więc jest "przecięte na pół", a wektory schodzą do linii bazowej przed wejściem na kolejne wzgórze. Następnie 5) błędnie zidentyfikować wzgórze jako między początkowym zejściem a późniejszym wynurzeniem. Aby tego uniknąć, można również wymagać, aby punkty w A i B pomiędzy dwoma punktami podobieństwa prędkości miały wysokie wartości bezwzględne.
w zależności od charakteru danych, polecam wykonanie analizy częstotliwości za pomocą funkcji FFT. (Pamiętaj, aby zrozumieć, jak poprawnie skalować dane w domenie FFT!). Alternatywnie użycie czegoś tak prostego, jak błąd średniej kwadratu może być przydatne. Jeśli możesz powiedzieć więcej o naturze i pochodzeniu danych, być może będziemy mogli udzielić Ci lepszej porady. –
@thron Zauważ, że aby uzyskać to, czego chce, musi znaleźć podobieństwo w fazie, a nie tylko częstotliwość między dwoma sygnałami. To nie jest trywialne. –