Ich bin ein erfahrener Softwareentwickler und arbeite an Smartphonesensoren. Ich habe grundlegende EE-Kurse in DSP belegt und versuche, mein Wissen anzuwenden. Ich glaube, dass ich Faltung, Übertragungsfunktionen, Z-Transformation usw. verstehe. Ich weiß ein wenig über FIR- und IIR-Filter.
Beim Durchlesen von Software-APIs und Dokumentationen wird festgestellt, dass Benutzer eine LPF auf Sensordaten im Zeitbereich anwenden. Ich weiß, dass Sie dies durch die Verwendung von Differenzgleichungen tun (z. B. y [i] = y [i-1] + 2 * x [i]), aber ich habe in meiner EE-Klasse gelernt, dass LPF typischerweise durch die Faltungsoperation angewendet werden wo Sie das Zeitsignal mit den Koeffizienten einer Sinuswelle (zum Beispiel) und mit einer bestimmten Grenzfrequenz falten. Die umgangssprachliche Verwendung des "Tiefpassfilters" ist mir also nicht genau genug.
Die Google Android-API enthält beispielsweise die folgende Dokumentation: 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];
}
Wie interpretiere ich diesen Tiefpassfilter? Was ist die Grenzfrequenz? Was ist die Übergangsbandbreite? Verwenden sie diese LPF ausschließlich zur Mittelwertbildung?