Main Content

Respuesta de frecuencia

Dominio digital

utiliza un algoritmo basado en FFT para calcular la respuesta de frecuencia de transformación Z de un filtro digital.freqz Específicamente, la declaración

[h,w] = freqz(b,a,p) 

devuelve la respuesta de frecuencia compleja de punto,p H(ejω), del filtro digital.

H(ejω)=b(1)+b(2)ejω+...+b(n+1)ejωna(1)+a(2)ejω+...+a(m+1)ejωm

En su forma más simple, acepta los vectores de coeficiente de filtro y , y un entero que especifica el número de puntos en los que calcular la respuesta de frecuencia. devuelve la respuesta de frecuencia compleja en vector , y los puntos de frecuencia reales en vector en rad/s.freqzbapfreqzhw

puede aceptar otros parámetros, como una frecuencia de muestreo o un vector de puntos de frecuencia arbitrarios.freqz El ejemplo siguiente encuentra la respuesta de frecuencia de 256 puntos para un filtro Chebyshev Tipo I de 12o orden. La llamada especifica una frecuencia de muestreo de 1000 Hz:freqzfs

[b,a] = cheby1(12,0.5,200/500); [h,f] = freqz(b,a,256,1000); 

Dado que la lista de parámetros incluye una frecuencia de muestreo, devuelve un vector que contiene los 256 puntos de frecuencia entre 0 y se utiliza en el cálculo de la respuesta de frecuencia.freqzffs/2

Nota

Esta caja de herramientas utiliza la convención de que la frecuencia de la unidad es la frecuencia Nyquist, definida como la mitad de la frecuencia de muestreo. El parámetro de frecuencia de corte para todas las funciones básicas de diseño de filtro sin embargo por la frecuencia Nyquist. Para un sistema con una frecuencia de muestreo de 1000 Hz, por ejemplo, 300 Hz es 300/500 a 0,6. Para convertir la frecuencia normalizada a frecuencia angular alrededor del círculo de la unidad, multiplique por .π Para convertir la frecuencia normalizada a hercios, multiplique por la mitad de la frecuencia de la muestra.

Si llama sin argumentos de salida, traza tanto la magnitud como la frecuencia y la fase frente a la frecuencia.freqz Por ejemplo, un filtro de paso bajo Butterworth de noveno orden con una frecuencia de corte de 400 Hz, basado en una frecuencia de muestreo de 2000 Hz, es

[b,a] = butter(9,400/1000); 

Para calcular la respuesta de frecuencia compleja de 256 puntos para este filtro, y trazar la magnitud y la fase con ,freqz

freqz(b,a,256,2000) 

también puede aceptar un vector de puntos de frecuencia arbitrarios para su uso en el cálculo de la respuesta de frecuencia.freqz Por ejemplo,

w = linspace(0,pi); h = freqz(b,a,w); 

calcula la respuesta de frecuencia compleja en los puntos de frecuencia en para el filtro definido por vectores y .wba Los puntos de frecuencia pueden oscilar entre 0 y 2 .π Para especificar un vector de frecuencia que va desde cero hasta la frecuencia de muestreo, incluya tanto el vector de frecuencia como el valor de frecuencia de muestreo en la lista de parámetros.

Estos ejemplos muestran cómo calcular y mostrar respuestas de frecuencia digital.

Respuesta de frecuencia de la función de transferencia

Calcular y mostrar la respuesta de magnitud del filtro de paso bajo IIR de tercer orden descrito por la siguiente función de transferencia:

<math display="block">
<mrow>
<mi>H</mi>
<mo stretchy="false">(</mo>
<mi>z</mi>
<mo stretchy="false">)</mo>
<mo>=</mo>
<mfrac>
<mrow>
<mn>0</mn>
<mo>.</mo>
<mn>0</mn>
<mn>5</mn>
<mn>6</mn>
<mn>3</mn>
<mn>4</mn>
<mo stretchy="false">(</mo>
<mn>1</mn>
<mo>+</mo>
<msup>
<mrow>
<mi>z</mi>
</mrow>
<mrow>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msup>
<mo stretchy="false">)</mo>
<mo stretchy="false">(</mo>
<mn>1</mn>
<mo>-</mo>
<mn>1</mn>
<mo>.</mo>
<mn>0</mn>
<mn>1</mn>
<mn>6</mn>
<mn>6</mn>
<msup>
<mrow>
<mi>z</mi>
</mrow>
<mrow>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msup>
<mo>+</mo>
<msup>
<mrow>
<mi>z</mi>
</mrow>
<mrow>
<mo>-</mo>
<mn>2</mn>
</mrow>
</msup>
<mo stretchy="false">)</mo>
</mrow>
<mrow>
<mo stretchy="false">(</mo>
<mn>1</mn>
<mo>-</mo>
<mn>0</mn>
<mo>.</mo>
<mn>6</mn>
<mn>8</mn>
<mn>3</mn>
<msup>
<mrow>
<mi>z</mi>
</mrow>
<mrow>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msup>
<mo stretchy="false">)</mo>
<mo stretchy="false">(</mo>
<mn>1</mn>
<mo>-</mo>
<mn>1</mn>
<mo>.</mo>
<mn>4</mn>
<mn>4</mn>
<mn>6</mn>
<mn>1</mn>
<msup>
<mrow>
<mi>z</mi>
</mrow>
<mrow>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msup>
<mo>+</mo>
<mn>0</mn>
<mo>.</mo>
<mn>7</mn>
<mn>9</mn>
<mn>5</mn>
<mn>7</mn>
<msup>
<mrow>
<mi>z</mi>
</mrow>
<mrow>
<mo>-</mo>
<mn>2</mn>
</mrow>
</msup>
<mo stretchy="false">)</mo>
</mrow>
</mfrac>
<mo>.</mo>
</mrow>
</math>

