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.


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.


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.