Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

Diseño de filtros FIR

Filtros FIR frente a filtros IIR

Los filtros digitales con respuesta al impulso de duración finita (filtros totalmente nulos o FIR) presentan ventajas y desventajas en comparación con los filtros de respuesta al impulso de duración infinita (IIR).

Los filtros FIR tienen las siguientes ventajas principales:

  • Pueden tener una fase exactamente lineal.

  • Siempre son estables.

  • Los métodos de diseño suelen ser lineales.

  • Pueden realizarse eficazmente en el hardware.

  • Los transitorios de inicio del filtro tienen una duración finita.

La principal desventaja de los filtros FIR es que suelen requerir un orden de filtro mucho más alto que los filtros IIR para alcanzar un determinado nivel de rendimiento. En consecuencia, el retardo de estos filtros suele ser mucho mayor que el de un filtro IIR de igual rendimiento.

Resumen de los filtros FIR

Filtros FIR

Método de diseño de filtro

Descripción

Funciones de filtro

Ventanas

Aplicar ventanas a la transformada inversa de Fourier truncada del filtro "brick wall» (pared de ladrillo) especificado

fir1, fir2, kaiserord

Multibanda con bandas de transición

Método de equiripple o de mínimos cuadrados en las subbandas del intervalo de frecuencias

firls, firpm, firpmord

Mínimos cuadrados restringidos

Minimizar la integral del cuadrado del error en todo el intervalo de frecuencias con restricciones de error máximo

fircls, fircls1

Respuesta arbitraria

Respuestas arbitrarias, incluidos los filtros complejos y de fase no lineal

cfirpm

Coseno alzado

Respuesta de paso bajo con transición suave y sinusoidal

rcosdesign

Filtros de fase lineal

A excepción de cfirpm, todas las funciones de diseño de filtros FIR diseñan únicamente filtros de fase lineal. Los coeficientes o "taps" del filtro obedecen a una relación de simetría par o impar. En función de esta simetría y de si el orden n del filtro es par o impar, un filtro de fase lineal (almacenado en la longitud n+1 del vector b) tiene ciertas restricciones inherentes a su respuesta en frecuencia.

Tipo de filtro de fase linealOrden del filtro Simetría de los coeficientesRespuesta H(f), f = 0Respuesta H(f), f = 1 (Nyquist)

Tipo I

Par

par:

b(k)=b(n+2k),k=1,...,n+1

Sin restricción

Sin restricción

Tipo II

Impar

par:

b(k)=b(n+2k),k=1,...,n+1

Sin restricción

H(1) = 0

Tipo III

Par

impar:

b(k)=b(n+2k),k=1,...,n+1

H(0) = 0

H(1) = 0

Tipo IV

Impar

impar:

b(k)=b(n+2k),k=1,...,n+1

H(0) = 0

Sin restricción

El retardo de fase y el retardo de grupo de los filtros FIR de fase lineal son iguales y constantes en la banda de frecuencia. Para un filtro FIR de fase lineal de orden n, el retardo de grupo es n/2 y la señal filtrada simplemente se retarda n/2 unidades de tiempo (y la magnitud de su transformada de Fourier se escala con la respuesta de magnitud del filtro). Esta propiedad preserva la forma de onda de las señales en la banda de paso; es decir, no hay distorsión de fase.

Las funciones fir1, fir2, firls, firpm, fircls y fircls1 diseñan de forma predeterminada filtros FIR de fase lineal de tipo I y II. rcosdesign diseña solo filtros de tipo I. Tanto firls como firpm diseñan filtros FIR de fase lineal de tipo III y IV dado un indicador 'hilbert' o 'differentiator'. cfirpm puede diseñar cualquier tipo de filtro de fase lineal, así como filtros de fase no lineal.

Nota

Debido a que la respuesta en frecuencia de un filtro de tipo II es cero en la frecuencia de Nyquist (frecuencia "alta"), fir1 no diseña filtros paso alto ni eliminadores de banda de tipo II. Para n de valor impar en estos casos, fir1 añade 1 al orden y devuelve un filtro de tipo I.

