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.

firpmord

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

Descripción

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

ejemplo

[___] = firpmord(___,fs) especifica una frecuencia de muestreo fs. fs se predetermina a 2 Hz, lo que implica una frecuencia Nyquist de 1 Hz. Se pueden especificar los bordes de banda escalados a la tasa de muestreo de una aplicación concreta. Puede utilizarlo con cualquiera de las sintaxis de entrada anteriores.

ejemplo

c = firpmord(___,'cell') devuelve un arreglo de celdas c cuyos elementos son los parámetros de firpm.

Ejemplos

contraer todo

Diseñe un filtro 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. Requiera 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 in dB 
rs = 40;          % Stopband ripple in dB
fs = 2000;        % Sampling frequency
f = [500 600];    % Cutoff frequencies
a = [1 0];        % Desired amplitudes

Convierta las desviaciones a 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')

Figure contains 2 axes objects. Axes object 1 with title Phase, xlabel Frequency (Hz), ylabel Phase (degrees) contains an object of type line. Axes object 2 with title Lowpass Filter Designed to Specifications, xlabel Frequency (Hz), ylabel Magnitude (dB) contains an object of type line.

El filtro no llega a cumplir las especificaciones de atenuación de la banda de parada y de ondulación de la banda de paso. Usando n+1 en lugar de n en la llamada a firpm se obtienen las características de amplitud buscadas.

Diseñe un filtro paso bajo 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. Requiera una amplitud máxima de la banda de parada de 0,1 y un error máximo de la banda de paso (ondulación) 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 haciendo que firpmord genere un arreglo de celdas. Visualice la respuesta en frecuencia del filtro.

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

Figure contains 2 axes objects. Axes object 1 with title Phase, xlabel Frequency (Hz), ylabel Phase (degrees) contains an object of type line. Axes object 2 with title Magnitude, xlabel Frequency (Hz), ylabel Magnitude (dB) contains an object of type line.

Argumentos de entrada

contraer todo

Bordes de la banda de frecuencia, especificados como vector de valor real. El argumento debe estar en el intervalo [0, Fs/2], donde Fs es la frecuencia de Nyquist. El número de elementos del vector es siempre un múltiplo de 2. Las frecuencias deben estar en orden creciente.

Amplitudes deseadas en los puntos contenidos en f, especificadas como vector. f y a deben cumplir la condición length(f) = 2length(a)–2. La función deseada es constante a trozos.

Desviación máxima admisible, devuelta como un vector. dev tiene el mismo tamaño que a. Especifica la desviación u ondulación máxima admisible entre la respuesta en frecuencia y la amplitud deseada del filtro de salida para cada banda.

Tasa de muestreo, especificada como un escalar real.

Argumentos de salida

contraer todo

Orden del filtro, devuelto como entero positivo.

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 de Nyquist. El número de elementos del vector es siempre un múltiplo de 2. Las frecuencias deben estar en orden creciente.

Respuesta de amplitud, devuelta como un vector de valor real.

Ponderaciones utilizadas para regular el ajuste en cada banda de frecuencias, especificadas como un vector de valor real. La longitud de w es la mitad de la longitud de f y a, por lo que hay exactamente una ponderación por banda.

Parámetros del filtro FIR, devueltos como un arreglo de celdas.

Algoritmos

firpmord utiliza el algoritmo sugerido en [1]. Esta función produce resultados inexactos para los bordes de banda cercanos a 0 o a la frecuencia de Nyquist, fs/2.

Nota

En algunos casos, firpmord subestima o sobrestima el orden n. Si el filtro no cumple las especificaciones, pruebe con uno de orden superior como n+1 o n+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

Historial de versiones

Introducido antes de R2006a

Consulte también

| | | | |