Main Content

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.

firpmord

Estimación óptima de orden de filtro FIR de Parks-McClellan

Sintaxis

[n,fo,ao,w] = firpmord(f,a,dev)
[n,fo,ao,w] = firpmord(f,a,dev,fs)
c = firpmord(f,a,dev,fs,'cell')

Descripción

[n,fo,ao,w] = firpmord(f,a,dev) encuentra el orden aproximado, los bordes normalizados de la banda de frecuencia, las amplitudes de la banda de frecuencia y los pesos que cumplen con las especificaciones de entrada, y .fadev

  • es un vector de bordes de banda de frecuencia (entre 0 yfFs/2, dondeFs es la frecuencia de muestreo), y es un vector que especifica la amplitud deseada en las bandas definidas por .af La longitud de dos menos del doble de la longitud de .fa La función deseada es constante por pieza.

  • es un vector del mismo tamaño que eso especifica la desviación máxima permitida o ondas entre la respuesta de frecuencia y la amplitud deseada del filtro de salida para cada banda.deva

Utilícelo con el orden resultante, el vector de frecuencia, el vector de respuesta de amplitud y los pesos para diseñar el filtro que cumple aproximadamente las especificaciones dadas por los parámetros de entrada, y .firpmnfoaowbfirpmordfadev

b = firpm(n,fo,ao,w) 

[n,fo,ao,w] = firpmord(f,a,dev,fs) especifica una frecuencia de muestreo . valores predeterminados a 2 Hz, lo que implica una frecuencia Nyquist de 1 Hz.fsfs Por lo tanto, puede especificar aristas de banda escaladas a la frecuencia de muestreo de una aplicación determinada.

c = firpmord(f,a,dev,fs,'cell') genera una matriz de celdas cuyos elementos son los parámetros de .firpm

Nota

En algunos casos, subestima o sobreestima la orden.firpmordn Si el filtro no cumple con las especificaciones, pruebe un orden superior como o .n+1n+2

Ejemplos

contraer todo

Diseñe un filtro de paso bajo de orden mínimo con una frecuencia de corte de banda de paso de 500 Hz y una frecuencia de corte de banda de parada de 600 Hz. Especifique una frecuencia de muestreo de 2000 Hz. Requerir al menos 40 dB de atenuación en la banda de parada y menos de 3 dB de ondulación en la banda de paso.

rp = 3;           % Passband ripple rs = 40;          % Stopband ripple fs = 2000;        % Sampling frequency f = [500 600];    % Cutoff frequencies a = [1 0];        % Desired amplitudes

Convierta las desviaciones en unidades lineales. Diseñe el filtro y visualice sus respuestas de magnitud y fase.

dev = [(10^(rp/20)-1)/(10^(rp/20)+1)  10^(-rs/20)];  [n,fo,ao,w] = firpmord(f,a,dev,fs); b = firpm(n,fo,ao,w); freqz(b,1,1024,fs) title('Lowpass Filter Designed to Specifications')

Tenga en cuenta que el filtro se queda ligeramente corto de cumplir con las especificaciones de atenuación de banda de parada y ondulación de banda de paso. El uso en la llamada a en lugar de logra las características de amplitud deseadas.n+1firpmn

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,1 y un error máximo de banda de paso (ripple) de 0,01.

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

Obtenga un resultado equivalente al tener que generar una matriz de celdas.firpmord Visualice la respuesta de frecuencia del filtro.

c = firpmord([1500 2000],[1 0],[0.01 0.1],8000,'cell'); B = firpm(c{:}); freqz(B,1,1024,8000)

Algoritmos

utiliza el algoritmo sugerido en .firpmord[1] Este método es inexacto para los bordes de la banda cerca de 0 o la frecuencia Nyquist, .fs/2

Referencias

[1] Rabiner, Lawrence R., and Otto Herrmann. “The Predictability of Certain Optimum Finite-Impulse-Response Digital Filters.” IEEE® Transactions on Circuit Theory. Vol.  20, Number 4, 1973, pp. 401–408.

[2] Rabiner, Lawrence R., and Bernard Gold. Theory and Application of Digital Signal Processing. Englewood Cliffs, NJ: Prentice-Hall, 1975, pp. 156–157.

Capacidades ampliadas

Consulte también

| | | | |

Introducido antes de R2006a