Mam serię danych (pojedyncza tablica). Jeśli wezmę te dane i wykreślę je, widzę, że istnieje wiele pików. Jeśli jednak powiększę fragment danych, zauważę, że występuje znaczny hałas.
Lubię wykrywać, ile szczytów danych zużywa mało czasu i energii procesora. Pomyślałem o wykryciu stoków tych szczytów (może być ostry lub gładki wzrost lub spadek) i spojrzałem na liczbę stoków, aby określić liczbę szczytów. (2 stoki dodatnie i ujemne dla każdego piku)
Jakieś wskazówki, jak mogę obliczyć zbocza w obecności hałasu?
Kod wejdzie do systemu osadzonego, pamięć jest ograniczona, więc najlepiej lubię implementować coś, co nie wymaga znaczącej kopii danych.
peak-detection
Ktuncer
źródło
źródło
Odpowiedzi:
Zależy to od rodzaju szumu i rodzaju sygnału. Pokaż przykład, jeśli chcesz dobrą odpowiedź. Ale to powiedziawszy, ogólnie rzecz biorąc, prawdopodobnie chcesz filtrować sygnał dolnoprzepustowy. Gdybym był tobą, wziąłbym spektrum mocy Fouriera, aby sprawdzić, czy większość szumów to wysoka częstotliwość, a sygnał, na którym mi zależy, głównie w niższym zakresie. Jeśli się pokrywają, to jest życie. Musiałbym więcej myśleć o rzeczach.
Jednym filtrem dolnoprzepustowym, który w wielu przypadkach jest dobry na zaszumiony sygnał, jest filtr Savitzky-Golay. Jest to opisane w Przepisach numerycznych, a dla Pythona jest funkcja w Książce kucharskiej Python Numpy. To tylko splot z małym jądrem. Rozmiar okna wybierasz na podstawie szerokości pików lub innych elementów, wystarczająco szerokich, aby wytłumić hałas, ale nie szerszych niż cechy. Może być mały, powiedzmy pięć punktów, lub większy jak dziesiątki, może sto.
Ty również wybierasz porządek wielomianowy - zwykle używam 2 lub 4. Zamówienie 2 jest w porządku, gdy okno jest małe, <10 punktów lub obejmuje mniej niż pół cyklu mniej więcej (jeśli twój sygnał przypomina sinusoidę), podczas gdy zamówienie 4 jest lepiej dopasowuje zniekształcone kształty pików, ale lubi mieć około 9 lub więcej punktów. Ale wiele zależy od kształtu i częstotliwości hałasu.
Jak powiedziano w komentarzach, znalezienie instrumentów pochodnych prawdopodobnie nie jest najlepszą strategią, ale jeśli mimo to chcesz znaleźć instrumenty pochodne, filtr Savitzky-Golay może to zrobić - jednocześnie wygładzając i raportując pochodną zamiast sygnału.
źródło