Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

firpm

Parks-McClellan diseño de filtro FIR óptimo

Descripción

ejemplo

b = firpm(n,f,a) Devuelve el vector de fila que contiene los coeficientes de un orden-filtro FIR.bn+1n Las características de frecuencia y amplitud del filtro resultante coinciden con las dadas por vectores y.fa

ejemplo

b = firpm(n,f,a,w) utiliza para pesar las bandejas de frecuencias.w

b = firpm(n,f,a,ftype) utiliza un tipo de filtro especificado por.'ftype'

b = firpm(n,f,a,lgrid) utiliza el entero para controlar la densidad de la rejilla de frecuencias.lgrid

[b,err] = firpm(___) Devuelve la altura de ondulación máxima en.err Puede utilizarlo con cualquiera de las sintaxis de entrada anteriores.

[b,err,res] = firpm(___) Devuelve las características de respuesta de frecuencia como una estructura.res

b = firpm(n,f,fresp,w) Devuelve un filtro FIR cuyas características de amplitud de frecuencia se aproximan mejor a la respuesta devuelta por el identificador de función.fresp

b = firpm(n,f,fresp,w,ftype) diseña filtros antisimétricos (impares), donde especifica el filtro como un diferenciador o transformador Hilbert.ftype Si no especifica un, se realiza una llamada para determinar la propiedad de simetría predeterminada.ftypefresp

Ejemplos

contraer todo

Utilice el algoritmo Parks-McClellan para diseñar un filtro de paso de banda FIR de la orden 17. Especifique frecuencias de banda de detención normalizadas de

<math display="block">
<mrow>
<mn>0</mn>
<mo>.</mo>
<mn>3</mn>
<mi>π</mi>
</mrow>
</math>
Y
<math display="block">
<mrow>
<mn>0</mn>
<mo>.</mo>
<mn>7</mn>
<mi>π</mi>
</mrow>
</math>
RAD/sample y frecuencias de banda de paso normalizadas de
<math display="block">
<mrow>
<mn>0</mn>
<mo>.</mo>
<mn>4</mn>
<mi>π</mi>
</mrow>
</math>
Y
<math display="block">
<mrow>
<mn>0</mn>
<mo>.</mo>
<mn>6</mn>
<mi>π</mi>
</mrow>
</math>
RAD/sample. Graficar las respuestas de magnitud ideal y real.

f = [0 0.3 0.4 0.6 0.7 1]; a = [0 0 1 1 0 0]; b = firpm(17,f,a);  [h,w] = freqz(b,1,512); plot(f,a,w/pi,abs(h)) legend('Ideal','firpm Design') xlabel 'Radian Frequency (\omega/\pi)', ylabel 'Magnitude'

Diseñe un filtro de paso bajo con una frecuencia de corte de banda de paso de 1500 Hz y una frecuencia de corte de banda de detención de 2000 Hz. Especifique una frecuencia de muestreo de 8000 Hz. Requieren una amplitud máxima de banda de parada de 0,01 y un error de banda de paso máximo (ondulación) de 0,001. Obtenga el orden de filtro necesario, los bordes de banda de frecuencia normalizados, las amplitudes de banda de frecuencias y los pesos.firpmord

[n,fo,ao,w] = firpmord([1500 2000],[1 0],[0.001 0.01],8000); b = firpm(n,fo,ao,w); fvtool(b,1)

Utilice el algoritmo Parks-McClellan para crear un filtro de paso de banda FIR equiripple de orden 50 que se utilizará con señales muestreadas a 1 kHz.

N = 50; Fs = 1e3;

Especifique que la banda de paso abarque las frecuencias entre 200 Hz y 300 Hz y que la región de transición a cada lado de la banda de paso tiene una anchura de 50 Hz.

Fstop1 = 150; Fpass1 = 200; Fpass2 = 300; Fstop2 = 350;

Diseñe el filtro para que el ajuste de optimización pese la banda de baja frecuencia con un peso de 3, la banda de paso con un peso de 1 y la banda de suspensión de alta frecuencia con un peso de 100. Muestra la respuesta de magnitud del filtro.

Wstop1 = 3; Wpass = 1; Wstop2 = 100;  b = firpm(N,[0 Fstop1 Fpass1 Fpass2 Fstop2 Fs/2]/(Fs/2), ...     [0 0 1 1 0 0],[Wstop1 Wpass Wstop2]);  fvtool(b,1)

Diseñe un filtro de paso bajo con una frecuencia de corte de banda de paso de 1500 Hz y una frecuencia de corte de banda de detención de 2000 Hz. Especifique una frecuencia de muestreo de 8000 Hz. Requieren una amplitud máxima de banda de parada de 0,01 y un error de banda de paso máximo (ondulación) de 0,001. Obtenga el orden de filtro necesario, los bordes de banda de frecuencia normalizados, las amplitudes de banda de frecuencias y los pesos.firpmord

