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.

fir2

El diseño de filtro FIR basado en muestreo de frecuencia

Descripción

ejemplo

b = fir2(n,f,m) Devuelve un filtro FIR de orden TH con características de magnitud de frecuencia especificadas en los vectores y.nfm La función interpolar linealmente la respuesta de frecuencia deseada en una rejilla densa y, a continuación, utiliza la transformada inversa de Fourier y una ventana Hamming para obtener los coeficientes de filtro.

ejemplo

b = fir2(n,f,m,npt,lap) especifica, el número de puntos en la cuadrícula de interpolación y, la longitud de la región que inserta alrededor de puntos de frecuencia duplicados que especifican los pasos en la respuesta de frecuencia.nptlapfir2

ejemplo

b = fir2(___,window) especifica un vector de ventana para utilizar en el diseño además de los argumentos de entrada de sintaxis anteriores.

Se utiliza para configuraciones estándar basadas en ventanas de paso bajo, paso de banda, paso alto, parada de banda y multibanda.Note:fir1

Ejemplos

contraer todo

Cargue el archivo MAT.chirp El archivo contiene una señal, muestreada con una frecuenciay . tiene la mayor parte de su poder por encimay , o la mitad de la frecuencia Nyquist. Añadir ruido aleatorio a la señal.

load chirp y = y + 0.25*(rand(size(y))-0.5); 

Diseñe un filtro de paso alto FIR de 34th orden para atenuar los componentes de la señal a continuación . Especifique una frecuencia de corte de 0,48. Visualice la respuesta de frecuencia del filtro.

f = [0 0.48 0.48 1]; mhi = [0 0 1 1]; bhi = fir2(34,f,mhi);  freqz(bhi,1) 

Filtra la señal de Chirp. Trace la señal antes y después del filtrado.

outhi = filter(bhi,1,y); t = (0:length(y)-1)/Fs;  subplot(2,1,1) plot(t,y) title('Original Signal') ylim([-1.2 1.2])  subplot(2,1,2) plot(t,outhi) title('Higpass Filtered Signal') xlabel('Time (s)') ylim([-1.2 1.2]) 

Cambie el filtro de paso alto a lowpass. Use el mismo orden y corte. Vuelva a filtrar la señal. El resultado es principalmente ruido.

mlo = [1 1 0 0]; blo = fir2(34,f,mlo); outlo = filter(blo,1,y);  subplot(2,1,1) plot(t,y) title('Original Signal') ylim([-1.2 1.2])  subplot(2,1,2) plot(t,outlo) title('Lowpass Filtered Signal') xlabel('Time (s)') ylim([-1.2 1.2]) 

Diseñe un filtro de paso bajo de orden 30 con una frecuencia de corte normalizada de

<math display="block">
<mrow>
<mn>0</mn>
<mo>.</mo>
<mn>6</mn>
<mi>π</mi>
</mrow>
</math>
RAD/sample. Trace la respuesta de frecuencia ideal superpuesta con la respuesta de frecuencia real.

f = [0 0.6 0.6 1]; m = [1 1 0 0];  b1 = fir2(30,f,m); [h1,w] = freqz(b1,1);  plot(f,m,w/pi,abs(h1)) xlabel('\omega / \pi') lgs = {'Ideal','fir2 default'}; legend(lgs)

Rediseñe el filtro utilizando una cuadrícula de interpolación de 64 puntos.

b2 = fir2(30,f,m,64); h2 = freqz(b2,1);  hold on plot(w/pi,abs(h2)) lgs{3} = 'npt = 64'; legend(lgs)

Rediseñe el filtro utilizando la cuadrícula de interpolación de 64 puntos y un intervalo de 13 puntos alrededor de la frecuencia de corte.

b3 = fir2(30,f,m,64,13); h3 = freqz(b3,1);  plot(w/pi,abs(h3)) lgs{4} = 'lap = 13'; legend(lgs)

Diseñe un filtro FIR con la siguiente respuesta de frecuencia:

  • Una sinusoide entre 0 y

    <math display="block">
    <mrow>
    <mn>0</mn>
    <mo>.</mo>
    <mn>1</mn>
    <mn>8</mn>
    <mi>π</mi>
    </mrow>
    </math>
    RAD/sample.

