Je suis un ingénieur logiciel expérimenté et je travaille sur les capteurs de smartphones. J'ai suivi des cours d'EE fondamentaux en DSP et j'essaie d'appliquer mes connaissances. Je crois que je comprends la convolution, les fonctions de transfert, la transformation z, etc. Je connais un peu les filtres FIR et IIR.
Maintenant, en lisant les API logicielles et la documentation, je vois que les gens appliquent un LPF aux données des capteurs dans le domaine temporel. Je sais que vous le faites en utilisant des équations de différence (par exemple y [i] = y [i-1] + 2 * x [i]), mais j'ai appris dans ma classe EE que les LPF sont généralement appliqués par le biais de l'opération de convolution où vous convoluez le signal temporel avec les coefficients d'une onde sinc (par exemple) et avec une fréquence de coupure spécifique. Donc, l'utilisation familière du "filtre passe-bas" n'est pas assez exacte pour moi.
Par exemple, l'API Google Android possède cette documentation: http://developer.android.com/reference/android/hardware/SensorEvent.html#values
public void onSensorChanged(SensorEvent event)
{
// alpha is calculated as t / (t + dT)
// with t, the low-pass filter's time-constant
// and dT, the event delivery rate
final float alpha = 0.8;
gravity[0] = alpha * gravity[0] + (1 - alpha) * event.values[0];
gravity[1] = alpha * gravity[1] + (1 - alpha) * event.values[1];
gravity[2] = alpha * gravity[2] + (1 - alpha) * event.values[2];
linear_acceleration[0] = event.values[0] - gravity[0];
linear_acceleration[1] = event.values[1] - gravity[1];
linear_acceleration[2] = event.values[2] - gravity[2];
}
Comment interpréter ce filtre passe-bas? Quelle est la fréquence de coupure? Quelle est la bande passante de transition? Utilisent-ils ce LPF uniquement pour faire la moyenne?