Método de ventanas

Considere un filtro paso bajo digital ideal o "brick wall" con una frecuencia de corte de ω0 rad/s. Este filtro tiene la magnitud 1 en todas las frecuencias con magnitud inferior a ω0 y la magnitud 0 en las frecuencias con una magnitud entre ω0 y π. Su secuencia de respuesta al impulso h(n) es

h(n)=12πππH(ω)ejωndω=12πω0ω0ejωndω=sinω0nπn

Este filtro no es implementable, ya que su respuesta al impulso es infinita y no causal. Para crear una respuesta al impulso de duración finita, trúnquela aplicando una ventana. Conservando la sección central de la respuesta al impulso en este truncamiento, se obtiene un filtro FIR de fase lineal. Por ejemplo, un filtro de longitud 51 con una frecuencia de corte de paso bajo ω0 de 0,4 π rad/s es

b = 0.4*sinc(0.4*(-25:25));

La ventana aplicada aquí es una ventana rectangular simple. Según el teorema de Parseval, este es el filtro de longitud 51 que mejor se aproxima al filtro paso bajo ideal, en el sentido de mínimos cuadrados integrados. El siguiente comando muestra la respuesta en frecuencia del filtro en FVTool:

fvtool(b,1)

Tenga en cuenta que el eje y que se muestra en la figura siguiente está en magnitud al cuadrado. Puede establecerlo haciendo clic con el botón secundario en la etiqueta del eje y seleccionando Magnitude Squared en el menú.

En la respuesta se producen artefactos de anillo y ondulaciones, especialmente cerca del borde de la banda. Este "efecto de Gibbs" no desaparece al aumentar la longitud del filtro, pero una ventana no rectangular reduce su magnitud. La multiplicación por una ventana en el dominio de tiempo ocasiona una convolución o suavización en el dominio de frecuencia. Aplique una ventana de Hamming de longitud 51 al filtro y muestre el resultado con FVTool:

b = 0.4*sinc(0.4*(-25:25));
b = b.*hamming(51)';
fvtool(b,1)

Tenga en cuenta que el eje y que se muestra en la figura siguiente está en magnitud al cuadrado. Puede establecerlo haciendo clic con el botón secundario en la etiqueta del eje y seleccionando Magnitude Squared en el menú.

El uso de una ventana de Hamming reduce en gran medida los artefactos de anillo. Esta mejora se produce a expensas de la anchura de transición (la versión con ventanas tarda más en pasar de la banda de paso a la banda de parada) y de la optimización (la versión con ventanas no minimiza el error cuadrático integrado).

Diseño de filtros FIR de banda estándar: fir1

fir1 utiliza una aproximación por mínimos cuadrados para calcular los coeficientes del filtro y luego suaviza la respuesta al impulso con una ventana. Para obtener una visión general de las ventanas y sus propiedades, consulte Ventanas. fir1 se asemeja a las funciones de diseño de filtros IIR en el sentido de que está formulado para diseñar filtros en configuraciones de banda estándar: paso bajo, paso banda, paso alto y eliminador de banda.

Las instrucciones

n = 50;
Wn = 0.4;
b = fir1(n,Wn);

crean un vector fila b que contiene los coeficientes del filtro de ventana de Hamming de orden n. Se trata de un filtro FIR paso bajo de fase lineal con frecuencia de corte Wn. Wn es un número entre 0 y 1, donde 1 corresponde a la frecuencia de Nyquist, la mitad de la frecuencia de muestreo. (A diferencia de otros métodos, aquí Wn corresponde al punto de 6 dB.) Para un filtro paso alto, basta con añadir '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.

b = fir1(n,Wn,window) utiliza la ventana especificada en el vector columna window del diseño. El vector window debe tener n+1 elementos. Si no especifica ninguna ventana, fir1 aplica una ventana de Hamming.

Estimación del orden de la ventana de Kaiser.  La función kaiserord estima el orden de filtro, la frecuencia de corte y el parámetro beta de la ventana de Kaiser necesarios para cumplir una serie determinada de especificaciones. Dado un vector de bordes de banda de frecuencia y un vector correspondiente de magnitudes, así como la ondulación máxima admisible, kaiserord devuelve los parámetros de entrada adecuados para la función fir1.

