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.

fir1

Diseño de filtro FIR basado en ventanas

Descripción

ejemplo

b = fir1(n,Wn) utiliza una ventana Hamming para diseñar un filtro FIR de paso bajo, paso de banda o multibanda con fase lineal.n El tipo de filtro depende del número de elementos de .Wn

ejemplo

b = fir1(n,Wn,ftype) diseña un filtro lowpass, highpass, bandpass, bandstop o multibanda, dependiendo del valor y el número de elementos de .ftypeWn

ejemplo

b = fir1(___,window) diseña el filtro utilizando el vector especificado en y cualquiera de los argumentos de las sintaxis anteriores.window

b = fir1(___,scaleopt) además especifica si la respuesta de magnitud del filtro está normalizada o no.

Se utiliza para filtros con ventanas con respuesta de frecuencia arbitraria.Nota:fir2

Ejemplos

contraer todo

Diseñar un filtro de paso de banda FIR de orden 48 con banda de paso

<math display="block">
<mrow>
<mn>0</mn>
<mo>.</mo>
<mn>3</mn>
<mn>5</mn>
<mi>π</mi>
<mo></mo>
<mi>ω</mi>
<mo></mo>
<mn>0</mn>
<mo>.</mo>
<mn>6</mn>
<mn>5</mn>
<mi>π</mi>
</mrow>
</math>
rad/muestra. Visualice sus respuestas de magnitud y fase.

b = fir1(48,[0.35 0.65]); freqz(b,1,512)

Carga.chirp.mat El archivo contiene una señal, , que tiene la mayor parte de su potencia por encima, o la mitad de la frecuencia Nyquist.yFs/4 La frecuencia de muestreo es 8192 Hz.

Diseñe un filtro FIR highpass de orden 34 para atenuar los componentes de la señal a continuación.Fs/4 Utilice una frecuencia de corte de 0,48 y una ventana de Chebyshev con 30 dB de ondulación.

load chirp  t = (0:length(y)-1)/Fs;  bhi = fir1(34,0.48,'high',chebwin(35,30)); freqz(bhi,1) 

Filtra la señal. Muestre las señales originales y filtradas por paso alto. Utilice la misma escala de eje para ambos trazados.y

outhi = filter(bhi,1,y);  subplot(2,1,1) plot(t,y) title('Original Signal') ys = ylim;  subplot(2,1,2) plot(t,outhi) title('Highpass Filtered Signal') xlabel('Time (s)') ylim(ys) 

Diseñe un filtro lowpass con las mismas especificaciones. Filtrar la señal y comparar el resultado con el original. Utilice la misma escala de eje para ambos trazados.y

blo = fir1(34,0.48,chebwin(35,30));  outlo = filter(blo,1,y);  subplot(2,1,1) plot(t,y) title('Original Signal') ys = ylim;  subplot(2,1,2) plot(t,outlo) title('Lowpass Filtered Signal') xlabel('Time (s)') ylim(ys) 

Diseñe un filtro FIR de 46o orden que atenúe las frecuencias normalizadas

<math display="block">
<mrow>
<mn>0</mn>
<mo>.</mo>
<mn>4</mn>
<mi>π</mi>
</mrow>
</math>
rad/muestra y entre
<math display="block">
<mrow>
<mn>0</mn>
<mo>.</mo>
<mn>6</mn>
<mi>π</mi>
</mrow>
</math>
Y
<math display="block">
<mrow>
<mn>0</mn>
<mo>.</mo>
<mn>9</mn>
<mi>π</mi>
</mrow>
</math>
rad/muestra. Llámalo .bM

ord = 46;  low = 0.4; bnd = [0.6 0.9];  bM = fir1(ord,[low bnd]);

Rediseñar para que pase las bandas que estaba atenuando y detenga las otras frecuencias.bM Llame al nuevo filtro .bW Se utiliza para mostrar las respuestas de frecuencia de los filtros.fvtool

bW = fir1(ord,[low bnd],'DC-1');  hfvt = fvtool(bM,1,bW,1); legend(hfvt,'bM','bW')

