Jestem dość nowy w DSP i przeprowadziłem badania dotyczące możliwych filtrów wygładzających dane akcelerometru w pythonie. Przykład rodzaju danych, których doświadczam, można zobaczyć na poniższym obrazie:
Zasadniczo szukam porady, jak wygładzić te dane, aby ostatecznie przekształcić je w prędkość i przemieszczenie. Rozumiem, że akcelerometry z telefonów komórkowych są bardzo głośne.
Nie sądzę, żebym mógł w tej chwili użyć filtra Kalmana, ponieważ nie mogę złapać urządzenia, aby odwoływać się do hałasu wytwarzanego przez dane (czytam, że konieczne jest umieszczenie urządzenia płaskiego i znalezienie poziomu hałasu z tych odczytów?)
FFT przyniosło kilka interesujących wyników. Jedną z moich prób było FFT sygnału przyspieszenia, a następnie renderowanie niskich częstotliwości w celu uzyskania bezwzględnej wartości FFT równej 0. Następnie zastosowałem arytmetykę omega i odwrotną FFT, aby uzyskać wykres prędkości. Wyniki były następujące:
Czy to dobry sposób na załatwienie różnych spraw? Próbuję usunąć ogólną hałaśliwą naturę sygnału, ale należy zidentyfikować oczywiste piki, takie jak około 80 sekund.
Zmęczyłem się również używaniem filtra dolnoprzepustowego na oryginalnych danych akcelerometru, który wykonał świetną robotę, aby go wygładzić, ale tak naprawdę nie jestem pewien, dokąd się udać. Wszelkie wskazówki na temat tego, gdzie się udać, byłyby naprawdę pomocne!
EDYCJA: Trochę kodu:
for i in range(len(fz)):
testing = (abs(Sz[i]))/Nz
if fz[i] < 0.05:
Sz[i]=0
Velfreq = []
Velfreqa = array(Velfreq)
Velfreqa = Sz/(2*pi*fz*1j)
Veltimed = ifft(Velfreqa)
real = Veltimed.real
Zasadniczo więc przeprowadziłem FFT na danych mojego akcelerometru, dając Sz, odfiltrowałem wysokie częstotliwości za pomocą prostego filtru z cegły (wiem, że nie jest idealny). Następnie używam arytmetyki omega na FFT danych. Również bardzo dziękuję datageist za dodanie moich zdjęć do mojego posta :)
fz
tablicy, wydaje się, że zamiast tego stosujesz filtr górnoprzepustowy.