Diseño de filtros FIR multibanda: fir2

La función fir2 también diseña filtros FIR con ventanas, pero con una respuesta en frecuencia lineal a trozos de forma arbitraria. Esto contrasta con fir1, que únicamente diseña filtros en configuraciones estándar de paso bajo, paso alto, paso banda y eliminador de banda.

Los comandos

n = 50;
f = [0 .4 .5 1];
m = [1  1  0 0];
b = fir2(n,f,m);

devuelven el vector fila b que contiene los coeficientes n+1 del filtro FIR de orden n cuyas características de frecuencia-magnitud coinciden con las dadas por 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 indicada en los puntos especificados en f. (La equivalente IIR de esta función es yulewalk, que también diseña filtros basados en respuestas de magnitudes lineales a trozos arbitrarias. Para obtener más información, consulte Diseño de filtros IIR.)

Diseño de filtros FIR multibanda con bandas de transición

Las funciones firls y firpm proporcionan un medio más general para indicar el filtro ideal especificado que las funciones fir1 y fir2. Dichas funciones diseñan transformadores de Hilbert, diferenciadores y otros filtros con coeficientes simétricos impares (fase lineal tipo III y tipo IV). También permiten incluir regiones de transición o de "despreocupación" en las que el error no se minimiza y realizar una ponderación de la minimización en función de la banda.

La función firls es una extensión de las funciones fir1 y fir2 en el sentido de que minimiza la integral del cuadrado del error entre la respuesta en frecuencia especificada y la respuesta en frecuencia real.

La función firpm implementa el algoritmo de Parks-McClellan, que utiliza el algoritmo de intercambio de Remez y la teoría de aproximación de Chebyshev para diseñar filtros con ajustes óptimos entre las respuestas en frecuencia especificadas y las reales. Los filtros son óptimos en el sentido de que minimizan el error máximo entre la respuesta en frecuencia especificada y la respuesta en frecuencia real; a veces se denominan filtros minimax. Los filtros diseñados de este modo presentan un comportamiento equiripple en su respuesta en frecuencia, por lo que también se conocen como filtros equiripple. El algoritmo de diseño de filtros FIR de Parks-McClellan es tal vez la metodología de diseño de filtros FIR más popular y ampliamente utilizada.

La sintaxis de firls y firpm es la misma; la única diferencia es su esquema de minimización. El siguiente ejemplo muestra cómo los filtros diseñados con firls y firpm reflejan estos esquemas diferentes.

Configuraciones básicas

El modo de funcionamiento predeterminado de firls y firpm es diseñar filtros de fase lineal de tipo I o de tipo II, según si el orden que se desea es par o impar respectivamente. Un ejemplo de paso bajo con una amplitud aproximada 1 de 0 a 0,4 Hz, y una amplitud aproximada 0 de 0,5 a 1,0 Hz es

n = 20;                    % Filter order
f = [0 0.4 0.5 1];         % Frequency band edges
a = [1  1  0 0];           % Amplitudes
b = firpm(n,f,a);

De 0,4 a 0,5 Hz, firpm no efectúa ninguna minimización del error; se trata de una banda de transición o de una región de "despreocupación". Una banda de transición minimiza más el error en las bandas que le interesan, a costa de una velocidad de transición más lenta. Así, estos tipos de filtros tienen una compensación inherente similar al diseño FIR por ventanas.

Para comparar los mínimos cuadrados con el diseño de filtros equiripple, utilice firls para crear un filtro similar. Escriba

bb = firls(n,f,a);

y compare sus respuestas en frecuencia mediante FVTool:

fvtool(b,1,bb,1)

Tenga en cuenta que el eje y que se muestra en la figura siguiente está en magnitud al cuadrado. Puede establecerlo haciendo clic con el botón secundario en la etiqueta del eje y seleccionando Magnitude Squared en el menú.

