Sono abbastanza nuovo in DSP e ho fatto alcune ricerche su possibili filtri per rendere più fluidi i dati dell'accelerometro in Python. Un esempio del tipo di dati che si verificano potrebbero essere visualizzati nella seguente immagine:
In sostanza, sto cercando consigli su come lisciare questi dati per convertirli in velocità e spostamento. Capisco che gli accelerometri dai telefoni cellulari sono estremamente rumorosi.
Non credo di poter usare un filtro Kalman al momento perché non riesco a trovare il dispositivo per fare riferimento al rumore prodotto dai dati (ho letto che è essenziale posizionare il dispositivo piatto e trovare la quantità di rumore da quelle letture?)
FFT ha prodotto alcuni risultati interessanti. Uno dei miei tentativi è stato di FFT il segnale di accelerazione, quindi renderizzare le basse frequenze per avere un valore FFT assoluto di 0. Quindi ho usato l'aritmetica omega e la FFT inversa per ottenere un grafico per la velocità. I risultati sono stati i seguenti:
È un buon modo di affrontare le cose? Sto cercando di rimuovere la natura generale rumorosa del segnale, ma è necessario identificare picchi evidenti come ad esempio circa 80 secondi.
Mi sono anche stancato di utilizzare un filtro passa-basso sui dati dell'accelerometro originale, che ha fatto un ottimo lavoro nel livellarlo, ma non sono sicuro di dove andare da qui. Qualsiasi consiglio su dove andare da qui sarebbe davvero utile!
EDIT: un po 'di codice:
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
Quindi, essenzialmente, ho eseguito una FFT sui miei dati dell'accelerometro, dando a Sz, filtrate le alte frequenze usando un semplice filtro a muro di mattoni (so che non è l'ideale). Quindi uso omega aritmetica sulla FFT dei dati. Grazie anche a Datageist per l'aggiunta delle mie immagini al mio post :)
fz
dell'array, sembra invece applicare un filtro passa-alto.