Exprese el numerador y el denominador como convoluciones polinómicos. Encuentre la respuesta de frecuencia en 2001 puntos que abarcan el círculo completo de la unidad.

b0 = 0.05634; b1 = [1  1]; b2 = [1 -1.0166 1]; a1 = [1 -0.683]; a2 = [1 -1.4461 0.7957];  b = b0*conv(b1,b2); a = conv(a1,a2);  [h,w] = freqz(b,a,'whole',2001);

Trazar la respuesta de magnitud expresada en decibelios.

plot(w/pi,20*log10(abs(h))) ax = gca; ax.YLim = [-100 20]; ax.XTick = 0:.5:2; xlabel('Normalized Frequency (\times\pi rad/sample)') ylabel('Magnitude (dB)')

Respuesta de frecuencia de un filtro DE paso de banda FIR

Diseñe un filtro de paso de banda FIR con banda de paso entre

<math display="block">
<mrow>
<mn>0</mn>
<mo>.</mo>
<mn>3</mn>
<mn>5</mn>
<mi>π</mi>
</mrow>
</math>
Y
<math display="block">
<mrow>
<mn>0</mn>
<mo>.</mo>
<mn>8</mn>
<mi>π</mi>
</mrow>
</math>
rad/muestra y 3 dB de ondulación. La primera banda de parada va desde
<math display="block">
<mrow>
<mn>0</mn>
</mrow>
</math>
Para
<math display="block">
<mrow>
<mn>0</mn>
<mo>.</mo>
<mn>1</mn>
<mi>π</mi>
</mrow>
</math>
rad/muestra y tiene una atenuación de 40 dB. La segunda banda de parada va de
<math display="block">
<mrow>
<mn>0</mn>
<mo>.</mo>
<mn>9</mn>
<mi>π</mi>
</mrow>
</math>
rad/muestra a la frecuencia Nyquist y tiene una atenuación de 30 dB. Calcular la respuesta de frecuencia. Trazar su magnitud tanto en unidades lineales como en decibelios. Resalte la banda de paso.

sf1 = 0.1; pf1 = 0.35; pf2 = 0.8; sf2 = 0.9; pb = linspace(pf1,pf2,1e3)*pi;  bp = designfilt('bandpassfir', ...     'StopbandAttenuation1',40, 'StopbandFrequency1',sf1,...     'PassbandFrequency1',pf1,'PassbandRipple',3,'PassbandFrequency2',pf2, ...     'StopbandFrequency2',sf2,'StopbandAttenuation2',30);  [h,w] = freqz(bp,1024); hpb = freqz(bp,pb);  subplot(2,1,1) plot(w/pi,abs(h),pb/pi,abs(hpb),'.-') axis([0 1 -1 2]) legend('Response','Passband','Location','South') ylabel('Magnitude')  subplot(2,1,2) plot(w/pi,db(h),pb/pi,db(hpb),'.-') axis([0 1 -60 10]) xlabel('Normalized Frequency (\times\pi rad/sample)') ylabel('Magnitude (dB)')

Respuesta de magnitud de un filtro de paso alto

Diseñe un filtro Butterworth de paso alto de 3er orden con una frecuencia normalizada de 3 dB de

<math display="block">
<mrow>
<mn>0</mn>
<mo>.</mo>
<mn>5</mn>
<mi>π</mi>
</mrow>
</math>
rad/muestra. Calcular su respuesta de frecuencia. Expresar la respuesta de magnitud en decibelios y trazarla.

[b,a] = butter(3,0.5,'high'); [h,w] = freqz(b,a);  dB = mag2db(abs(h));  plot(w/pi,dB) xlabel('\omega / \pi') ylabel('Magnitude (dB)') ylim([-82 5])

Repita el cálculo utilizando .fvtool

fvtool(b,a)

Dominio analógico

evalúa la respuesta de frecuencia para un filtro analógico definido por dos vectores de coeficiente de entrada y .freqsba Su funcionamiento es similar al de ; Puede especificar una serie de puntos de frecuencia para utilizar, proporcionar un vector de puntos de frecuencia arbitrarios y trazar la magnitud y la respuesta de fase del filtro.freqz En este ejemplo se muestra cómo calcular y mostrar respuestas de frecuencia analógicas.

Comparación de filtros analógicos IIR Lowpass

Diseñe un filtro de paso bajo Butterworth analógico de 5o orden con una frecuencia de corte de 2 GHz. Multiplicar por

<math display="block">
<mrow>
<mn>2</mn>
<mi>π</mi>
</mrow>
</math>
para convertir la frecuencia en radianes por segundo. Calcular la respuesta de 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 5o orden con la misma frecuencia de borde y 3 dB de ondulación de banda de paso. Calcular su respuesta de 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 5o orden con la misma frecuencia de borde y 30 dB de atenuación de la banda de parada. Calcular su respuesta de 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 5o 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. Calcular su respuesta de frecuencia.

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

Trazar 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')

Los filtros Butterworth y Chebyshev Tipo II tienen bandas de paso planas y bandas de transición anchas. El Chebyshev Tipo I y los filtros elípticos se despliegan más rápido, pero tienen ondulación de banda de paso. La entrada de frecuencia a la función de diseño Chebyshev Tipo II establece el principio de la banda de parada en lugar del final de la banda de paso.