El filtro diseñado con firpm presenta un comportamiento equiripple. Además, hay que tener en cuenta que el filtro firls tiene una mejor respuesta en la mayor parte de la banda de paso y la banda de parada, pero en los bordes de banda (f = 0.4 y f = 0.5), la respuesta se aleja más del ideal que el filtro firpm. Esto demuestra que el error máximo del filtro firpm sobre la banda de paso y la banda de parada es menor y, de hecho, es el menor posible para esta configuración de borde de banda y longitud de filtro.

Imagine las bandas de frecuencia como líneas sobre intervalos cortos de frecuencia. firpm y firls utilizan este esquema para representar cualquier función de respuesta en frecuencia lineal a trozos con cualquier banda de transición. firls y firpm diseñan filtros paso bajo, paso alto, paso banda y eliminador de banda; un ejemplo de paso banda es

f = [0 0.3  0.4  0.7  0.8  1];   % Band edges in pairs
a = [0  0    1    1    0   0];   % Bandpass filter amplitude

Técnicamente, estos vectores f y a definen cinco bandas:

  • Dos bandas de parada, de 0,0 a 0,3 y de 0,8 a 1,0

  • Una banda de paso de 0,4 a 0,7

  • Dos bandas de parada, de 0,3 a 0,4 y de 0,7 a 0,8

Algunos ejemplos de filtros paso alto y eliminador de banda son

f = [0 0.7  0.8  1];            % Band edges in pairs
a = [0  0    1   1];            % Highpass filter amplitude
f = [0 0.3  0.4  0.5  0.8  1];  % Band edges in pairs
a = [1  1    0    0    1   1];  % Bandstop filter amplitude

Un ejemplo de filtro paso banda multibanda es

f = [0 0.1 0.15 0.25 0.3 0.4 0.45 0.55 0.6 0.7 0.75 0.85 0.9 1];
a = [1  1   0    0    1   1   0    0    1   1   0    0    1  1];

Otra posibilidad es un filtro que tenga como región de transición la línea que conecta la banda de paso con la banda de parada; puede ayudar a controlar la respuesta de magnitud "desbocada" en regiones de transición amplias:

f = [0 0.4 0.42 0.48 0.5  1];
a = [1 1 0.8 0.2 0 0];   % Passband, linear transition, 
                         %  stopband

Vector de ponderación

Tanto firls como firpm permiten poner más o menos énfasis en minimizar el error en determinadas bandas de frecuencia respecto a otras. Para ello, especifique un vector de ponderación a continuación de los vectores de frecuencia y amplitud. Un ejemplo de filtro paso bajo equiripple con 10 veces menos ondulación en la banda de parada que en la banda de paso es

n = 20;              % Filter order
f = [0 0.4 0.5 1];   % Frequency band edges
a = [1  1   0  0];   % Amplitudes
w = [1 10];          % Weight vector
b = firpm(n,f,a,w);

Un vector de ponderación legal es siempre la mitad de la longitud de los vectores f y a; debe haber exactamente una ponderación por banda.

Filtros antisimétricos/Transformadores de Hilbert

Cuando se les llama con una opción de seguimiento 'h' o 'Hilbert', firpm y firls diseñan filtros FIR con simetría impar, es decir, filtros de fase lineal de tipo III (para orden par) o de tipo IV (para orden impar). Un transformador de Hilbert ideal tiene esta propiedad de antisimetría y una amplitud de 1 en todo el intervalo de frecuencias. Pruebe los siguientes transformadores de Hilbert aproximados y represéntelos con FVTool:

b = firpm(21,[0.05 1],[1 1],'h');       % Highpass Hilbert
bb = firpm(20,[0.05 0.95],[1 1],'h');   % Bandpass Hilbert
fvtool(b,1,bb,1)

Puede encontrar la transformada de Hilbert retardada de una señal x pasándola por esos filtros.

fs = 1000;            % Sampling frequency
t = (0:1/fs:2)';      % Two second time vector
x = sin(2*pi*300*t);  % 300 Hz sine wave example signal
xh = filter(bb,1,x);  % Hilbert transform of x

