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 de Hamming para diseñar un paso bajo de orden, paso de banda o filtro FIR 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 paso bajo, paso alto, paso de banda, Bandstop o filtro 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) especifica además si se normaliza o no la respuesta de magnitud del filtro.

Se usa para filtros con ventana con respuesta de frecuencia arbitraria.Note:fir2

Ejemplos

contraer todo

Diseñe un filtro de paso de banda FIR 48th-Order 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/sample. 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 poder arriba, o la mitad de la frecuencia Nyquist.yFs/4 La frecuencia de muestreo es de 8192 Hz.

Diseñe un filtro de paso alto FIR de 34th orden 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) 

Filtre la señal. Visualice las señales filtradas originales y de paso alto. Utilice la escala del mismo 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 de paso bajo con las mismas especificaciones. Filtre la señal y compare el resultado con el original. Utilice la escala del mismo 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 46th orden que atenúa las frecuencias normalizadas por debajo

<math display="block">
<mrow>
<mn>0</mn>
<mo>.</mo>
<mn>4</mn>
<mi>π</mi>
</mrow>
</math>
RAD/sample 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/sample. Llámalo.bM

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

Rediseño para que pase las bandas que estaba atenuando y detiene 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ño 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ño usando 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 de paso alto y de supresión, siempre utiliza un orden de filtro incluso.fir1 La orden debe ser incluso porque los filtros FIR simétricos de orden impar deben tener cero ganancia en la frecuencia Nyquist. Si especifica una impares para un filtro de paso alto o de supresión, se incrementa 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 debe ser estrictamente mayor que 0 y estrictamente menor que 1, donde 1 corresponde a la frecuencia Nyquist:Wn 0 < < 1.Wn La frecuencia Nyquist es la mitad de la tasa de muestreo o Rad/sample.π

  • Si es un escalar, 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 – 6 dB.

  • Si es el vector de dos elementos, donde <, entonces diseña un paso de banda o un filtro de banda con una frecuencia de corte más baja y una frecuencia de corte más alta.Wn[w1 w2]w1w2fir1w1w2

  • Si es el vector multi-elemento, donde < <... <, a continuación, devuelve un filtro multibanda TH-Order 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 supresión si es un vector de dos elementos.'stop'Wn

  • Especifica que la primera banda de un filtro multibanda es una banda de detención. 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'

Window, especificado como vector. El vector de ventana debe tener + 1 elementos.n Si no se especifica, se utiliza una ventana de Hamming.windowfir1 Para obtener una lista de las ventanas disponibles, consulte.Windows

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

Ejemplo: especifica una ventana de Kaiser con el parámetro de forma 0,5 para usar 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 cualquiera o.'scale''noscale'

  • Normaliza los coeficientes para 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, a continuación, suaviza la respuesta de impulso.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