Main Content

kaiserord

Parámetros de estimación del diseño de filtros FIR con ventana de Kaiser

Descripción

[n,Wn,beta,ftype] = kaiserord(f,a,dev) devuelve un orden de filtro n, bordes de banda de frecuencia normalizados Wn y un factor de forma beta que especifican una ventana de Kaiser para su uso con la función fir1. Para diseñar un filtro FIR b que cumpla aproximadamente las especificaciones dadas por f, a y dev, utilice b = fir1(n,Wn,kaiser(n+1,beta),ftype,'noscale').

ejemplo

[n,Wn,beta,ftype] = kaiserord(f,a,dev,fs) utiliza una tasa de muestreo fs en Hz.

ejemplo

c = kaiserord(f,a,dev,fs,'cell') devuelve un arreglo de celdas cuyos elementos son los parámetros de fir1.

Ejemplos

contraer todo

Diseñe un filtro paso bajo con banda de paso definida de 0 a 1 kHz y banda de parada definida de 1500 Hz a 4 kHz. Especifique una ondulación de la banda de paso del 5% y una atenuación de la banda de parada de 40 dB.

fsamp = 8000;
fcuts = [1000 1500];
mags = [1 0];
devs = [0.05 0.01];

[n,Wn,beta,ftype] = kaiserord(fcuts,mags,devs,fsamp);
hh = fir1(n,Wn,ftype,kaiser(n+1,beta),'noscale');

freqz(hh,1,1024,fsamp)

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.

Diseñe un filtro paso banda de longitud impar. Tenga en cuenta que una longitud impar significa un orden par, por lo que la entrada en fir1 debe ser un número entero par.

fsamp = 8000;
fcuts = [1000 1300 2210 2410];
mags = [0 1 0];
devs = [0.01 0.05 0.01];

[n,Wn,beta,ftype] = kaiserord(fcuts,mags,devs,fsamp);
n = n + rem(n,2);
hh = fir1(n,Wn,ftype,kaiser(n+1,beta),'noscale');

[H,f] = freqz(hh,1,1024,fsamp);
plot(f,abs(H))
grid

Figure contains an axes object. The axes object contains an object of type line.

Diseñe un filtro paso bajo con un corte de la banda de paso de 1500 Hz, un corte de la banda de parada de 2000 Hz, una ondulación de la banda de paso de 0,01, una ondulación de la banda de parada de 0,1 y una tasa de muestreo de 8000 Hz. Diseñe un filtro equivalente con la opción 'cell'.

fs = 8000;
[n,Wn,beta,ftype] = kaiserord([1500 2000],[1 0],...
    [0.01 0.1],fs);
b = fir1(n,Wn,ftype,kaiser(n+1,beta),'noscale');

c = kaiserord([1500 2000],[1 0],[0.01 0.1],fs,'cell');
bcell = fir1(c{:});

hfvt = fvtool(b,1,bcell,1,'Fs',fs);
legend(hfvt,'b','bcell')

Figure Figure 1: Magnitude Response (dB) contains an axes object. The axes object with title Magnitude Response (dB), xlabel Frequency (kHz), ylabel Magnitude (dB) contains 2 objects of type line. These objects represent b, bcell.

Argumentos de entrada

contraer todo

Bordes de la banda, especificados como vector. La longitud de f es 2*length(a)-2.

Amplitud de la banda, especificada como vector. La amplitud se especifica en las bandas definidas por f. Conjuntamente, f y a definen una función de respuesta a trozos.

Desviación máxima admisible, especificada como vector. dev es un vector del mismo tamaño que a que especifica la desviación máxima admisible entre la respuesta en frecuencia del filtro de salida y su amplitud de banda, para cada banda. Las entradas de dev especifican la ondulación de la banda de paso y la atenuación de la banda de parada. Especifique cada entrada en dev como un número positivo que representa la ganancia absoluta del filtro (sin unidades).

