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

Diseño óptimo del filtro FIR de Parks-McClellan

Descripción

ejemplo

b = firpm(n,f,a) devuelve el vector de fila que contiene los coeficientes de un filtro de orden 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) para pesar los cubos de frecuencia.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 cuadrícula de frecuencias.lgrid

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

[b,err,res] = firpm(___) devuelve las características de respuesta de frecuencia como 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 (extraños), 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 orden 17. Especifique las frecuencias de banda de parada 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/muestra 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/muestra. Trazar las respuestas de magnitud ideales y reales.

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 lowpass con una frecuencia de corte de banda de paso de 1500 Hz y una frecuencia de corte de banda de parada de 2000 Hz. Especifique una frecuencia de muestreo de 8000 Hz. Requiere una amplitud máxima de la banda de detención de 0.01 y un error máximo de banda de paso (ripple) de 0.001. Obtenga el orden de filtro requerido, los bordes normalizados de la banda de frecuencia, las amplitudes de la banda de frecuencia y los pesos utilizando .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 50o orden que se utilizará con señales muestreadas a 1 kHz.

N = 50; Fs = 1e3;

Especifique que la banda de paso abarca 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 pondere la banda de parada de baja frecuencia con un peso de 3, la banda de paso con un peso de 1 y la banda de parada 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 lowpass con una frecuencia de corte de banda de paso de 1500 Hz y una frecuencia de corte de banda de parada de 2000 Hz. Especifique una frecuencia de muestreo de 8000 Hz. Requiere una amplitud máxima de la banda de detención de 0.01 y un error máximo de banda de paso (ripple) de 0.001. Obtenga el orden de filtro requerido, los bordes normalizados de la banda de frecuencia, las amplitudes de la banda de frecuencia y los pesos utilizando .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 intervalo [0, 1] , donde 1 corresponde a la frecuencia Nyquist. El número de elementos en el vector es siempre un múltiplo de 2. Las frecuencias deben estar en orden creciente.

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

  • La amplitud deseada a 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 frecuencias entre pares de puntos ( ( ), ( +1)) para par no está especificada.fkfkk Las áreas entre estos puntos son regiones de transición o regiones que no son importantes para una aplicación determinada.

Pesos utilizados para ajustar el ajuste en cada banda de frecuencia, 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:'hilbert''differentiator'

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

    Los coeficientes de salida en obedecer 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 filtros de tipo III y tipo IV, utilizando una técnica de ponderación especial'differentiator'

    Para las bandas de amplitud distintas de cero, el filtro pondera el error por un factor de 1/ de modo que el error a bajas frecuencias es mucho menor que en 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 cuadrícula de frecuencias, que tiene puntos de frecuencia aproximadamente, donde está la fracción del intervalo de banda de frecuencia total [0,1] cubierto por .(lgrid*n)/(2*bw)bwf Aumentar a menudo da como resultado filtros que coinciden más exactamente con un filtro equiripple, pero que tardan más en calcularse.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 del filtro.n

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

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

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

  • y son la respuesta de frecuencia compleja deseada y los vectores de peso de banda, respectivamente, evaluados en cada frecuencia en la cuadrícula.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 máxima de ondulación, devuelta como escalar.

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

res.fgrid

Vector de cuadrícula de frecuencia utilizado para la optimización del diseño del filtro

res.des

Respuesta de frecuencia deseada para cada puntores.fgrid

res.wt

Ponderación para cada punto enopt.fgrid

res.H

Respuesta de frecuencia real para cada puntores.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 puede converger, 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 converge y el diseño del filtro resultante no es correcto, intente una o varias de las siguientes opciones:

  • Aumente el orden del filtro.

  • Relaje el diseño del filtro reduciendo la atenuación en las bandas de parada 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 Remez y la teoría de aproximación 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 equiripple en sus respuestas de frecuencia y a veces se llaman filtros equisisivas. exhibe discontinuidades en la cabeza y la cola de su respuesta de impulso debido a esta naturaleza equisiosifial.firpm

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

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

diseños de filtros de fase lineal 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. (Consulte para obtener 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

Sin restricciones

Sin restricciones

Tipo II

Extraño

Incluso:

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

Sin restricciones

(1) 0H = 

incrementa el orden del filtro en 1 si intenta construir un filtro de tipo II con una banda de paso distinto 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 = 

Sin restricciones

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

Nota

es equivalente 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. Usar y ver para obtener más información.helpprivate/firpmfrfCreate Function Handle (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