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.

freqz

Respuesta de frecuencia del filtro digital

Descripción

ejemplo

[h,w] = freqz(b,a,n) Devuelve el vector de respuesta de frecuencia de punto y el vector de frecuencia angular correspondiente para el filtro digital con coeficientes de función de transferencia almacenados y.nhwba

ejemplo

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

ejemplo

[h,w] = freqz(d,n) Devuelve la respuesta de frecuencia compleja del punto para el filtro digital.nd

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

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

[h,f] = freqz(___,n,'whole',fs) Devuelve el vector de frecuencia en puntos que oscilan entre 0 y.nfs

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

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

ejemplo

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

Ejemplos

contraer todo

Calcule y visualice 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ómicas. Encuentre la respuesta de frecuencia en 2001 puntos que abarcan el círculo unitario completo.

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);

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

Calcule y visualice 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 la función de transferencia en términos de secciones de segundo orden. Encuentre la respuesta de frecuencia en 2001 puntos que abarcan el círculo unitario completo.

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);

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

Diseñe un filtro de paso bajo FIR de orden 80 utilizando una ventana de Kaiser con

<math display="block">
<mrow>
<mi>β</mi>
<mo>=</mo>
<mn>8</mn>
</mrow>
</math>
. Especifique una frecuencia de corte normalizada de
<math display="block">
<mrow>
<mn>0</mn>
<mo>.</mo>
<mn>5</mn>
<mi>π</mi>
</mrow>
</math>
RAD/sample. Mostrar las respuestas de magnitud y fase del filtro.

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

Diseñe el mismo filtro utilizando.designfilt Mostrar sus respuestas de magnitud y fase utilizando.fvtool

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

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/sample y 3 dB de ondulación. El primer stopband va de
<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/sample y tiene una atenuación de 40 dB. El segundo stopband va de
<math display="block">
<mrow>
<mn>0</mn>
<mo>.</mo>
<mn>9</mn>
<mi>π</mi>
</mrow>
</math>
RAD/Sample a la frecuencia Nyquist y tiene una atenuación de 30 dB. Calcule la respuesta de frecuencia. Graficar 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)')

Argumentos de entrada

contraer todo

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

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: y especifique un filtro Butterworth de tercer orden con frecuencia normalizada de 3 dB 0,5 π Rad/sample.b = [1 3 3 1]/6a = [3 0 1 0]/3

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

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

Tipos de datos: double

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

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

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

Filtro digital, especificado como objeto.digitalFilter Se utiliza para generar un filtro digital basado en las especificaciones de respuesta de frecuencia.designfilt

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

Frecuencia de muestreo, especificada como un escalar positivo. Cuando la unidad de tiempo es de segundos, se expresa en hercios.fs

Tipos de datos: double

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

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

Tipos de datos: double

Argumentos de salida

contraer todo

Respuesta de frecuencia, devuelta como vector. Si especifica, entonces tiene longitud.nhn Si no especifica, o especifica como el vector vacío, entonces tiene longitud 512.nnh

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

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

Frecuencias, devueltas como un vector expresado en hercios. tiene valores que van de 0 a/2 Hz.ffs Si especifica en la entrada, los valores en el rango de 0 a Hz.'whole'ffs Si especifica, tiene longitud.nfn Si no especifica o especifica como vector vacío, tiene una longitud de 512.nnf

Algoritmos

La respuesta de frecuencia de un filtro digital se puede interpretar como la función de transferencia evaluada en =ze .[1]

determina la función de transferencia de los polinomios numerador y denominador (real o complejo) que especifique y devuelve la respuesta de frecuencia compleja, (freqzHe), de un filtro digital. La respuesta de frecuencia se evalúa en los puntos de muestra determinados por la sintaxis que se utiliza.

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

Cuando usted suministra un vector de frecuencias como entrada, evalúa los polinomios en cada punto de frecuencia y divide la respuesta del numerador por la respuesta del denominador.freqz 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