Main Content

Diseño de filtros IIR

Filtros IIR frente a filtros FIR

La principal ventaja de los filtros IIR frente a los filtros FIR es que suelen cumplir un conjunto determinado de especificaciones con un orden del filtro mucho menor que el de un filtro FIR equivalente. Aunque los filtros IIR tienen fase no lineal, el procesamiento de datos dentro del software MATLAB® suele realizarse "sin conexión", es decir, la secuencia completa de datos está disponible antes del filtrado. Esto permite un enfoque de filtrado no causal y de fase cero (por medio de la función filtfilt), que elimina la distorsión de fase no lineal de un filtro IIR.

Filtros IIR clásicos

Los filtros IIR clásicos, Butterworth, Chebyshev tipos I y II, elíptico y Bessel se aproximan al filtro ideal de "brick wall" (pared de ladrillos) de diferentes maneras.

Esta toolbox proporciona funciones para crear todos estos tipos de filtros IIR clásicos tanto en el dominio analógico como en el digital (excepto el de Bessel, para el que solo se admite el caso analógico), así como en configuraciones de paso bajo, paso alto, paso banda y eliminador de banda. Para la mayoría de los tipos de filtro, también se puede encontrar el orden de filtro más bajo que se ajusta a una especificación de filtro dada en lo que respecta a la atenuación de la banda de paso y de la banda de parada, y a las anchuras de transición.

Otros filtros IIR

La función de diseño de filtros directos yulewalk encuentra un filtro con una respuesta de magnitud que se acerca a una función de respuesta de frecuencia especificada. Se trata de una forma de crear un filtro paso banda multibanda.

También puede utilizar las funciones de modelado paramétrico o de identificación del sistema para diseñar filtros IIR. Estas funciones se analizan en Parametric Modeling.

La función de diseño de Butterworth generalizada maxflat se analiza en la sección Diseño de filtros Butterworth generalizados.

Resumen del método de filtrado IIR

En la siguiente tabla se resumen los distintos métodos de filtrado de la toolbox y se enumeran las funciones disponibles para implementar dichos métodos.

Métodos y funciones disponibles de los filtros de la toolbox

Método de filtradoDescripciónFunciones de filtro

Prototipado analógico

A partir de los polos y ceros de un filtro paso bajo clásico de prototipado en el dominio continuo (Laplace), obtener un filtro digital mediante la transformación de la frecuencia y la discretización del filtro.

Funciones de diseño completo: besself, butter, cheby1, cheby2, ellip

Funciones de estimación del orden: buttord, cheb1ord, cheb2ord, ellipord

Funciones de prototipado analógico paso bajo: besselap, buttap, cheb1ap, cheb2ap, ellipap

Funciones de transformación de frecuencia: lp2bp, lp2bs, lp2hp, lp2lp

Funciones de discretización de filtros: bilinear, impinvar

Diseño directo

Diseñar un filtro digital directamente en el dominio de tiempo discreto mediante la aproximación de una respuesta de magnitud lineal a trozos.

yulewalk

Diseño Butterworth generalizado

Diseñar filtros Butterworth paso bajo con más ceros que polos.

maxflat

Modelado paramétrico

Encontrar un filtro digital que se aproxime a una respuesta prescrita en el dominio de tiempo o frecuencia. (Consulte la documentación de System Identification Toolbox™ para ver una colección exhaustiva de herramientas de modelado paramétrico).

Funciones de modelado en el dominio de tiempo: lpc, prony, stmcb

Funciones de modelado en el dominio de frecuencia: invfreqs, invfreqz

Diseño de filtros IIR clásicos mediante prototipado analógico

La principal técnica de diseño de filtros IIR digitales que ofrece esta toolbox se basa en la conversión de filtros paso bajo analógicos clásicos a sus equivalentes digitales. En las siguientes secciones se describe cómo diseñar filtros y se resumen las características de los tipos de filtro admitidos. Consulte Special Topics in IIR Filter Design para ver los pasos detallados del proceso de diseño de filtros.

Diseño completo de filtros IIR clásicos

Puede crear fácilmente un filtro de cualquier orden con una configuración de paso bajo, paso alto, paso banda o eliminador de banda mediante las funciones de diseño de filtros.

Funciones de diseño de filtros

Tipo de filtro

Función de diseño

Bessel (solo analógico)

[b,a] = besself(n,Wn,options)

