Contenido principal

grpdelay

Retardo promedio del filtro (retardo de grupo)

Descripción

[gd,w] = grpdelay(b,a,n) devuelve la respuesta de retardo de grupo del filtro digital especificado. Especifique un filtro digital con coeficientes del numerador b y coeficientes del denominador a. La función devuelve el vector de respuesta de retardo de grupo de n puntos en gd y el correspondiente vector de frecuencia angular w.

[gd,w] = grpdelay(B,A,"ctf",n) devuelve la respuesta de retardo de grupo de n puntos del filtro digital representada como Cascaded Transfer Functions (CTF) con coeficientes del numerador B y coeficientes del denominador A. (desde R2024b)

ejemplo

[gd,w] = grpdelay({B,A,g},"ctf",n) devuelve la respuesta de retardo de grupo de n puntos del filtro digital en formato CTF. Especifique el filtro con coeficientes del numerador B, coeficientes del denominador A y valores de escalado g en las secciones del filtro. (desde R2024b)

ejemplo

[gd,w] = grpdelay(d,n) devuelve la respuesta de retardo de grupo de n puntos del filtro digital d.

ejemplo

[gd,w] = grpdelay(sos,n) devuelve la respuesta de retardo de grupo de n puntos correspondiente a la matriz de secciones de segundo orden sos.

ejemplo

[gd,w] = grpdelay(___,"whole") devuelve el retardo de grupo en n puntos de muestra alrededor de todo el círculo de la unidad.

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

[gd,f] = grpdelay(___,n,"whole",fs) devuelve el vector de frecuencia en n puntos que van de 0 a fs.

gd = grpdelay(___,win) devuelve el vector de retardo de grupo gd evaluado en las frecuencias normalizadas suministradas en win.

gd = grpdelay(___,fin,fs) devuelve el vector de retardo de grupo gd evaluado en las frecuencias físicas suministradas en fin.

ejemplo

grpdelay(___) sin argumentos de salida representa la respuesta de retardo de grupo del filtro.

ejemplo

Ejemplos

contraer todo

Diseñe un filtro Butterworth de sexto orden con 3 dB normalizados de frecuencia de 0.2π rad/muestra. Utilice grpdelay para mostrar el retardo de grupo.

[z,p,k] = butter(6,0.2);
sos = zp2sos(z,p,k);

grpdelay(sos,128)

Figure contains an axes object. The axes object with title Group Delay, xlabel Normalized Frequency ( times pi blank rad/sample), ylabel Group delay (samples) contains an object of type line.

Represente tanto el retardo de grupo como el retardo de fase del sistema en la misma figura.

gd = grpdelay(sos,512);

[h,w] = freqz(sos,512);
pd = -unwrap(angle(h))./w;

plot(w/pi,gd,w/pi,pd)
grid
xlabel 'Normalized Frequency (\times\pi rad/sample)'
ylabel 'Group and phase delays'
legend('Group delay','Phase delay')

Figure contains an axes object. The axes object with xlabel Normalized Frequency ( times pi blank rad/sample), ylabel Group and phase delays contains 2 objects of type line. These objects represent Group delay, Phase delay.

Utilice designfilt para diseñar un filtro Butterworth de sexto orden con 3 dB normalizados de frecuencia de 0.2π rad/muestra. Muestre su respuesta de retardo de grupo.

d = designfilt("lowpassiir",FilterOrder=6, ...
    HalfPowerFrequency=0.2,DesignMethod="butter");
grpdelay(d)

Figure contains an axes object. The axes object with title Group Delay, xlabel Normalized Frequency ( times pi blank rad/sample), ylabel Group delay (samples) contains an object of type line.

Diseñe un filtro FIR de 88.º orden de respuesta de magnitud arbitraria. El filtro tiene dos bandas de paso y dos bandas de parada. La banda de paso de menor frecuencia tiene el doble de ganancia que la frecuencia de paso de mayor frecuencia. Especifique una tasa de muestreo de 200 Hz. Visualice la respuesta de magnitud y la respuesta de fase del filtro de 10 Hz a 78 Hz.

fs = 200;
d = designfilt('arbmagfir', ...
       'FilterOrder',88, ...
       'NumBands',4, ...
       'BandFrequencies1',[0 20], ...
       'BandFrequencies2',[25 40], ...
       'BandFrequencies3',[45 65], ...
       'BandFrequencies4',[70 100], ...
       'BandAmplitudes1',[2 2], ...
       'BandAmplitudes2',[0 0], ...
       'BandAmplitudes3',[1 1], ...
       'BandAmplitudes4',[0 0], ...
       'SampleRate',fs);
freqz(d,10:1/fs:78,fs)

