Contenido principal

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

besself

Diseño de filtros analógicos de Bessel

Descripción

[b,a] = besself(n,Wo) devuelve los coeficientes de la función de transferencia de un filtro analógico de Bessel de paso bajo de orden n, donde Wo es la frecuencia angular hasta la cual el retardo de grupo del filtro es aproximadamente constante. Los valores más grandes de n producen un retardo de grupo que se aproxima mejor a una constante hasta Wo. La función besself no admite el diseño de filtros digitales de Bessel.

ejemplo

[z,p,k] = besself(___) diseña un filtro analógico de Bessel de paso bajo y devuelve sus ceros, polos y ganancia.

ejemplo

[A,B,C,D] = besself(___) diseña un filtro analógico de Bessel y devuelve las matrices que especifican su representación del espacio de estados.

Ejemplos

contraer todo

Diseñe un filtro analógico de Bessel de paso bajo de quinto orden con un retardo de grupo casi constante hasta 104 rad/segundo. Represente las respuestas de magnitud y fase del filtro con freqs.

wc = 10000;
[b,a] = besself(5,wc);
freqs(b,a)

Figure contains 2 axes objects. Axes object 1 with xlabel Frequency (rad/s), ylabel Phase (degrees) contains an object of type line. Axes object 2 with xlabel Frequency (rad/s), ylabel Magnitude contains an object of type line.

Calcule la respuesta de retardo de grupo del filtro como el negativo de la derivada de la respuesta de fase no envuelta. Represente el retardo de grupo para verificar que sea casi constante hasta la frecuencia de corte.

[h,w] = freqs(b,a);
grpdel = -diff(unwrap(angle(h)))./diff(w);

clf
loglog(w(2:end),grpdel)
xlabel("Frequency (rad/s)")
ylabel("Group delay (s)")
xline(wc)
grid on

Figure contains an axes object. The axes object with xlabel Frequency (rad/s), ylabel Group delay (s) contains 2 objects of type line, constantline.

Diseñe un filtro IIR digital de cuarto orden con un retardo de grupo casi constante a partir de su filtro analógico equivalente.

Diseñe un filtro analógico de Bessel de paso bajo de cuarto orden con una frecuencia de corte de 300 Hz.

[b,a] = besself(4,2*pi*300);

Utilice el método de invariancia de impulso para convertir un filtro analógico en uno digital. La tasa de muestreo es 1000 Hz.

Fs = 10000;
[bd,ad] = impinvar(b,a,Fs);

Calcule la respuesta en frecuencia y el retardo de grupo de los filtros de Bessel analógicos y digitales. Especifique 2048 puntos de frecuencia distribuidos geométricamente entre 1 Hz y 1 kHz. Represente las respuestas del retardo de grupo. Ambos diseños producen el mismo resultado.

f = logspace(1,3,2048);

HfAnalog = freqs(b,a,2*pi*f);
HfDigital = freqz(bd,ad,2*pi*f/Fs);
gdAnalog = -diff(unwrap(angle(HfAnalog)))./diff(2*pi*f);
gdDigital = -diff(unwrap(angle(HfDigital)))./diff(2*pi*f);

semilogx(f(2:end),gdAnalog,"-",f(2:end),gdDigital,"--")
xlabel("Frequency (Hz)")
ylabel("Group delay (sec)")
legend(["Analog","  Digital"])
grid on

Figure contains an axes object. The axes object with xlabel Frequency (Hz), ylabel Group delay (sec) contains 2 objects of type line. These objects represent Analog, Digital.

Diseñe un filtro analógico Butterworth paso bajo de quinto 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;
wc = 2*pi*2e9;
w = 2*pi*1e9*logspace(-2,1,4096)';

[zb,pb,kb] = butter(n,wc,"s");
[bb,ab] = zp2tf(zb,pb,kb);
[hb,wb] = freqs(bb,ab,w);
gdb = -diff(unwrap(angle(hb)))./diff(wb);

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

[z1,p1,k1] = cheby1(n,3,wc,"s");
[b1,a1] = zp2tf(z1,p1,k1);
[h1,w1] = freqs(b1,a1,w);
gd1 = -diff(unwrap(angle(h1)))./diff(w1);

