2010-02-16 12 views

Respuesta

16

Un filtro IIR recursivo sencillo, monopolar, de paso bajo es rápido y fácil de implementar, p.

xf = k * xf + (1.0 - k) * x; 
yf = k * yf + (1.0 - k) * y; 

donde x, y son la materia prima (sin filtrar) X/señales de acelerómetro Y, xf, yf son las señales de salida filtradas, y k determina la constante de tiempo de los filtros (típicamente un valor entre 0.9 y 0.9999. .., donde una k más grande significa una constante de tiempo más larga).

Se puede determinar empíricamente k, o si sabe que su frecuencia de corte requerida, Fc, a continuación, puede utilizar la fórmula:

k = 1 - exp(-2.0 * PI * Fc/Fs) 

donde Fs es la frecuencia de muestreo.

Tenga en cuenta que xf, yf son los valores previos de la señal de salida en el RHS, y los nuevos valores de salida en el LHS de la expresión anterior.

Tenga en cuenta también que estamos asumiendo aquí que estará muestreando las señales del acelerómetro en intervalos de tiempo regulares, p. cada 10 ms. La constante de tiempo será una función tanto de k como de este intervalo de muestreo.

+0

así x e y son el acelerómetro.x y el acelerómetro.y, estoy confundido, no sé qué es la "señal de entrada sin procesar". :/ – DotSlashSlash

+1

No, y es la señal filtrada, x es lo que dio el acelerómetro. Sería más claro escribir que 'xf = k * xf + (1.0-k) * x' donde xf es la versión filtrada de xy una ecuación similar para el eje y. –

+0

@Andrew - gracias por la sugerencia - ahora editado para una mayor claridad (¡espero!). –

Cuestiones relacionadas