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.
źródło
Odpowiedzi:
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.
źródło