¿Alguien está familiarizado con el algoritmo de Gustafson para minimizar los transitorios en el filtrado hacia adelante y hacia atrás [1]? Estoy tratando de implementarlo y mi primera suposición fue verificar filtfilt.m de Matlab, ya que están haciendo referencia al documento. En la función Matlab también se resuelve un sistema de ecuaciones lineales para encontrar las condiciones iniciales zi que minimizan los transitorios de inicio, pero la relación entre referencia y código no me resulta obvia. Las únicas líneas de código con respecto a la minimización son (nfilt es la longitud de los vectores de coeficiente):
zi = ( eye(nfilt-1) - [-a(2:nfilt), [eye(nfilt-2); zeros(1,nfilt-2)]] ) \...
( b(2:nfilt) - b(1)*a(2:nfilt) );
¿Alguien puede señalarme en la dirección correcta sobre cómo esas líneas se relacionan con el algoritmo descrito en el artículo de Gustafson?
[1] Gustafsson, F. "Determinación de los estados iniciales en el filtrado hacia adelante y hacia atrás". Transacciones IEEE® sobre procesamiento de señales. Vol. 44, abril de 1996, págs. 988–992.
filtfilt()
no puedo ver por qué. No he leído el documento de Gustafson (no soy IEEE y no puedo obtenerlo de forma gratuita, cualquiera que tenga una copia puede enviarme un .pdf). Al usar el concepto de filtfilt
, uno puede hacerlo a un archivo completo de muestras (para mí sería un archivo de audio o sonido, como un .wav) primero filtre el sonido hacia adelante con relleno de cero en el extremo siempre que espera que sea la respuesta al impulso del filtro hacia adelante. eso alarga el archivo, pero la salida llega prácticamente a cero. luego ejecute el archivo resultante a través del filtro hacia atrás.
filtfilt
en tiempo real al dividir la entrada en bloques de muestras, rellenando con ceros cada bloque, filtrando los bloques hacia atrás pero manteniendo las "colas" volteándolas hacia adelante y superposición de adición. Powell-Chau no hizo esto, pero creo que esta es una buena aplicación de los filtros Truncated IIR, para que sepa cuándo termina la salida del bloque en descomposición.