Wykrywanie i obliczanie nachylenia i szczytu w czasie rzeczywistym

9

Mam sygnał, że próbuję z częstotliwością 500 kHz. Próbuję wykryć wzrost, spadek i szczyt w przychodzących danych. Podstawa piku może wynosić 250 usec lub 2,5 ms, amplituda może wynosić 6 dB lub 15 dB powyżej poziomu szumu. Niestety nie mam dobrego snr. Poziom prądu stałego sygnału nie jest stały, ale porusza się znacznie wolniej niż składnik AC.  

W punkcie decyzyjnym muszę znać nachylenie wzlotu i upadku. Jest to trudny system czasu rzeczywistego i naprawdę muszę podjąć decyzję w 100usec po tym, jak zbocze opadnie do poziomu DC. 

Szukam sugestii, jak mogę skutecznie wdrożyć przyzwoity algorytm.  

Obecnie robię średnią bieżącą (suma ostatnich 25 punktów danych) i próbuję wykryć trend. Po wykryciu trendu zaczynam szukać trendu w dół, a kiedy to robię, zbieram może kolejne 50 próbek i zaczynam obliczać. 

Hałas teraz łatwo psuje ten algorytm, stąd pytanie. 

Aktualizacja

Z korzyścią dla innych, ostatecznie wprowadziłem Moving Average, a następnie integratora. Średnia ruchoma z ostatnich 64 danych wystarczająco wygładzona, ale do pewnego stopnia straciła wzrost, integrując ostatnie 8 wartości odzyskało wzrost i po prostu szukam wzrostu i spadku, później zrobiłem regresję liniową dla nachylenia. Działa dobrze, nie świetnie, ale dobrze.

Ktuncer
źródło
Czy możesz opublikować wykres sekwencji danych, na którym zawodzi Twój obecny algorytm?
Jim Clay
Robienie tego rodzaju rzeczy pomimo znacznego hałasu jest dość trudne. Sugestia Juancho dotycząca rozróżnienia jest prawdopodobnie dobra.
Daniel R Hicks,

Odpowiedzi:

5

Powinieneś zacząć od ogranicznika pasmowego (odpowiednik różniczkującego, po którym następuje filtr dolnoprzepustowy). Różnicator usunie trend niskiej częstotliwości i ostro zareaguje na twoje szczyty i zbocza. Komponent dolnoprzepustowy usunie szum przekraczający częstotliwość odcięcia.

Powinieneś zaprojektować częstotliwość odcięcia, aby uzyskać czyste impulsy na zboczach.

Dodatnie zbocza zwolnią jak pozytywne impulsy; ujemne zbocza jako impulsy ujemne, a pik będzie odpowiadał przecięciu zera między dodatnim a ujemnym.

Ten typ filtra jest zwykle implementowany jako filtr FIR. Liczba próbek dla twojego filtra będzie wtedy zależeć od twoich ograniczeń w czasie rzeczywistym, ostrości na częstotliwości odcięcia i samej częstotliwości odcięcia.

Juancho
źródło
Nie jestem zbyt dobrze zaznajomiony z DSP. Czy możesz wskazać mi możliwą implementację? W oparciu o twoją odpowiedź i moją ograniczoną wiedzę, myślę, że link ( holoborodko.com/pavel/numerical-methods/numerical-derivative/… ) robi dokładnie to, o czym wspomniałeś. Gdybym miał zastosować takie podejście, nie wiem 1) Jak określić moje częstotliwości? 2) Jak wybrać współczynniki filtra?
Ktuncer
Również poniższy link rozwiązuje podobny problem i zawiera sporo linków. dsprelated.com/showmessage/123740/1.php
Ktuncer