Eu sou um engenheiro de software experiente e estou trabalhando em sensores de smartphone. Tomei aulas de EE fundamentais no DSP e estou tentando aplicar meu conhecimento. Acredito que compreendo convolução, funções de transferência, transformação z etc. Eu sei um pouco sobre filtros FIR e IIR.
Agora, ao ler as APIs e a documentação do software, vejo pessoas aplicando um LPF para sensor de dados no domínio do tempo. Eu sei que você faz isso através do uso de equações de diferença (por exemplo, y [i] = y [i-1] + 2 * x [i]), mas aprendi na minha classe de EE que o LPF é normalmente aplicado através da operação de convolução onde você envolve o sinal de tempo com os coeficientes de uma onda sinc (por exemplo) e com uma frequência de corte específica. Portanto, o uso coloquial de "filtro passa-baixo" não é exato o suficiente para mim.
Por exemplo, a API do Google Android possui esta documentação: 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];
}
Como interpreto esse filtro passa-baixo? Qual é a frequência de corte? Qual é a largura de banda de transição? Eles estão usando esse LPF apenas para calcular a média?