Main Content

La traducción de esta página está obsoleta. Haga clic aquí para ver la última versión en inglés.

butter

Diseño de filtros Butterworth

Descripción

ejemplo

[b,a] = butter(n,Wn) devuelve los coeficientes de la función de transferencia de un filtro digital Butterworth de paso bajo de orden n con frecuencia de corte normalizada Wn.

ejemplo

[b,a] = butter(n,Wn,ftype) diseña un filtro Butterworth de paso bajo, paso alto, paso banda, o eliminador de banda, dependiendo del valor de ftype y del número de elementos de Wn. Los diseños de paso banda y de eliminador de banda resultantes son de orden 2n.

Nota: Consulte Limitaciones para obtener información sobre las cuestiones numéricas que afectan a la formación de la función de transferencia.

ejemplo

[z,p,k] = butter(___) diseña un filtro digital Butterworth de paso bajo, paso alto, paso banda, o eliminador de banda y devuelve sus ceros, polos y ganancia. Esta sintaxis puede incluir cualquiera de los argumentos de entrada de las sintaxis anteriores.

ejemplo

[A,B,C,D] = butter(___) diseña un filtro digital Butterworth de paso bajo, paso alto, paso banda, o eliminador de banda y devuelve las matrices que especifican su representación en el espacio de estados.

ejemplo

[___] = butter(___,'s') diseña un filtro analógico Butterworth de paso bajo, paso alto, paso banda o eliminador de banda con frecuencia angular de corte Wn.

Ejemplos

contraer todo

Diseñe un filtro Butterworth paso bajo de 6.º orden con una frecuencia de corte de 300 Hz, que para datos muestreados a 1000 Hz, corresponde a 0.6π rad/muestra. Represente sus respuestas de magnitud y fase. Utilícelo para filtrar una señal aleatoria de 1000 muestras.

fc = 300;
fs = 1000;

[b,a] = butter(6,fc/(fs/2));
freqz(b,a)

Figure contains 2 axes. Axes 1 contains an object of type line. Axes 2 contains an object of type line.

dataIn = randn(1000,1);
dataOut = filter(b,a,dataIn);

Diseñe un filtro Butterworth eliminador de banda de 6.º orden con frecuencias de borde normalizadas de 0.2π y 0.6π rad/muestra. Represente sus respuestas de magnitud y fase. Utilícelo para filtrar datos aleatorios.

[b,a] = butter(3,[0.2 0.6],'stop');
freqz(b,a)

Figure contains 2 axes. Axes 1 contains an object of type line. Axes 2 contains an object of type line.

dataIn = randn(1000,1);
dataOut = filter(b,a,dataIn);

Diseñe un filtro Butterworth paso alto de 9.º orden. Especifique una frecuencia de corte de 300 Hz, que para datos muestreados a 1000 Hz, corresponde a 0.6π rad/muestra. Represente las respuestas de magnitud y fase. Convierta los ceros, los polos y la ganancia en secciones de segundo orden para utilizarlos en fvtool.

[z,p,k] = butter(9,300/500,'high');
sos = zp2sos(z,p,k);
fvtool(sos,'Analysis','freq')

Figure Filter Visualization Tool - Magnitude Response (dB) and Phase Response contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (dB) and Phase Response contains an object of type line.

Diseñe un filtro Butterworth paso banda de 20.º orden con una frecuencia de corte inferior de 500 Hz y una frecuencia de corte superior de 560 Hz. Especifique una tasa de muestreo de 1500 Hz. Utilice la representación del espacio de estados. Diseñe un filtro idéntico utilizando designfilt.

[A,B,C,D] = butter(10,[500 560]/750);
d = designfilt('bandpassiir','FilterOrder',20, ...
    'HalfPowerFrequency1',500,'HalfPowerFrequency2',560, ...
    'SampleRate',1500);

Convierta la representación del espacio de estados en secciones de segundo orden. Visualice las respuestas en frecuencia utilizando fvtool.

sos = ss2sos(A,B,C,D);
fvt = fvtool(sos,d,'Fs',1500);
legend(fvt,'butter','designfilt')

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (dB) contains 2 objects of type line. These objects represent butter, designfilt.

