Main Content

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

freqz

Respuesta de frecuencia del filtro digital

Descripción

ejemplo

[h,w] = freqz(b,a,n) devuelve el vector de respuesta de frecuencia de n puntos h y el correspondiente vector de frecuencia angular w en el filtro digital con los coeficientes de la función de transferencia almacenados en b y a.

ejemplo

[h,w] = freqz(sos,n) devuelve la respuesta de frecuencia compleja de n puntos correspondiente a la matriz de secciones de segundo orden sos.

ejemplo

[h,w] = freqz(d,n) devuelve la respuesta de frecuencia compleja de n puntos del filtro digital d.

[h,w] = freqz(___,n,'whole') devuelve la respuesta de frecuencia en n puntos de muestra alrededor de todo el círculo de la unidad.

[h,f] = freqz(___,n,fs) devuelve el vector de respuesta de frecuencia h y el correspondiente vector de frecuencia física f en un filtro digital diseñado para filtrar las señales muestreadas a una tasa fs.

[h,f] = freqz(___,n,'whole',fs) devuelve el vector de frecuencia en n puntos que van de 0 a fs.

h = freqz(___,w) devuelve el vector de respuesta de frecuencia h evaluado en las frecuencias normalizadas suministradas en w.

h = freqz(___,f,fs) devuelve el vector de respuesta de frecuencia h evaluado en las frecuencias físicas suministradas en f.

ejemplo

freqz(___) sin argumentos de salida representa la respuesta de frecuencia del filtro.

Ejemplos

contraer todo

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

H(z)=0.05634(1+z-1)(1-1.0166z-1+z-2)(1-0.683z-1)(1-1.4461z-1+0.7957z-2).

Exprese el numerador y el denominador como convoluciones de polinomios. Encuentre la respuesta de frecuencia en 2001 puntos que abarcan todo el círculo 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);

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

Figure contains an axes. The axes contains an object of type line.

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

H(z)=0.05634(1+z-1)(1-1.0166z-1+z-2)(1-0.683z-1)(1-1.4461z-1+0.7957z-2).

Exprese la función de transferencia en términos de secciones de segundo orden. Encuentre la respuesta de frecuencia en 2001 puntos que abarcan todo el círculo de la unidad.

b0 = 0.05634;
b1 = [1  1];
b2 = [1 -1.0166 1];
a1 = [1 -0.683];
a2 = [1 -1.4461 0.7957];

sos1 = [b0*[b1 0] [a1 0]];
sos2 = [b2 a2];

[h,w] = freqz([sos1;sos2],'whole',2001);

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

Figure contains an axes. The axes contains an object of type line.

Diseñe un filtro paso bajo FIR de orden 80 mediante una ventana de Kaiser con β=8. Especifique una frecuencia de corte normalizada de 0.5π rad/muestra. Muestre las respuestas de magnitud y fase del filtro.

b = fir1(80,0.5,kaiser(81,8));
freqz(b,1)

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

Diseñe el mismo filtro mediante designfilt. Muestre sus respuestas de magnitud y fase mediante fvtool.

d = designfilt('lowpassfir','FilterOrder',80, ...
               'CutoffFrequency',0.5,'Window',{'kaiser',8});
freqz(d)

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 paso banda FIR con una banda de paso entre 0.35π y 0.8π rad/muestra y 3 dB de curvatura. La primera banda de parada va de 0 a 0.1π rad/muestra y tiene una atenuación de 40 dB. La segunda banda de parada va de 0.9π rad/muestra a la frecuencia de Nyquist y tiene una atenuación de 30 dB. Calcule el valor de la frecuencia de respuesta. Represente 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)')

Figure contains 2 axes. Axes 1 contains 2 objects of type line. These objects represent Response, Passband. Axes 2 contains 2 objects of type line.

Argumentos de entrada

contraer todo

Coeficientes de la función de transferencia, especificados como vectores. Exprese la función de transferencia en términos de b y a como

H(ejω)=B(ejω)A(ejω)=b(1)+b(2)ejω+b(3)ej2ω++b(M)ej(M1)ωa(1)+a(2)ejω+a(3)ej2ω++a(N)ej(N1)ω.

Ejemplo: b = [1 3 3 1]/6 y a = [3 0 1 0]/3 especifican un filtro Butterworth de tercer orden con una frecuencia normalizada de 3 dB de 0,5π rad/muestra.

