Pracuję nad projektem, w którym mierzymy lutowność komponentów. Zmierzony sygnał jest zaszumiony. Musimy przetwarzać sygnał w czasie rzeczywistym, abyśmy mogli rozpoznać zmianę, która rozpoczyna się w czasie 5000 milisekund.
Mój system pobiera próbkę rzeczywistej wartości co 10 milisekund - ale można ją dostosować do wolniejszego próbkowania.
- Jak mogę wykryć ten spadek po 5000 milisekundach?
- Co sądzisz o stosunku sygnału do szumu? Czy powinniśmy się skupić i spróbować uzyskać lepszy sygnał?
- Istnieje problem polegający na tym, że każdy pomiar ma inne wyniki, a czasem spadek jest jeszcze mniejszy niż w tym przykładzie.
Odsyłacz do plików danych (nie są one takie same jak pliki używane na wykresach, ale pokazują najnowszy status systemu)
- https://docs.google.com/open?id=0B3wRYK5WB4afV0NEMlZNRHJzVkk
- https://docs.google.com/open?id=0B3wRYK5WB4afZ3lIVzhubl9iV0E
- https://docs.google.com/open?id=0B3wRYK5WB4afUktnMmxfNHJsQmc
- https://docs.google.com/open?id=0B3wRYK5WB4afRmxVYjItQ09PbE0
- https://docs.google.com/open?id=0B3wRYK5WB4afU3RhYUxBQzNzVDQ
Odpowiedzi:
Klasycznym odniesieniem do tego problemu jest Wykrywanie gwałtownych zmian - teoria i zastosowanie autorstwa Basseville i Nikiforova. Cała książka jest dostępna do pobrania w formacie PDF .
Zalecam przeczytanie rozdziału 2.2 dotyczącego algorytmu CUSUM (suma skumulowana).
źródło
Zwykle opisuję ten problem jako wykrywanie nachylenia. Jeśli obliczysz regresję liniową na ruchomym oknie, pokazana kropla będzie widoczna jako znacząca zmiana znaku nachylenia i / lub wielkości. Takie podejście oferuje szereg czynników, które będą wymagały „strojenia”: na przykład częstotliwość próbkowania, rozmiar okna itp. Wpłyną na odporność (odporność na zakłócenia) detektora znaku nachylenia. Tutaj można zastosować niektóre z powyższych komentarzy. Każde filtrowanie lub tłumienie szumów, które można zastosować przed dopasowaniem linii, poprawi Twoje wyniki.
źródło
Zrobiłem to, obliczając statystykę T średniej lewej części danych w porównaniu z prawą częścią danych. Zakłada się, że wiesz, gdzie jest punkt przejścia, którego oczywiście nie znasz.
Więc wypróbuj kilkaset punktów podziału wzdłuż osi czasu i znajdź ten z najbardziej znaczącą statystyką T.
Możesz to zrobić jako wyszukiwanie binarne. Wypróbuj 10 punktów danych, znajdź dwa największe, a następnie spróbuj 10 punktów między nimi itp. W ten sposób możesz uzyskać dość precyzyjny punkt przejścia. Nie twierdzę, że dokładność. :-)
Poinformuj nas jak to idzie!
PS Możesz obliczyć średnie i sd jako sumy bieżące, co zmniejsza złożoność obliczania tej funkcji podziału dla każdej możliwej liczby od N ^ 2 do N. Wykonując to, prawdopodobnie możesz sobie pozwolić na obliczenie statystyki T w każdym możliwym punkcie podziału.
źródło