La señal analítica correspondiente a x es la señal compleja que tiene x como parte real y la transformada de Hilbert de x como parte imaginaria. Para este método FIR (una alternativa a la función hilbert), hay que retardar x la mitad del orden del filtro para crear la señal analítica:

xd = [zeros(10,1); x(1:length(x)-10)];	    % Delay 10 samples
xa = xd + j*xh;                            % Analytic signal

Este método no funciona directamente para los filtros de orden impar, que requieren un retardo no entero. En este caso, la función hilbert, descrita en Transformada de Hilbert, estima la señal analítica. Como alternativa, utilice la función resample para retardar la señal un número no entero de muestras.

Diferenciadores

La diferenciación de una señal en el dominio de tiempo es equivalente a la multiplicación de la transformada de Fourier de la señal por una función de rampa imaginaria. Es decir, para diferenciar una señal, pásela por un filtro que tenga una respuesta H(ω) = jω. Aproxime el diferenciador ideal (con un retardo) mediante firpm o firls con la opción 'd' o 'differentiator':

b = firpm(21,[0 1],[0 pi],'d');

En el caso de un filtro de tipo III, la banda de diferenciación debe detenerse por debajo de la frecuencia de Nyquist y el vector de amplitud debe reflejar ese cambio para garantizar la pendiente correcta:

bb = firpm(20,[0 0.9],[0 0.9*pi],'d');

En el modo 'd', firpm pondera el error en 1/ω en las bandas de amplitud no nulas para minimizar el máximo error relativo. firls pondera el error en (1/ω)2 en bandas de amplitud no nulas en el modo 'd'.

Las siguientes gráficas muestran las respuestas de magnitud para los diferenciadores anteriores.

fvtool(b,1,bb,1)
legend('Odd order','Even order','Location','best')

Diseño de filtros FIR por mínimos cuadrados restringidos

Las funciones de diseño de filtros FIR por mínimos cuadrados restringidos (CLS) implementan una técnica que permite diseñar filtros FIR sin definir explícitamente las bandas de transición para la respuesta de magnitud. La posibilidad de omitir la especificación de las bandas de transición es útil en varias situaciones. Por ejemplo, puede no estar claro dónde debe aparecer una banda de transición definida de forma rígida si el ruido y la información de la señal aparecen juntos en la misma banda de frecuencia. Del mismo modo, puede tener sentido omitir la especificación de las bandas de transición si solo aparecen para controlar los resultados de los fenómenos de Gibbs que aparecen en la respuesta del filtro. Consulte Selesnick, Lang y Burrus [2] para conocer este método.

En lugar de definir las bandas de paso, las bandas de parada y las regiones de transición, el método CLS acepta una frecuencia de corte (para los casos de paso alto, paso bajo, paso banda o eliminador de banda), o bien bordes de banda de paso y banda de parada (para los casos de multibanda), para la respuesta que se especifique. De este modo, el método CLS define las regiones de transición de forma implícita, en lugar de explícita.

La característica principal del método CLS es que permite definir umbrales superiores e inferiores que contienen la máxima ondulación permitida en la respuesta de magnitud. Teniendo en cuenta esta restricción, el método aplica la técnica de minimización del error mínimo cuadrático sobre el intervalo de frecuencias de la respuesta del filtro, en lugar de sobre bandas específicas. La minimización del error incluye cualquier área de discontinuidad en la respuesta ideal de tipo "brick wall". Una ventaja adicional es que la técnica permite especificar picos arbitrariamente pequeños derivados del fenómeno de Gibbs.

Hay dos funciones de la toolbox que implementan esta técnica de diseño.

Descripción

Función

Diseño de filtros FIR multibanda por mínimos cuadrados restringidos

fircls

Diseño de filtros por mínimos cuadrados restringidos para filtros paso bajo y paso alto de fase lineal

fircls1

Para obtener más información sobre la sintaxis de llamada de estas funciones, consulte sus descripciones de referencia en la Referencia de funciones.

Diseño básico de filtros CLS paso bajo y paso alto