Diseñe un filtro Chebyshev tipo II de quinto 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,wc,"s");
[b2,a2] = zp2tf(z2,p2,k2);
[h2,w2] = freqs(b2,a2,w);
gd2 = -diff(unwrap(angle(h2)))./diff(w2);

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

[ze,pe,ke] = ellip(n,3,30,wc,"s");
[be,ae] = zp2tf(ze,pe,ke);
[he,we] = freqs(be,ae,w);
gde = -diff(unwrap(angle(he)))./diff(we);

Diseñe un filtro de Bessel de quinto orden con la misma frecuencia de borde. Calcule su respuesta en frecuencia.

[zf,pf,kf] = besself(n,wc);
[bf,af] = zp2tf(zf,pf,kf);
[hf,wf] = freqs(bf,af,w);
gdf = -diff(unwrap(angle(hf)))./diff(wf);

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

fGHz = [wb w1 w2 we wf]/(2e9*pi);
plot(fGHz,mag2db(abs([hb h1 h2 he hf])))
axis([0 5 -45 5])
grid on
xlabel("Frequency (GHz)")
ylabel("Attenuation (dB)")
legend(["butter" "cheby1" "cheby2" "ellip" "besself"])

Figure contains an axes object. The axes object with xlabel Frequency (GHz), ylabel Attenuation (dB) contains 5 objects of type line. These objects represent butter, cheby1, cheby2, ellip, besself.

Represente el retardo de grupo en las muestras. Exprese la frecuencia en gigahercios y el retardo de grupo en nanosegundos. Compare los filtros.

gdns = [gdb gd1 gd2 gde gdf]*1e9;
gdns(gdns<0) = NaN;
loglog(fGHz(2:end,:),gdns)
grid on
xlabel("Frequency (GHz)")
ylabel("Group delay (ns)")
legend(["butter" "cheby1" "cheby2" "ellip" "besself"])

Figure contains an axes object. The axes object with xlabel Frequency (GHz), ylabel Group delay (ns) contains 5 objects of type line. These objects represent butter, cheby1, cheby2, ellip, besself.

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. El filtro de Bessel tiene un retardo de grupo aproximadamente constante a lo largo de la banda de paso.

Argumentos de entrada

contraer todo

Orden del filtro, especificado como un escalar entero inferior o igual a 25. 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 escalar positivo. Una frecuencia de corte es un límite superior o inferior del rango de frecuencias en el que el retardo de grupo del filtro es casi constante. Exprese la frecuencia de corte en radianes por segundo.

Tipos de datos: double

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. La función de transferencia se expresa en términos de b y a como

H(s)=b1sr1+b2sr2++bra1sr1+a2sr2++ar

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. La función de transferencia se expresa en términos de z, p y k como

H(s)=k(sz1)(sz2)(szr)(sp1)(sp2)(spr)

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.

Las matrices del espacio de estados 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

Algoritmos

besself diseña filtros de Bessel analógicos, que se caracterizan por un retardo de grupo casi constante en toda la banda de paso, lo que preserva la forma de onda de las señales filtradas en la banda de paso.

Los filtros de Bessel de paso bajo tienen una respuesta de magnitud monótona decreciente, al igual que los filtros de Butterworth de paso bajo. En comparación con los filtros Butterworth, Chebyshev y elípticos, el filtro de Bessel tiene el rolloff más lento y requiere el orden más alto para cumplir una especificación de atenuación.

En los filtros de orden alto, el formato de espacio de estados es el más preciso numéricamente, seguido por el formato cero-polo-ganancia. El formato del coeficiente de la función de transferencia es el menos preciso; pueden surgir problemas numéricos en órdenes de filtro tan bajos como 15.

besself utiliza un algoritmo de cuatro pasos:

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

  2. Convierte los polos, los ceros y la ganancia en un formato de espacio de estados.

  3. Usa la función lp2lp para convertir el prototipo de filtro de paso bajo de tiempo continuo y espacio de estados en un filtro de paso bajo con la frecuencia de corte especificada.

  4. Convierte el filtro de espacio de estados de nuevo en una función de transferencia o en un formato cero-polo-ganancia, según sea necesario.

Referencias

[1] Parks, Thomas W., and C. Sidney Burrus. Digital Filter Design. New York: John Wiley & Sons, 1987.

Historial de versiones

Introducido antes de R2006a

Consulte también

| | | |