Diseñe un filtro analógico Butterworth paso bajo de 5.º orden con una frecuencia de corte de 2 GHz. Multiplique por 2π para convertir la frecuencia en radianes por segundo. Calcule la respuesta en frecuencia del filtro en 4096 puntos.

n = 5;
f = 2e9;

[zb,pb,kb] = butter(n,2*pi*f,'s');
[bb,ab] = zp2tf(zb,pb,kb);
[hb,wb] = freqs(bb,ab,4096);

Diseñe un filtro Chebyshev Tipo I de 5.º orden con la misma frecuencia de borde y 3 dB de ondulación de banda de paso. Calcule su respuesta en frecuencia.

[z1,p1,k1] = cheby1(n,3,2*pi*f,'s');
[b1,a1] = zp2tf(z1,p1,k1);
[h1,w1] = freqs(b1,a1,4096);

Diseñe un filtro Chebyshev Tipo II de 5.º orden con la misma frecuencia de borde y 30 dB de atenuación de la banda de parada. Calcule su respuesta en frecuencia.

[z2,p2,k2] = cheby2(n,30,2*pi*f,'s');
[b2,a2] = zp2tf(z2,p2,k2);
[h2,w2] = freqs(b2,a2,4096);

Diseñe un filtro elíptico de 5.º orden con la misma frecuencia de borde, 3 dB de ondulación de banda de paso y 30 dB de atenuación de banda de parada. Calcule su respuesta en frecuencia.

[ze,pe,ke] = ellip(n,3,30,2*pi*f,'s');
[be,ae] = zp2tf(ze,pe,ke);
[he,we] = freqs(be,ae,4096);

Represente la atenuación en decibelios. Exprese la frecuencia en gigahercios. Compare los filtros.

plot(wb/(2e9*pi),mag2db(abs(hb)))
hold on
plot(w1/(2e9*pi),mag2db(abs(h1)))
plot(w2/(2e9*pi),mag2db(abs(h2)))
plot(we/(2e9*pi),mag2db(abs(he)))
axis([0 4 -40 5])
grid
xlabel('Frequency (GHz)')
ylabel('Attenuation (dB)')
legend('butter','cheby1','cheby2','ellip')

Figure contains an axes. The axes contains 4 objects of type line. These objects represent butter, cheby1, cheby2, ellip.

Los filtros Butterworth y Chebyshev Tipo II tienen bandas de paso planas y bandas de transición anchas. Los filtros Chebyshev de Tipo I y elíptico se desinflan más rápido pero tienen ondulaciones en la banda de paso. La entrada de frecuencia a la función de diseño Chebyshev Tipo II establece el comienzo de la banda de parada en lugar del final de la banda de paso.

Argumentos de entrada

contraer todo

Orden del filtro, especificado como un escalar entero. En los diseños de paso banda y eliminador de banda, n representa la mitad del orden del filtro.

Tipos de datos: double

Frecuencia de corte, especificada como un escalar o un vector de dos elementos. La frecuencia de corte es la frecuencia a la que la respuesta de magnitud del filtro es 1 / √2.

  • Si Wn es escalar, butter diseña un filtro paso bajo o paso alto con una frecuencia de corte Wn.

    Si Wn es el vector de dos elementos [w1 w2], donde w1 < w2, entonces butter diseña un filtro paso banda o eliminador de banda con una frecuencia de corte inferior a w1 y una frecuencia de corte superior a w2.

  • Para los filtros digitales, las frecuencias de corte deben estar entre 0 y 1, donde 1 corresponde a la tasa de Nyquist, la mitad de la tasa de muestreo o π rad/muestra.

    Para los filtros analógicos, las frecuencias de corte deben expresarse en radianes por segundo y pueden tomar cualquier valor positivo.

Tipos de datos: double

Tipo de filtro, especificado como uno de los siguientes:

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

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

  • 'bandpass' especifica un filtro paso banda de orden 2n si Wn es un vector de dos elementos. 'bandpass' es el valor por defecto cuando Wn tiene dos elementos.

  • 'stop' especifica un filtro eliminador de banda de orden 2n si Wn es un vector de dos elementos.

Argumentos de salida

contraer todo