F1 = 0:0.01:0.18; A1 = 0.5+sin(2*pi*7.5*F1)/4;
  • Una sección lineal por tramos entre

    <math display="block">
    <mrow>
    <mn>0</mn>
    <mo>.</mo>
    <mn>2</mn>
    <mi>π</mi>
    </mrow>
    </math>
    RAD/sample y
    <math display="block">
    <mrow>
    <mn>0</mn>
    <mo>.</mo>
    <mn>7</mn>
    <mn>8</mn>
    <mi>π</mi>
    </mrow>
    </math>
    RAD/sample.

F2 = [0.2 0.38 0.4 0.55 0.562 0.585 0.6 0.78]; A2 = [0.5 2.3 1 1 -0.2 -0.2 1 1];
  • Una sección cuadrática entre

    <math display="block">
    <mrow>
    <mn>0</mn>
    <mo>.</mo>
    <mn>7</mn>
    <mn>9</mn>
    <mi>π</mi>
    </mrow>
    </math>
    RAD/sample y la frecuencia Nyquist.

F3 = 0.79:0.01:1; A3 = 0.2+18*(1-F3).^2;

Diseñe el filtro utilizando una ventana de Hamming. Especifique un orden de filtro de 50.

N = 50;  FreqVect = [F1 F2 F3]; AmplVect = [A1 A2 A3];  ham = fir2(N,FreqVect,AmplVect);

Repita el cálculo utilizando una ventana de Kaiser que tenga un parámetro de forma de 3.

kai = fir2(N,FreqVect,AmplVect,kaiser(N+1,3));

Rediseñe el filtro utilizando la función. utiliza una ventana rectangular de forma predeterminada.designfiltdesignfilt Calcule la respuesta de fase cero del filtro sobre 1024 puntos.

d = designfilt('arbmagfir','FilterOrder',N, ...     'Frequencies',FreqVect,'Amplitudes',AmplVect);  [zd,wd] = zerophase(d,1024);

Visualice las respuestas de fase cero de los tres filtros. Superponer la respuesta ideal.

zerophase(ham,1) hold on zerophase(kai,1) plot(wd/pi,zd) plot(FreqVect,AmplVect,'k:') legend('Hamming','Kaiser','designfilt','ideal')

Argumentos de entrada

contraer todo

Orden de filtro, especificado como un escalar entero.

Para las configuraciones con una banda de paso en la frecuencia Nyquist, siempre utiliza un orden incluso.fir2 Si especifica un valor impar para una de esas configuraciones, se incrementa en 1.nfir2n

Tipos de datos: double

Características de magnitud de frecuencia, especificadas como vectores de la misma longitud.

  • es un vector de puntos de frecuencia en el rango de 0 a 1, donde 1 corresponde a la frecuencia Nyquist.f El primer punto de debe ser 0 y el último punto debe ser 1. deben ordenarse en orden ascendente.ff Los puntos de frecuencia duplicados están permitidos y se tratan como pasos en la respuesta de frecuencia.

  • es un vector que contiene la respuesta de magnitud deseada en cada uno de los puntos especificados en.mf

Tipos de datos: double

Número de puntos de rejilla, especificado como un escalar entero positivo. debe ser mayor que la mitad del orden de filtro: >/2.nptnptn

Tipos de datos: double

Longitud de la región alrededor de los puntos de frecuencia duplicados, especificado como un escalar entero positivo.

Tipos de datos: double

Window, especificado como un vector de columna. El vector de ventana debe tener + 1 elementos.n Si no se especifica, se utiliza una ventana de Hamming.windowfir2 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 orden impar con una banda de paso en la frecuencia Nyquist.fir2window

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

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 muestreo de frecuencia para diseñar filtros.fir2 La función interpolar la respuesta de frecuencia deseada linealmente en una rejilla de longitud densa y espaciada uniformemente. también establece regiones de puntos alrededor de los valores repetidos de para proporcionar transiciones pronunciadas pero suaves.nptfir2lapf Para obtener los coeficientes de filtro, la función aplica una transformada rápida de Fourier inversa a la rejilla y se multiplica por.window

Referencias

[1] Mitra, Sanjit K. Digital Signal Processing: A Computer Based Approach. New York: McGraw-Hill, 1998.

[2] Jackson, L. B. Digital Filters and Signal Processing. 3rd Ed. Boston: Kluwer Academic Publishers, 1996.

Capacidades ampliadas

Consulte también

| | | | | | | | | |

Introducido antes de R2006a