[z,p,k] = besself(n,Wn,options)

[A,B,C,D] = besself(n,Wn,options)

Butterworth

[b,a] = butter(n,Wn,options)

[z,p,k] = butter(n,Wn,options)

[A,B,C,D] = butter(n,Wn,options)

Chebyshev tipo I

[b,a] = cheby1(n,Rp,Wn,options)

[z,p,k] = cheby1(n,Rp,Wn,options)

[A,B,C,D] = cheby1(n,Rp,Wn,options)

Chebyshev tipo II

[b,a] = cheby2(n,Rs,Wn,options)

[z,p,k] = cheby2(n,Rs,Wn,options)

[A,B,C,D] = cheby2(n,Rs,Wn,options)

Elíptico

[b,a] = ellip(n,Rp,Rs,Wn,options)

[z,p,k] = ellip(n,Rp,Rs,Wn,options)

[A,B,C,D] = ellip(n,Rp,Rs,Wn,options)

De forma predeterminada, cada una de estas funciones devuelve un filtro paso bajo; solo es necesario especificar la frecuencia de corte que se desea, Wn, en unidades normalizadas de manera que la frecuencia de Nyquist sea 1 Hz). Para un filtro paso alto, añada 'high' a la lista de parámetros de la función. Para un filtro paso banda o eliminador de banda, especifique Wn como un vector de dos elementos que contenga las frecuencias del borde de la banda de paso. Añada 'stop' para la configuración del eliminador de banda.

Aquí tiene algunos ejemplos de filtros digitales:

[b,a] = butter(5,0.4);                    % Lowpass Butterworth
[b,a] = cheby1(4,1,[0.4 0.7]);            % Bandpass Chebyshev Type I
[b,a] = cheby2(6,60,0.8,'high');          % Highpass Chebyshev Type II
[b,a] = ellip(3,1,60,[0.4 0.7],'stop');   % Bandstop elliptic

Para diseñar un filtro analógico, tal vez para la simulación, utilice una 's' final y especifique las frecuencias de corte en rad/s:

[b,a] = butter(5,0.4,'s');      % Analog Butterworth filter

Todas las funciones de diseño de filtros devuelven un filtro en la representación de la función de transferencia, de cero-polo-ganancia o del modelo del sistema lineal de espacios de estados, según cuántos argumentos de salida existan. Por lo general, se debe evitar el uso del formato de función de transferencia porque pueden producirse problemas numéricos causados por errores de redondeo. En su lugar, utilice el formato cero-polo-ganancia, que puede convertir en un formato de sección de segundo orden (SOS) mediante zp2sos y, a continuación, utilice el formato SOS para analizar o implementar el filtro.

Nota

Todos los filtros paso bajo IIR clásicos están mal adaptados a las frecuencias de corte extraordinariamente bajas. Por ello, en lugar de diseñar un filtro IIR paso bajo con una banda de paso muy estrecha, puede resultar preferible diseñar una banda de paso más amplia y diezmar la señal de entrada.

Diseño de filtros IIR según las especificaciones del dominio de frecuencia

Esta toolbox proporciona funciones de selección del orden que calculan el orden mínimo del filtro para cumplir una determinada serie de requisitos.

Tipo de filtro

Función de estimación del orden

Butterworth

[n,Wn] = buttord(Wp,Ws,Rp,Rs)

Chebyshev tipo I

[n,Wn] = cheb1ord(Wp,Ws,Rp,Rs)

Chebyshev tipo II

[n,Wn] = cheb2ord(Wp,Ws,Rp,Rs)

Elíptico

[n,Wn] = ellipord(Wp,Ws,Rp,Rs)

Son útiles junto con las funciones de diseño de filtros. Suponga que quiere un filtro paso banda con una banda de paso de 1000 a 2000 Hz, bandas de parada que comienzan a 500 Hz a cada lado, una frecuencia de muestreo de 10 kHz, como máximo 1 dB de ondulación de banda de paso y al menos 60 dB de atenuación en la banda de parada. Puede cumplir estas especificaciones si utiliza la función butter de la siguiente manera.

[n,Wn] = buttord([1000 2000]/5000,[500 2500]/5000,1,60)
[b,a] = butter(n,Wn);
n =
    12
Wn =
    0.1951    0.4080

Un filtro elíptico que cumple los mismos requisitos viene dado por

