Soy bastante nuevo en DSP y he realizado algunas investigaciones sobre posibles filtros para suavizar los datos del acelerómetro en Python. Un ejemplo del tipo de datos que estaré experimentando se puede ver en la siguiente imagen:
Esencialmente, estoy buscando consejos para suavizar estos datos para eventualmente convertirlos en velocidad y desplazamiento. Entiendo que los acelerómetros de los teléfonos móviles son extremadamente ruidosos.
No creo que pueda usar un filtro de Kalman en este momento porque no puedo controlar el dispositivo para hacer referencia al ruido producido por los datos (¿leí que es esencial colocar el dispositivo plano y encontrar la cantidad de ruido de esas lecturas?)
FFT ha producido algunos resultados interesantes. Uno de mis intentos fue FFT la señal de aceleración, luego renderizar las frecuencias bajas para tener un valor FFT absoluto de 0. Luego utilicé la aritmética omega y la FFT inversa para obtener un gráfico de velocidad. Los resultados fueron los siguientes:
¿Es esta una buena manera de hacer las cosas? Estoy tratando de eliminar la naturaleza ruidosa general de la señal, pero es necesario identificar picos obvios, como alrededor de 80 segundos.
También me he cansado de usar un filtro de paso bajo en los datos del acelerómetro original, lo que ha hecho un gran trabajo alisándolo, pero no estoy realmente seguro de a dónde ir desde aquí. ¡Cualquier guía sobre dónde ir desde aquí sería realmente útil!
EDITAR: Un poco de código:
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
Así que, esencialmente, he realizado una FFT en mis datos de acelerómetro, dando a Sz, filtrando altas frecuencias usando un simple filtro de pared de ladrillos (sé que no es lo ideal). Luego uso aritmética omega en la FFT de los datos. También muchas gracias a datageist por agregar mis imágenes a mi publicación :)
fz
matriz, parece que está aplicando un filtro de paso alto en su lugar.