Rediseñar usando una ventana Hann.bM (El es opcional.)'DC-0' Compare las respuestas de magnitud de los diseños de Hamming y Hann.

hM = fir1(ord,[low bnd],'DC-0',hann(ord+1));  hfvt = fvtool(bM,1,hM,1); legend(hfvt,'Hamming','Hann')

Rediseñar con una ventana de Tukey.bW Compare las respuestas de magnitud de los diseños de Hamming y Tukey.

tW = fir1(ord,[low bnd],'DC-1',tukeywin(ord+1));  hfvt = fvtool(bW,1,tW,1); legend(hfvt,'Hamming','Tukey')

Argumentos de entrada

contraer todo

Orden de filtro, especificado como un escalar entero.

Para configuraciones highpass y bandstop, siempre utiliza un orden de filtro uniforme.fir1 El orden debe ser incluso porque los filtros FIR simétricos de orden impar deben tener ganancia cero en la frecuencia Nyquist. Si especifica una odd para un filtro highpass o bandstop, entonces aumenta en 1.nfir1n

Tipos de datos: double

Restricciones de frecuencia, especificadas como un escalar, un vector de dos elementos o un vector de varios elementos. Todos los elementos de deben ser estrictamente mayores que 0 y estrictamente menores que 1, donde 1 corresponde a la frecuencia Nyquist:Wn 0 < <1.Wn La frecuencia Nyquist es la mitad de la frecuencia de muestreo o rad/muestra.π

  • Si es un escalar, entonces diseña un filtro de paso bajo o paso alto con frecuencia de corte.Wnfir1Wn La frecuencia de corte es la frecuencia a la que la ganancia normalizada del filtro es de –6 dB.

  • Si es el vector de dos elementos, donde < , entonces diseña un filtro de paso de banda o bandstop con menor frecuencia de corte y mayor frecuencia de corte.Wn[w1 w2]w1w2fir1w1w2

  • Si es el vector multielemento, donde < < ... < , devuelve un filtro multibanda de tres ódos con las bandas 0 < , < , ..., <1.Wn[w1 w2 ... wn]w1w2wnfir1nωw1w1ωw2wnω

Tipos de datos: double

Tipo de filtro, especificado como uno de los siguientes:

  • especifica un filtro de paso bajo con frecuencia de corte. es el valor predeterminado para escalar .'low'Wn'low'Wn

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

  • especifica un filtro de paso de banda si es un vector de dos elementos. es el valor predeterminado cuando tiene dos elementos.'bandpass'Wn'bandpass'Wn

  • especifica un filtro de bandstop si es un vector de dos elementos.'stop'Wn

  • especifica que la primera banda de un filtro multibanda es una banda de parada. es el valor predeterminado cuando tiene más de dos elementos.'DC-0''DC-0'Wn

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

Ventana, especificada como vector. El vector de ventana debe tener + 1 elementos.n Si no especifica , utilice una ventana Hamming.windowfir1 Para obtener una lista de las ventanas disponibles, consulte .Windows

no aumenta automáticamente la longitud de si intenta diseñar un filtro de paso alto o bandstop de orden impar.fir1window

Ejemplo: especifica una ventana Kaiser con el parámetro de forma 0.5 para utilizar con un filtro de orden.kaiser(n+1,0.5)n

Ejemplo: equivale a dejar la ventana sin especificar.hamming(n+1)

Tipos de datos: double

Opción de normalización, especificada como .'scale''noscale'

  • normaliza los coeficientes de modo que la respuesta de magnitud del filtro en el centro de la banda de paso sea 1 (0 dB).'scale'

  • no normaliza los coeficientes.'noscale'

Argumentos de salida

contraer todo

Coeficientes de filtro, devueltos como un vector de fila de longitud + 1.n Los coeficientes se ordenan en potencias descendentes de la variable de transformación Z:z

( ) + + ... +Bzb(1)b(2)zb(n+1)Z–n.

Algoritmos

utiliza una aproximación de mínimos cuadrados para calcular los coeficientes de filtro y luego suaviza la respuesta de impulso con .fir1window

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.2.

Capacidades ampliadas

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

Consulte también

| | | | | | | | | |

Introducido antes de R2006a