Necesito filtrar una señal de paso alto, y mi diseño simplemente no es suficiente. La parte que lo complica es que no puedo tolerar el retraso. Estoy muestreando a 20 Hz, la señal que me importa es de 1/12 a 1/4 Hz, y mi sistema tiene que 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/10 Hz 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 constante_filtro = 165.
Tiene una latencia baja, pero también introduce una gran cantidad de errores relacionados con la fase (lo medí en unas 100 muestras de retraso).
He usado fdatool de Matlab y puedo obtener excelentes resultados con un filtro FIR de alto orden, pero obviamente eso es demasiado retraso.
¿Alguien tiene una buena solución a este problema de DSP?
Como nota: en el rango de audio, es similar al muestreo a 48 kHz y al filtrado de paso alto con una frecuencia de esquina entre 150 Hz y 240 Hz.
Me temo que te enfrentas a una limitación fundamental de los sistemas físicos causales reales. Está solicitando un filtro que pueda distinguir entre señales que tienen períodos de 12 a 16 segundos, pero que solo le permita "mirar" un segmento de 2 segundos (1/6 a 1/8 del período) de la forma de onda en cuestión. Simplemente no es posible obtener un cambio de fase y un retraso bajo en estas circunstancias.
¿Puede proporcionar más contexto para este problema? ¿Cuál es la naturaleza de las señales y por qué se requiere una latencia de procesamiento tan baja?
scott seidman
Beto