[n,fo,ao,w] = firpmord([1500 2000],[1 0],[0.001 0.01],8000); b = firpm(n,fo,ao,w); fvtool(b,1)

Argumentos de entrada

contraer todo

Orden de filtro, especificado como un escalar positivo real.

Puntos de frecuencia normalizados, especificados como un vector de valor real. El argumento debe estar en el rango [0, 1], donde 1 corresponde a la frecuencia Nyquist. El número de elementos en el vector siempre es un múltiplo de 2. Las frecuencias deben estar en orden ascendente.

Amplitudes deseadas en los puntos especificados en, especificadas como un vector. y debe tener la misma longitud.ffa La longitud debe ser un número incluso.

  • La amplitud deseada en las frecuencias entre pares de puntos ((), (+ 1)) para impar es el segmento de línea que conecta los puntos ((), ()) y ((+ 1), (+ 1)).fkfkkfkakfkak

  • La amplitud deseada en las frecuencias entre pares de puntos ((), (+ 1)) para par no está especificada.fkfkk Las áreas entre estos puntos son regiones o regiones de transición que no son importantes para una aplicación en particular.

Pesos utilizados para ajustar el ajuste en cada banda de frecuencias, especificado como un vector de valor real. La longitud de es la mitad de la longitud de y, por lo que hay exactamente un peso por banda.wfa

Tipo de filtro, especificado como cualquiera o:'hilbert''differentiator'

  • — Para filtros de fase lineal con simetría impar (tipo III y tipo IV)'hilbert'

    Los coeficientes de salida obedecen a la relación () = – (+ 2 –), = 1,..., + 1.bbkbnkkn Esta clase de filtros incluye el transformador Hilbert, que tiene una amplitud deseada de 1 en toda la banda.

    Por ejemplo,

    h = firpm(30,[0.1 0.9],[1 1],'hilbert'); 

    diseña un transformador FIR Hilbert aproximado de longitud 31.

  • — Para los filtros tipo III y IV, utilizando una técnica de ponderación especial'differentiator'

    Para las bandas de amplitud distinto de cero, el filtro pondera el error por un factor de 1/de modo que el error en las frecuencias bajas sea mucho menor que en las frecuencias altas.f Para los diferenciadores FIR, que tienen una característica de amplitud proporcional a la frecuencia, estos filtros minimizan el error relativo máximo (el máximo de la relación del error a la amplitud deseada).

Controlar la densidad de la rejilla de frecuencias, que tiene puntos de frecuencia más o menos, donde es la fracción del intervalo de banda de frecuencia total [0,1] cubierto por.(lgrid*n)/(2*bw)bwf Aumentar a menudo resulta en filtros que coinciden más exactamente con un filtro de equiripple, pero que tardan más en computar.lgrid El valor predeterminado de es el valor mínimo que se debe especificar para.16lgrid

Respuesta de frecuencia, especificada como un identificador de función. La función se llama desde dentro con esta sintaxis:firpm

[dh,dw] = fresp(n,f,gf,w) 

Los argumentos son similares a los de:firpm

  • es el orden de filtro.n

  • es el vector de los bordes de banda de frecuencia normalizados que aparecen monótona entre 0 y 1, donde 1 es la frecuencia Nyquist.f

  • es un vector de puntos de rejilla que se han interpolado linealmente sobre cada banda de frecuencias especificada. determina la cuadrícula de frecuencia en la que se debe evaluar la función de respuesta y contiene los mismos datos devueltos en el campo de la estructura.gffirpmgfcfirpmfgridopt

  • es un vector de pesos positivos reales, uno por banda, utilizado durante la optimización. es opcional en la llamada a; Si no se especifica, se establece en ponderación de unidad antes de pasar a.wwfirpmfresp

  • y son la respuesta de frecuencia compleja deseada y los vectores de peso de banda, respectivamente, evaluados en cada frecuencia en la rejilla.dhdwgf

Argumentos de salida

contraer todo

Coeficientes de filtro, devueltos como un vector de fila de longitud + 1.n Los coeficientes están en orden creciente.

Altura de ondulación máxima, devuelta como un escalar.

Características de respuesta de frecuencia, devueltas como una estructura. La estructura tiene los siguientes campos:res

res.fgrid

Vector de la rejilla de frecuencias utilizado para la optimización del diseño del filtro

res.des

Respuesta de frecuencia deseada para cada punto enres.fgrid

res.wt

Ponderación para cada punto enopt.fgrid