La más básica de las funciones de diseño de CLS, fircls1, utiliza esta técnica para diseñar filtros FIR paso bajo y paso alto. Como ejemplo, considere el diseño de un filtro con respuesta al impulso de orden 61 y frecuencia de corte de 0,3 (normalizada). Además, defina los límites superior e inferior que restringen el proceso de diseño como:

  • Desviación máxima de la banda de paso respecto a 1 (ondulación de banda de paso) de 0,02.

  • Desviación máxima de la banda de parada respecto a 0 (ondulación de banda de parada) de 0,008.

Para abordar este problema de diseño con fircls1 utilice los siguientes comandos:

n = 61;
wo = 0.3;
dp = 0.02;	
ds = 0.008;
h = fircls1(n,wo,dp,ds);
fvtool(h,1)

Tenga en cuenta que el eje y que se muestra a continuación está en magnitud al cuadrado. Puede establecerlo haciendo clic con el botón secundario en la etiqueta del eje y seleccionando Magnitude Squared en el menú.

Diseño de filtros CLS multibanda

fircls utiliza la misma técnica para diseñar filtros FIR con una respuesta de magnitud constante a trozos especificada. En este caso, se puede especificar un vector de bordes de banda y un vector correspondiente de amplitudes de banda. Además, puede especificar la cantidad máxima de ondulación para cada banda.

Por ejemplo, suponga que las especificaciones de un filtro exigen:

  • De 0 a 0,3 (normalizado): amplitud 0, límite superior 0,005, límite inferior –0,005

  • De 0,3 a 0,5: amplitud 0,5, límite superior 0,51, límite inferior 0,49

  • De 0,5 a 0,7: amplitud 0, límite superior 0,03, límite inferior –0,03

  • De 0,7 a 0,9: amplitud 1, límite superior 1,02, límite inferior 0,98

  • De 0,9 a 1: amplitud 0, límite superior 0,05, límite inferior –0,05

Diseñe un filtro CLS con respuesta al impulso de orden 129 que cumpla estas especificaciones:

n = 129;
f = [0 0.3 0.5 0.7 0.9 1];
a = [0 0.5 0 1 0];
up = [0.005 0.51 0.03 1.02 0.05];
lo = [-0.005 0.49 -0.03 0.98 -0.05];
h = fircls(n,f,a,up,lo);
fvtool(h,1)

Tenga en cuenta que el eje y que se muestra a continuación está en magnitud al cuadrado. Puede establecerlo haciendo clic con el botón secundario en la etiqueta del eje y seleccionando Magnitude Squared en el menú.

Diseño de filtros CLS ponderados

El diseño de filtros CLS ponderados permite diseñar filtros FIR paso bajo o paso alto con una ponderación relativa de la minimización de errores en cada banda. La función fircls1 permite especificar los bordes de la banda de paso y de la banda de parada para la función de ponderación de mínimos cuadrados, así como una constante k que especifica la relación entre la ponderación de la banda de parada y la banda de paso.

Por ejemplo, considere las especificaciones que exigen un filtro FIR con un orden de respuesta al impulso de 55 y una frecuencia de corte de 0,3 (normalizada). Suponga también una ondulación de banda de paso máxima admisible de 0,02 y una ondulación de banda de parada máxima admisible de 0,004. Además, añada requisitos de ponderación:

  • Borde de la banda de paso para la función de ponderación de 0,28 (normalizada)

  • Borde de la banda de parada para la función de ponderación de 0,32

  • Minimización del error de ponderación 10 veces más en la banda de parada que en la banda de paso

Para abordar esto mediante fircls1, escriba

n = 55;
wo = 0.3;
dp = 0.02;
ds = 0.004;
wp = 0.28;
ws = 0.32;
k = 10;
h = fircls1(n,wo,dp,ds,wp,ws,k);
fvtool(h,1)

Tenga en cuenta que el eje y que se muestra a continuación está en magnitud al cuadrado. Puede establecerlo haciendo clic con el botón secundario en la etiqueta del eje y seleccionando Magnitude Squared en el menú.

Diseño de filtros de respuesta arbitraria

