Necesito pasar una señal de filtro de paso alto y mi diseño simplemente no la está cortando. La parte que lo hace difícil es que no puedo tolerar el retraso. Estoy muestreando a 20Hz, la señal que me importa es de 1/12 a 1 / 4Hz, y mi sistema debe ser lo más real posible (un retraso de 2 segundos para el procesamiento de la señal es todo lo que puedo manejar). La frecuencia de esquina es flexible, pero tiene que estar por debajo de 1 / 10Hz en el peor de los casos.
He estado usando un filtro de paso bajo similar a IIR como este:
signal_low_freq(n) = (signal_low_freq(n-1)*(filter_constant - 1) + (sensor_data(n))) /filter_constant;
signal_ac(n) = sensor_data(n) - signal_low_freq(n);
donde filter_constant = 165.
Tiene una latencia baja, pero también introduce una gran cantidad de errores relacionados con la fase (lo medí en aproximadamente 100 muestras de retraso).
He usado fdatool de Matlab y puedo obtener excelentes resultados con un filtro FIR de alto orden, pero eso es obviamente demasiado retraso.
¿Alguien tiene una buena solución para este problema de DSP?
Como nota: en el rango de audio, es análogo al muestreo a 48 kHz y el filtrado de paso alto con una frecuencia de esquina en algún lugar entre 150Hz y 240Hz.