Tasa de muestreo, especificada como escalar positivo medido en Hz. Si no se especifica el argumento fs, o si se especifica como un vector vacío [], la tasa de muestreo toma el valor predeterminado de 2 Hz y la frecuencia de Nyquist es de 1 Hz. Utilice esta sintaxis para especificar bordes de banda escalados a la tasa de muestreo de una aplicación particular. Los bordes de la banda de frecuencia en f deben ir de 0 a fs/2.

Argumentos de salida

contraer todo

Orden del filtro, devuelto como entero positivo.

Bordes de banda de frecuencia normalizados, devueltos como vector real.

Factor de forma, devuelto como escalar real positivo. El parámetro beta afecta a la atenuación de los lóbulos laterales de la transformada de Fourier de la ventana.

Tipo de filtro, destinado a su uso con fir1, devuelto como:

  • 'low': filtro paso bajo con frecuencia de corte Wn.

  • 'high': filtro paso alto con frecuencia de corte Wn.

  • 'bandpass': filtro paso banda si Wn es un vector de dos elementos.

  • 'stop': filtro eliminador de banda si Wn es un vector de dos elementos.

  • 'DC-0': la primera banda de un filtro multibanda es una banda de parada.

  • 'DC-1': la primera banda de un filtro multibanda es una banda de paso.

Parámetros de FIR, devueltos como arreglo de celdas.

Sugerencias

  • Tenga cuidado de distinguir entre los significados de la longitud del filtro y el orden del filtro. La longitud es el número de muestras de respuesta al impulso en el filtro FIR. Por lo general, la respuesta al impulso se indexa de n = 0 a n = L – 1, donde L es la longitud del filtro. El orden del filtro es la potencia más alta en una representación de la transformada Z del filtro. En el caso de una función de transferencia FIR, esta representación es un polinomio en z, donde la mayor potencia es zL–1 y la menor potencia es z0. El orden del filtro es uno menos que la longitud (L – 1) y también es igual al número de ceros del polinomio z.

  • Si en el vector dev se especifican desviaciones desiguales entre las bandas, se utiliza la desviación mínima especificada, ya que el método de la ventana de Kaiser está limitado a producir filtros con una desviación mínima en todas las bandas.

  • En algunos casos, kaiserord subestima o sobrestima el orden n. Si el filtro no cumple las especificaciones, pruebe con un orden superior como n+1, n+2 y así sucesivamente, o pruebe con un orden inferior.

  • Los resultados son inexactos si las frecuencias de corte están cerca de 0 o de la frecuencia de Nyquist, o bien si dev es grande (superior al 10%).

Algoritmos

A partir de un conjunto de especificaciones en el dominio de frecuencia, kaiserord estima el orden mínimo del filtro FIR que cumplirá aproximadamente las especificaciones. kaiserord convierte las especificaciones del filtro indicadas en ondulaciones de la banda de paso y de la banda de parada, y convierte las frecuencias de corte en la forma necesaria para el diseño de filtros FIR con ventanas.

kaiserord utiliza fórmulas derivadas empíricamente para estimar los órdenes de los filtros paso bajo, así como los diferenciadores y los transformadores de Hilbert. Las estimaciones para los filtros multibanda (como los filtros paso banda) se derivan de las fórmulas de diseño de paso bajo.

Las fórmulas de diseño en las que se basa la ventana de Kaiser y su aplicación al diseño de filtros FIR son

β={0.1102(α8.7),α>500.5842(α21)0.4+0.07886(α21),21α500,α<21

donde α = –20log10δ es la atenuación de la banda de parada expresada en decibelios y

n=α7.952.285(Δω)

donde n es el orden del filtro y Δω es la anchura de la región de transición más pequeña.

Referencias

[1] 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.

[2] Kaiser, James F. “Nonrecursive Digital Filter Design Using the I0-Sinh Window Function.” Proceedings of the 1974 IEEE International Symposium on Circuits and Systems. 1974, pp. 20–23.

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

Capacidades ampliadas

Generación de código C/C++
Genere código C y C++ mediante MATLAB® Coder™.

Historial de versiones

Introducido antes de R2006a

Consulte también

| |