res.H

Respuesta de frecuencia real para cada punto enres.fgrid

res.error

Error en cada punto de ()res.fgridres.des-res.H

res.iextr

Vector de índices en frecuencias extremasres.fgrid

res.fextr

Vector de frecuencias extremas

Sugerencias

Si el diseño del filtro no se convergen, es posible que el diseño del filtro no sea correcto. Verifique el diseño comprobando la respuesta de frecuencia.

Si el diseño del filtro no se convergen y el diseño del filtro resultante no es correcto, intente uno o más de los siguientes elementos:

  • Aumente el orden de filtro.

  • Relaje el diseño del filtro reduciendo la atenuación en las bandas de suspensión y/o ampliando las regiones de transición.

Algoritmos

diseña un filtro FIR de fase lineal utilizando el algoritmo Parks-McClellan.firpm[1] El algoritmo Parks-McClellan utiliza el algoritmo de intercambio de Remez y la teoría de aproximación de Chebyshev para diseñar filtros con un ajuste óptimo entre las respuestas de frecuencia deseadas y reales. Los filtros son óptimos en el sentido de que se minimiza el error máximo entre la respuesta de frecuencia deseada y la respuesta de frecuencia real. Los filtros diseñados de esta manera exhiben un comportamiento de equiripple en sus respuestas de frecuencia y a veces se denominan filtros de equiripple. exhibe discontinuidades en la cabeza y la cola de su respuesta de impulso debido a esta naturaleza equiripple.firpm

La relación entre los vectores y la definición de una respuesta de frecuencia deseada se muestra en la ilustración siguiente.fa

siempre utiliza un orden de filtro incluso para configuraciones con simetría incluso y una banda de paso distinta de cero en la frecuencia Nyquist.firpm La razón de la orden de filtro par es que para las respuestas de impulso que exhiben incluso la simetría y las órdenes impares, la respuesta de frecuencia en la frecuencia Nyquist es necesariamente 0. Si especifica un valor impar, lo incrementa en 1.nfirpm

diseña filtros de fase lineal de tipo I, II, III y IV.firpm Tipo I y tipo II son los valores predeterminados para par e impar, respectivamente, mientras que el tipo III (par) y el tipo IV (impar) se especifican con o, respectivamente, utilizando el argumento..nnnn'hilbert''differentiator'ftype Los diferentes tipos de filtros tienen diferentes simetrías y ciertas restricciones en sus respuestas de frecuencia. (Ver para más detalles.)[5]

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

Tipo I

Incluso

Incluso:

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

Ninguna restricción

Ninguna restricción

Tipo II

Extraño

Incluso:

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

Ninguna restricción

(1) 0H = 

incrementa el orden de filtro en 1 Si intenta construir un filtro de tipo II con una banda de paso distinta de cero en la frecuencia Nyquist.firpm

Tipo III

Incluso

Extraño:

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

(0) 0H = 

(1) 0H = 

Tipo IVExtraño

Extraño:

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

(0) 0H = 

Ninguna restricción

También puede utilizar para escribir una función que define la respuesta de frecuencia deseada.firpm El mango de función de respuesta de frecuencia predefinido para es, que diseña un filtro FIR de fase lineal.firpm@firpmfrf

Nota

equivale a, donde, es el identificador de función de respuesta de frecuencia predefinido para. b = firpm(n,f,a,w)b = firpm(n,f,{@firpmfrf,a},w)@firpmfrffirpm Si lo desea, puede escribir su propia función de respuesta. Use y vea para obtener más información.helpprivate/firpmfrfCrear identificador de función (MATLAB)

Referencias

[1] Digital Signal Processing Committee of the IEEE Acoustics, Speech, and Signal Processing Society, eds. Programs for Digital Signal Processing. New York: IEEE Press, 1979, algorithm 5.1.

[2] Digital Signal Processing Committee of the IEEE Acoustics, Speech, and Signal Processing Society, eds. Selected Papers in Digital Signal Processing. Vol. II. New York: IEEE Press, 1976.

[3] Parks, Thomas W., and C. Sidney Burrus. Digital Filter Design. New York: John Wiley & Sons, 1987, p. 83.

[4] Rabiner, Lawrence R., James H. McClellan, and Thomas W. Parks. “FIR Digital Filter Design Techniques Using Weighted Chebyshev Approximation.” Proceedings of the IEEE®. Vol. 63, Number 4, 1975, pp. 595–610.

[5] Oppenheim, Alan V., Ronald W. Schafer, and John R. Buck. Discrete-Time Signal Processing. Upper Saddle River, NJ: Prentice Hall, 1999, p. 486.

Capacidades ampliadas

Introducido antes de R2006a