Coeficientes de la función de transferencia del filtro, devueltos como vectores fila de longitud n + 1 para los filtros paso bajo y paso alto y 2n + 1 para los filtros paso banda y eliminador de banda.

  • Para los filtros digitales, la función de transferencia se expresa en términos de b y a como

    H(z)=B(z)A(z)=b(1)+b(2)z1++b(n+1)zna(1)+a(2)z1++a(n+1)zn.

  • Para los filtros analógicos, la función de transferencia se expresa en términos de b y a como

    H(s)=B(s)A(s)=b(1)sn+b(2)sn1++b(n+1)a(1)sn+a(2)sn1++a(n+1).

Tipos de datos: double

Ceros, polos y ganancia del filtro, devueltos como dos vectores columna de longitud n (2n en los diseños de paso banda y eliminador de banda) y un escalar.

  • Para los filtros digitales, la función de transferencia se expresa en términos de z, p y k como

    H(z)=k(1z(1)z1)(1z(2)z1)(1z(n)z1)(1p(1)z1)(1p(2)z1)(1p(n)z1).

  • Para los filtros analógicos, la función de transferencia se expresa en términos de z, p y k como

    H(s)=k(sz(1))(sz(2))(sz(n))(sp(1))(sp(2))(sp(n)).

Tipos de datos: double

Representación de espacios de estados del filtro, devuelta como matrices. Si m = n para los diseños de paso bajo y paso alto, y m = 2n para los filtros paso banda y eliminador de banda, entonces A es m × m, B es m × 1, C es 1 × m y D es 1 × 1.

  • Para los filtros digitales, las matrices del espacio de estado relacionan el vector de estado x, la entrada u y la salida y a través de

    x(k+1)=Ax(k)+Bu(k)y(k)=Cx(k)+Du(k).

  • Para los filtros analógicos, las matrices del espacio de estado relacionan el vector de estado x, la entrada u y la salida y a través de

    x˙=Ax+Buy=Cx+Du.

Tipos de datos: double

Más acerca de

contraer todo

Limitaciones

Inestabilidad numérica de la sintaxis de la función de transferencia

En general, utilice la sintaxis [z,p,k] para diseñar filtros IIR. Para analizar o implementar su filtro, puede entonces utilizar la salida [z,p,k] con zp2sos. Si diseña el filtro utilizando la sintaxis [b,a] puede encontrar problemas numéricos. Estos problemas se deben a errores de redondeo y pueden ocurrir para n tan bajos como 4. El siguiente ejemplo ilustra esta limitación.

n = 6;
Wn = [2.5e6 29e6]/500e6;
ftype = 'bandpass';

% Transfer Function design
[b,a] = butter(n,Wn,ftype);      % This is an unstable filter

% Zero-Pole-Gain design
[z,p,k] = butter(n,Wn,ftype);
sos = zp2sos(z,p,k);

% Display and compare results
hfvt = fvtool(b,a,sos,'FrequencyScale','log');
legend(hfvt,'TF Design','ZPK Design')

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (dB) contains 2 objects of type line. These objects represent TF Design, ZPK Design.

Algoritmos

Los filtros Butterworth tienen una respuesta en magnitud que es lo más plana posible en la banda de paso y monótona en general. Esta suavidad tiene como contrapartida la disminución de la inclinación del descenso. Los filtros elípticos y de Chebyshev suelen ofrecer un descenso más pronunciado para un orden de filtro determinado.

butter utiliza un algoritmo de cinco pasos:

  1. Encuentra los polos, ceros y ganancia del prototipo analógico de paso bajo utilizando la función buttap.

  2. Convierte los polos, los ceros y la ganancia en forma de espacio de estado.

  3. Si es necesario, utiliza una transformación del espacio de estados para convertir el filtro paso bajo en un filtro paso banda, paso alto o eliminador de banda con las restricciones de frecuencia deseadas.

  4. Para el diseño de filtros digitales, utiliza bilinear para convertir el filtro analógico en un filtro digital a través de una transformación bilineal con preconfiguración de frecuencia. Un cuidadoso ajuste de la frecuencia permite que los filtros analógicos y los digitales tengan la misma magnitud de respuesta en frecuencia en Wn o en w1 y w2.

  5. Convierte el filtro de espacio de estado de nuevo en su función de transferencia o en la forma de ganancia de polo cero, según sea necesario.

Capacidades ampliadas

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

Introducido antes de R2006a