¿Cómo puedo filtrar un paso alto (DSP) una señal de baja frecuencia sin introducir retraso?

4

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.

    
pregunta Bob

1 respuesta

7

Me temo que te enfrentas a una limitación fundamental de los sistemas físicos reales y causales. Está solicitando un filtro que puede distinguir entre señales que tienen períodos de 12 a 16 segundos, pero solo le permite "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 desfase bajo y bajo retraso 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?

    
respondido por el Dave Tweed

Lea otras preguntas en las etiquetas