Tôi là một kỹ sư phần mềm có kinh nghiệm và đang làm việc trên các cảm biến điện thoại thông minh. Tôi đã tham gia các lớp EE cơ bản về DSP và đang cố gắng áp dụng kiến thức của mình. Tôi tin rằng tôi hiểu tích chập, hàm truyền, biến đổi z, v.v. Tôi biết một chút về bộ lọc FIR và IIR.
Bây giờ, khi đọc qua tài liệu và API phần mềm, tôi thấy mọi người đang áp dụng LPF cho dữ liệu cảm biến trong miền thời gian. Tôi biết rằng bạn làm điều đó thông qua việc sử dụng các phương trình sai khác (ví dụ y [i] = y [i-1] + 2 * x [i]), nhưng tôi đã học được trong lớp EE của mình rằng LPF thường được áp dụng thông qua hoạt động tích chập trong đó bạn kết hợp tín hiệu thời gian với các hệ số của sóng chân (ví dụ) và với tần số cắt cụ thể. Vì vậy, việc sử dụng thông thường của "bộ lọc thông thấp" là không đủ chính xác đối với tôi.
Ví dụ: API Google Android có tài liệu này: 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];
}
Làm cách nào để diễn giải bộ lọc thông thấp đó? Tần số cắt là gì? Băng thông chuyển tiếp là gì? Có phải họ đang sử dụng LPF này chỉ để làm trung bình?