Estoy tratando de filtrar HP una señal filtrándola LP y restando la salida del filtro original. Para obtener la señal filtrada por LP, filtré hacia atrás y hacia adelante usando un filtro Butterworth de tercer orden para una señal de 16,000 muestras. La frecuencia de corte fue de 0,5 Hz a 250 Hz. No se utilizó ninguna ventana.
En el primer 85% de las muestras, la salida de este método parece superponerse completamente con la señal filtrada por HP. Sin embargo, al final de la salida, hay un fenómeno similar a la sinc.
- ¿Qué lo causa?
- ¿Qué podría cambiar para que este método sea factible?
Aquí están las dos señales superpuestas. El azul se filtra con HP, y el rojo se obtiene por sustracción.
Aquí está la diferencia absoluta por muestra. Nunca son exactamente iguales; La diferencia mínima es 8e-12. El 87% de los valores están por debajo de 0.01.
(Si hay una mejor manera de obtener un filtro HP de de un filtro LP , me encantaría aprenderlo).
fuente
Respuestas:
Methinks @ hotpaw2 está en el camino correcto. Supongo que filtfilt no está manejando las condiciones iniciales para el filtro inverso del todo bien. Parece un problema realmente difícil: no creo que pueda culpar a Mathworks por equivocarse ...
La solución me parece bastante fácil: rellene con cero el final de su señal hasta que desaparezca la sinc y elimine el relleno (¡ahora distinto de cero!) Después del filtro.
fuente
Está haciendo un filtro hacia adelante y hacia atrás para uno, y un filtro solo hacia adelante para el otro. Por lo tanto, los dos filtros se comportarán de manera diferente en uno o ambos bordes.
Si su señal es muy estacionaria y exactamente periódica en la longitud de la ventana de datos, puede intentar ajustar los datos de forma circular e iniciar los filtros al inicio por sus longitudes de respuesta al impulso.
fuente
filtfilt
ybutter(3,0.5/250,high)
). La señal es de un ECG que no puedo esperar que sea exactamente periódica.