Figure contains 2 axes objects. Axes object 1 with title Phase, xlabel Frequency (Hz), ylabel Phase (degrees) contains an object of type line. Axes object 2 with title Magnitude, xlabel Frequency (Hz), ylabel Magnitude (dB) contains an object of type line.

Calcule y muestre la respuesta de retardo de grupo del filtro a lo largo del mismo rango de frecuencia. Compruebe que sea una mitad del orden del filtro.

filtord(d)
ans = 
88
grpdelay(d,10:1/fs:78,fs)

Figure contains an axes object. The axes object with title Group Delay, xlabel Frequency (Hz), ylabel Group delay (samples) contains an object of type line.

Desde R2024b

Diseñe un filtro digital paso bajo Chebyshev Tipo II de orden 40 con una frecuencia de borde de banda de parada de 0,4 y una atenuación de la banda de parada de 50 dB. Represente la respuesta de retardo de grupo del filtro utilizando coeficientes en formato CTF.

[B,A] = cheby2(40,50,0.4,"ctf");

grpdelay(B,A,"ctf")

Figure contains an axes object. The axes object with title Group Delay, xlabel Normalized Frequency ( times pi blank rad/sample), ylabel Group delay (samples) contains an object of type line.

Diseñe un filtro digital elíptico paso banda de orden 30 con unas frecuencias de borde de la banda de paso de 0,3 y 0,7, ondulación de la banda de paso de 0,1 dB y atenuación de la banda de parada de 50 dB. Represente la respuesta de retardo de grupo del filtro utilizando coeficientes y ganancia en formato CTF.

[B,A,g] = ellip(30,0.1,50,[0.3 0.7],"ctf");
grpdelay({B,A,g},"ctf")

Figure contains an axes object. The axes object with title Group Delay, xlabel Normalized Frequency ( times pi blank rad/sample), ylabel Group delay (samples) contains an object 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(z)=B(z)A(z)=b1+b2z1+bnz(n1)+bn+1zna1+a2z1+amz(m1)+am+1zm

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 frecuencia sobre los que se evalúa la respuesta, 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.

Desde R2024b

Coeficientes de función de transferencia en cascada (CTF), especificados como escalares, vectores o matrices. B y A indican los coeficientes de numerador y denominador de la función de transferencia en cascada, respectivamente.

B debe tener un tamaño de L por (m + 1) y A debe tener un tamaño de L por (n + 1), donde:

  • L representa el número de secciones del filtro.

  • m representa el orden de los numeradores del filtro.

  • n representa el orden de los denominadores del filtro.

Para obtener más información sobre el formato de la función de transferencia en cascada y las matrices de coeficientes, consulte Especificar filtros digitales en formato CTF.

Nota

Si cualquier elemento de A(:,1) no equivale a 1, entonces grpdelay normaliza los coeficientes de filtro mediante A(:,1). En este caso, A(:,1) debe ser distinto de cero.

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

Desde R2024b

Valores de escala, especificados como un escalar de valor real o un vector de valor real con L + 1 elementos, donde L es el número de secciones CTF. Los valores de escala representan la distribución de la ganancia del filtro en las secciones de la representación del filtro en cascada.

La función grpdelay aplica una ganancia a las secciones de filtro usando la función scaleFilterSections dependiendo de cómo especifique g:

  • Escalar: la función distribuye la ganancia uniformemente en todas las secciones de filtro.

  • Vector: la función aplica los primeros valores de ganancia L a las secciones de filtro correspondientes y distribuye el último valor de ganancia uniformemente en todas las secciones de filtro.

Tipos de datos: double | single

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.

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:

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. win debe tener al menos dos elementos porque, de lo contrario, la función lo interpreta como n. win = π corresponde a la frecuencia de Nyquist.

Frecuencias, especificadas como un vector. fin 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, fin se expresa en hercios.

Tipos de datos: double

Argumentos de salida

contraer todo

Respuesta de retardo de grupo, devuelta como vector. Si especifica n, gd tiene una longitud n. Si no especifica n, o especifica n como el vector vacío, gd tiene una longitud 512.

Si la entrada de grpdelay es de precisión simple, la función calcula la respuesta de retardo de grupo mediante 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.

Más acerca de

contraer todo

Sugerencias

  • Puede obtener filtros en formato CTF, incluida la ganancia de escala. Utilice las salidas de las funciones de diseño de filtros IIR digitales, como butter, cheby1, cheby2 y ellip. Especifique el argumento de tipo de filtro "ctf" en estas funciones y especifique que se devuelvan B, A y g para obtener los valores de escala. (desde R2024b)

Referencias

[1] Lyons, Richard G. Understanding Digital Signal Processing. Upper Saddle River, NJ: Prentice Hall, 2004.

Capacidades ampliadas

expandir todo

Historial de versiones

Introducido antes de R2006a

expandir todo