Tipos de datos: double | single
Soporte de números complejos:

Número de puntos de evaluación, especificado como un escalar entero positivo no inferior a 2. Cuando n está ausente, el valor predeterminado es 512. Para obtener los mejores resultados, establezca n en un valor mayor que el orden del filtro.

Coeficientes de la sección de segundo orden, especificados como una matriz. sos es una matriz de K por 6, donde el número de secciones, K, debe ser mayor o igual a 2. Si el número de secciones es inferior a 2, la función trata la entrada como un vector de numerador. Cada fila de sos corresponde a los coeficientes de un filtro de segundo orden (bicuadrado). La fila i de sos corresponde a [bi(1) bi(2) bi(3) ai(1) ai(2) ai(3)].

Ejemplo: s = [2 4 2 6 0 2;3 3 0 6 0 0] especifica un filtro Butterworth de tercer orden con una frecuencia normalizada de 3 dB de 0,5π rad/muestra.

Tipos de datos: double | single
Soporte de números complejos:

Filtro digital, especificado como un objeto digitalFilter. Utilice designfilt para generar un filtro digital según las especificaciones de frecuencia-respuesta.

Ejemplo: d = designfilt('lowpassiir','FilterOrder',3,'HalfPowerFrequency',0.5) especifica un filtro Butterworth de tercer orden con una frecuencia normalizada de 3 dB de 0,5π rad/muestra.

Tasa de muestreo, especificada como un escalar positivo. Cuando la unidad de tiempo es el segundo, fs se expresa en hercios.

Tipos de datos: double

Frecuencias angulares, especificadas como un vector y expresadas en rad/muestra. w debe tener al menos dos elementos, porque, de lo contrario, la función lo interpreta como n. w = π corresponde a la frecuencia de Nyquist.

Frecuencias, especificadas como un vector. f debe tener al menos dos elementos, porque, de lo contrario, la función lo interpreta como n. Cuando la unidad de tiempo es el segundo, f se expresa en hercios.

Tipos de datos: double

Argumentos de salida

contraer todo

Respuesta de frecuencia, devuelta como un vector. Si especifica n, h tiene una longitud n. Si no especifica n, o especifica n como el vector vacío, h tiene una longitud 512.

Si la entrada de freqz es de una precisión simple, la función calcula la respuesta de frecuencia mediante la aritmética de precisión simple. La salida h es de una precisión simple.

Frecuencias angulares, devueltas como un vector. w tiene valores que van de 0 a π. Si especifica 'whole' en su entrada, los valores de w van de 0 a 2π. Si especifica n, w tiene una longitud n. Si no especifica n, o especifica n como el vector vacío, w tiene una longitud 512.

Frecuencias, devueltas como un vector expresado en hercios. f tiene valores que van de 0 a fs/2 Hz. Si especifica 'whole' en su entrada, los valores de f van de 0 a fs Hz. Si especifica n, f tiene una longitud n. Si no especifica n, o especifica n como el vector vacío, f tiene una longitud 512.

Algoritmos

La respuesta de frecuencia de un filtro digital puede interpretarse como la función de transferencia evaluada en z = e [1].

freqz determina la función de transferencia a partir de los polinomios (reales o complejos) del numerador o denominador que especifique y devuelve la respuesta de frecuencia compleja, H(e), de un filtro digital. La respuesta de frecuencia se evalúa en puntos de muestra determinados por la sintaxis que utilice.

freqz suele utilizar un algoritmo FFT para calcular la respuesta de frecuencia siempre que no se suministre un vector de frecuencias como argumento de entrada. Calcula la respuesta de frecuencia como la relación de los coeficientes transformados del numerador y del denominador, rellenados con ceros hasta la longitud deseada.

Cuando se suministra un vector de frecuencias como entrada, freqz evalúa los polinomios en cada punto de frecuencia y divide la respuesta del numerador entre la respuesta del denominador. Para evaluar los polinomios, la función utiliza el método de Horner.

Referencias

[1] Oppenheim, Alan V., Ronald W. Schafer, and John R. Buck. Discrete-Time Signal Processing. 2nd Ed. Upper Saddle River, NJ: Prentice Hall, 1999.

Capacidades ampliadas

Consulte también

| | | | | | | | |

Introducido antes de R2006a