La función de diseño de filtros cfirpm proporciona una herramienta para diseñar filtros FIR con respuestas complejas arbitrarias. Se diferencia de las demás funciones de diseño de filtros en la forma de especificar la respuesta en frecuencia del filtro: acepta el nombre de una función que devuelve la respuesta del filtro calculada sobre una cuadrícula de frecuencias. Esta característica convierte cfirpm en una técnica muy versátil y potente para el diseño de filtros.

Esta técnica de diseño puede utilizarse para producir filtros FIR de fase no lineal, filtros de respuesta en frecuencia asimétrica (con coeficientes complejos) o filtros más simétricos con respuestas en frecuencia personalizadas.

El algoritmo de diseño optimiza el error de Chebyshev (o minimax) mediante un algoritmo de intercambio ampliado de Remez para una estimación inicial. Si este método de intercambio no consigue obtener el filtro óptimo, el algoritmo cambia a un algoritmo de ascenso-descenso que toma el relevo para terminar de converger hacia la solución óptima.

Diseño de filtros multibanda

Considere un filtro multibanda con las siguientes características especiales en el dominio de frecuencia.

Banda

Amplitud

Ponderación de optimización

[–1 –0.5]

[5 1]

1

[–0.4 +0.3]

[2 2]

10

[+0.4 +0.8]

[2 1]

5

Se puede diseñar un filtro multibanda de fase lineal mediante la función de respuesta en frecuencia predefinida multiband, de la siguiente manera:

b = cfirpm(38, [-1 -0.5 -0.4 0.3 0.4 0.8], ...
               {'multiband', [5 1 2 2 2 1]}, [1 10 5]);

Para el caso concreto de un filtro multibanda, podemos utilizar una notación abreviada de diseño de filtros similar a la sintaxis de firpm:

b = cfirpm(38,[-1 -0.5 -0.4 0.3 0.4 0.8], ...
              [5 1 2 2 2 1], [1 10 5]);

Al igual que con firpm, se pasa a cfirpm un vector de bordes de banda. Este vector define las bandas de frecuencia sobre las que se realiza la optimización; observe que hay dos bandas de transición, de –0,5 a –0,4 y de 0,3 a 0,4.

En cualquier caso, se obtiene la respuesta en frecuencia y se representa mediante la escala lineal en FVTool:

fvtool(b,1)

Tenga en cuenta que el intervalo de datos que se muestra a continuación es (-pi,pi).

La respuesta de este filtro multibanda es compleja, lo que es de esperar debido a la asimetría en el dominio de frecuencia. A continuación, se muestra la respuesta al impulso, que puede seleccionar en la barra de herramientas de FVTool.

Diseño de filtros con retardo reducido

Considere el diseño de un filtro paso bajo de 62 taps con un corte de medio Nyquist. Si especificamos un valor de desplazamiento negativo a la función de diseño de filtro lowpass, el desplazamiento del retardo de grupo para el diseño es considerablemente menor que el obtenido para un diseño estándar de fase lineal. Este diseño de filtro puede calcularse de la siguiente manera:

b = cfirpm(61,[0 0.5 0.55 1],{'lowpass',-16});

La respuesta de magnitud resultante es

fvtool(b,1)

El eje y está en magnitud al cuadrado, que se puede establecer haciendo clic con el botón secundario en la etiqueta del eje y seleccionando Magnitude Squared en el menú.

El retardo de grupo del filtro revela que el desplazamiento se ha reducido de N/2 a N/2-16 (es decir, de 30.5 a 14.5). Ahora, sin embargo, el retardo de grupo ya no es plano en la región de la banda de paso. Para crear esta gráfica, haga clic en el botón Group Delay Response de la barra de herramientas.

Si comparamos este filtro de fase no lineal con un filtro de fase lineal que tiene exactamente 14,5 muestras de retardo de grupo, el filtro resultante es de orden 2*14,5, es decir, 29. Al utilizar b = cfirpm(29,[0 0.5 0.55 1],'lowpass'), la ondulación de la banda de paso y de la banda de parada es mucho mayor para el filtro de orden 29. Estas comparaciones pueden ayudarle a decidir qué filtro es más apropiado para una aplicación en particular.