[n,Wn] = ellipord([1000 2000]/5000,[500 2500]/5000,1,60)
[b,a] = ellip(n,1,60,Wn);
n =
    5
Wn =
    0.2000    0.4000

Estas funciones también funcionan con las demás configuraciones de banda estándar, así como con los filtros analógicos.

Comparación de los tipos de filtros IIR clásicos

La toolbox proporciona cinco tipos distintos de filtros IIR clásicos, cada uno de ellos óptimo de alguna manera. En esta sección se muestra la forma básica del prototipado analógico de cada uno de ellos y se resumen sus principales características.

Filtro Butterworth

El filtro Butterworth proporciona la mejor aproximación en serie de Taylor a la respuesta ideal del filtro paso bajo en las frecuencias analógicas Ω = 0 y Ω = ∞, para cualquier orden N; la respuesta de magnitud al cuadrado tiene 2N – 1 derivadas nulas en estas ubicaciones (máximamente plana en Ω = 0 y Ω = ∞). La respuesta es monótona en general y disminuye suavemente de Ω = 0 a Ω = ∞. |H(jΩ)|=1/2 en Ω = 1.

Filtro Chebyshev tipo I

El filtro Chebyshev tipo I minimiza la diferencia absoluta entre la respuesta en frecuencia ideal y la real en toda la banda de paso incorporando una ondulación igual de Rp dB en la banda de paso. La respuesta de la banda de parada es lo más plana posible. La transición de la banda de paso a la banda de parada es más rápida que en el filtro Butterworth. |H(jΩ)|=10Rp/20 en Ω = 1.

Filtro Chebyshev tipo II

El filtro Chebyshev tipo II minimiza la diferencia absoluta entre la respuesta en frecuencia ideal y la real en toda la banda de parada incorporando una ondulación igual de Rs dB en la banda de parada. La respuesta de la banda de paso es lo más plana posible.

La banda de parada no se aproxima a cero tan rápidamente como el filtro de tipo I (y no se aproxima a cero en absoluto para un orden de filtro de valor par n). Sin embargo, la ausencia de ondulación en la banda de paso suele ser una ventaja importante. |H(jΩ)|=10Rs/20 en Ω = 1.

Filtro elíptico

Los filtros elípticos son equiripple tanto en la banda de paso como en la banda de parada. Por lo general, cumplen los requisitos de filtrado con el orden más bajo de cualquier tipo de filtro admitido. Dado un orden de filtro n, una ondulación de la banda de paso Rp en decibelios y una ondulación de la banda de parada Rs en decibelios, los filtros elípticos minimizan la anchura de la transición. |H(jΩ)|=10Rp/20 en Ω = 1.

Filtro de Bessel

Los filtros de Bessel paso bajo analógicos tienen un retardo de grupo máximo en la frecuencia cero y conservan un retardo de grupo casi constante en toda la banda de paso. Por ello, las señales filtradas mantienen sus formas de onda en el intervalo de frecuencias de la banda de paso. Cuando un filtro paso bajo de Bessel analógico se convierte en digital mediante la aplicación de frecuencias, deja de tener esta propiedad de máxima planitud. Signal Processing Toolbox™ admite únicamente el caso analógico para la función completa de diseño del filtro de Bessel.

Los filtros de Bessel suelen requerir un orden de filtro superior al de otros filtros para conseguir una atenuación satisfactoria de la banda de parada. |H(jΩ)|<1/2 en Ω = 1 y disminuye a medida que aumenta el orden del filtro n.

Nota

Los filtros paso bajo mostrados arriba se crearon con las funciones de prototipado analógico besselap, buttap, cheb1ap, cheb2ap y ellipap. Estas funciones encuentran los ceros, los polos y la ganancia de un filtro analógico de n-ésimo orden del tipo apropiado con una frecuencia de corte de 1 rad/s. Las funciones de diseño completo de filtros (besself, butter, cheby1, cheby2 y ellip) llaman a las funciones de prototipado como primer paso en el proceso de diseño. Para obtener más detalles, consulte Special Topics in IIR Filter Design.

Para crear gráficas similares, utilice n = 5 y, según sea necesario, Rp = 0.5 y Rs = 20. Por ejemplo, para crear la gráfica del filtro elíptico:

[z,p,k] = ellipap(5,0.5,20);
w = logspace(-1,1,1000);
h = freqs(k*poly(z),poly(p),w);
semilogx(w,abs(h)), grid
xlabel('Frequency (rad/s)')
ylabel('Magnitude')

Diseño directo de filtros IIR

Esta toolbox utiliza el término métodos directos para describir las técnicas de diseño IIR que encuentran un filtro basado en especificaciones en el dominio discreto. A diferencia del método de prototipado analógico, los métodos de diseño directo no están limitados a las configuraciones estándar de paso bajo, paso alto, paso banda o eliminador de banda. Más bien, estas funciones diseñan filtros con una respuesta en frecuencia arbitraria, tal vez multibanda. En esta sección se analiza la función yulewalk, que está pensada específicamente para el diseño de filtros; Parametric Modeling analiza otros métodos que también pueden considerarse directos, como el método de Prony, la predicción lineal, el método de Steiglitz-McBride y el diseño de frecuencias inversas.

La función yulewalk diseña filtros digitales IIR recursivos por medio del ajuste de una respuesta en frecuencia especificada. El nombre de yulewalk refleja su método para encontrar los coeficientes del denominador del filtro: encuentra la FFT inversa de la respuesta ideal de magnitud al cuadrado especificada y resuelve las ecuaciones de Yule-Walker modificadas mediante las muestras de la función de autocorrelación resultante. La instrucción

[b,a] = yulewalk(n,f,m)

devuelve los vectores fila b y a que contienen los coeficientes del numerador y del denominador n+1 del filtro IIR de n-ésimo orden cuyas características de frecuencia-magnitud se aproximan a las dadas en los vectores f y m. f es un vector de puntos de frecuencia que van de 0 a 1, donde 1 representa la frecuencia de Nyquist. m es un vector que contiene la respuesta de magnitud especificada en los puntos de f. f y m pueden describir cualquier respuesta de magnitud de forma lineal a trozos, incluida una respuesta multibanda. La equivalente FIR de esta función es fir2, que también diseña filtros basados en respuestas de magnitudes lineales a trozos arbitrarias. Para obtener más detalles, consulte Diseño de filtros FIR.

Tenga en cuenta que yulewalk no acepta información de fase y no se hace ninguna declaración sobre la optimalidad del filtro resultante.

Diseñe un filtro multibanda con yulewalk y represente la respuesta en frecuencia especificada y la real:

m = [0   0   1   1   0   0   1   1   0 0];
f = [0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 1];
[b,a] = yulewalk(10,f,m);
[h,w] = freqz(b,a,128)
plot(f,m,w/pi,abs(h))

Diseño de filtros Butterworth generalizados

La función de la toolbox maxflat permite diseñar filtros Butterworth generalizados, es decir, filtros Butterworth con números distintos de ceros y polos. Esto es recomendable en algunas implementaciones donde los polos son más costosos en términos de cálculo que los ceros. maxflat es igual que la función butter, salvo que se pueden especificar dos órdenes (uno para el numerador y otro para el denominador) en lugar de uno solo. Estos filtros son máximamente planos. Esto significa que el filtro que se obtiene es óptimo para cualquier orden del numerador y del denominador, con el número máximo de derivadas en 0 y la frecuencia de Nyquist ω = π, ambos valores establecidos en 0.

Por ejemplo, cuando los dos órdenes son iguales, maxflat es lo mismo que butter:

[b,a] = maxflat(3,3,0.25)
b =
    0.0317    0.0951    0.0951    0.0317
a =
    1.0000   -1.4590    0.9104   -0.1978
[b,a] = butter(3,0.25)
b =
    0.0317    0.0951    0.0951    0.0317
a =
    1.0000   -1.4590    0.9104   -0.1978

Sin embargo, maxflat es más versátil porque permite diseñar un filtro con más ceros que polos:

[b,a] = maxflat(3,1,0.25)
b =
    0.0950    0.2849    0.2849    0.0950
a =
    1.0000   -0.2402

La tercera entrada de maxflat es la frecuencia de media potencia, una frecuencia entre 0 y 1 con una respuesta de magnitud de 1/2.

También puede diseñar filtros de fase lineal que tengan la propiedad de máxima planicidad utilizando la opción 'sym':

maxflat(4,'sym',0.3)
ans =
    0.0331    0.2500    0.4337    0.2500    0.0331

Para ver todos los detalles del algoritmo maxflat, consulte Selesnick y Burrus [2].