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.

impz

Respuesta al impulso de un filtro digital

Descripción

[h,t] = impz(b,a) devuelve la respuesta al impulso del filtro digital especificado. Especifique un filtro digital con coeficientes del numerador b y coeficientes del denominador a. La función escoge el número de muestras y devuelve los coeficientes de respuesta de h y los tiempos de muestreo de t.

ejemplo

[h,t] = impz(B,A,"ctf") devuelve la respuesta al impulso del filtro digital representado como Cascaded Transfer Functions (CTF) con coeficientes del numerador B y coeficientes del denominador A. (desde R2024b)

ejemplo

[h,t] = impz({B,A,g},"ctf") devuelve la respuesta al impulso 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

[h,t] = impz(d) devuelve la respuesta al impulso del filtro digital d. Utilice designfilt para generar d según las especificaciones de frecuencia-respuesta.

ejemplo

[h,t] = impz(sos) devuelve la respuesta al impulso del filtro que especifica la matriz de secciones de segundo orden sos.

[h,t] = impz(___,n) especifica qué muestras impulso-respuesta se deben calcular. Puede especificar el filtro utilizando cualquiera de las sintaxis anteriores.

ejemplo

[h,t] = impz(___,n,fs) devuelve un vector t con muestras consecutivas espaciadas con 1/fs unidades.

ejemplo

impz(___) sin argumentos de salida representa la respuesta al impulso del filtro.

ejemplo

Ejemplos

contraer todo

Diseñe un filtro elíptico de paso bajo de cuarto orden con una frecuencia de banda de paso normalizada de 0,4 rad/muestra. Especifique una ondulación de banda de paso de 0,5 dB y una atenuación de banda de parada de 20 dB. Represente las primeras 50 muestras de la respuesta al impulso.

[b,a] = ellip(4,0.5,20,0.4);
impz(b,a,50)

Figure contains an axes object. The axes object with title Impulse Response, xlabel n (samples), ylabel Amplitude contains an object of type stem.

Diseñe el mismo filtro mediante designfilt. Represente las primeras 50 muestras de su respuesta al impulso.

d = designfilt('lowpassiir','DesignMethod','ellip','FilterOrder',4, ...
               'PassbandFrequency',0.4, ...
               'PassbandRipple',0.5,'StopbandAttenuation',20);
p = impz(d,50);
stem(p,"Filled")

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

Diseñe un filtro FIR de paso alto de orden 18 mediante una ventana de Kaiser con β=4. Especifique una tasa de muestreo de 100 Hz y una frecuencia de corte de 30 Hz. Muestre la respuesta al impulso del filtro.

b = fir1(18,30/(100/2),'high',kaiser(19,4));
impz(b,1,[],100)

Figure contains an axes object. The axes object with title Impulse Response, xlabel nT (ms), ylabel Amplitude contains an object of type stem.

Diseñe el mismo filtro utilizando designfilt y represente su respuesta al impulso.

d = designfilt('highpassfir','FilterOrder',18,'SampleRate',100, ...
               'CutoffFrequency',30,'Window',{'kaiser',4});
[p,t] = impz(d,[],100);
stem(t,p,"filled")

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

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 las primeras 64 muestras de la respuesta al impulso del filtro usando coeficientes de filtro en formato CTF.

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

impz(B,A,"ctf",64)

Figure contains an axes object. The axes object with title Impulse Response, xlabel n (samples), ylabel Amplitude contains an object of type stem.

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 las primeras 64 muestras de la respuesta al impulso del filtro usando coeficientes de filtro y ganancia en formato CTF.

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

Figure contains an axes object. The axes object with title Impulse Response, xlabel n (samples), ylabel Amplitude contains an object of type stem.

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:

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 es igual a 1, entonces impz 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 impz 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:

Número de puntos sobre los que se evalúa la respuesta, especificado como entero positivo, vector de enteros no negativos o vector vacío.

  • Si n es un entero positivo, impz calcula las primeras n muestras de la respuesta al impulso y devuelve t como (0:n-1)'.

  • Si n es un vector de enteros no negativos, impz calcula la respuesta al impulso en las ubicaciones especificadas en el vector.

  • Si n es un vector vacío, impz calcula el número de muestras automáticamente. Para obtener más información, consulte Algoritmos.

Ejemplo: impz([2 4 2 6 0 2;3 3 0 6 0 0],5) calcula las cinco primeras muestras de la respuesta al impulso de un filtro Butterworth.

Ejemplo: impz([2 4 2 6 0 2;3 3 0 6 0 0],[0 3 2 1 4 5]) calcula las seis primeras muestras de la respuesta al impulso de un filtro Butterworth.

Ejemplo: impz([2 4 2 6 0 2;3 3 0 6 0 0],[],5e3) calcula la respuesta al impulso de un filtro Butterworth diseñado para filtrar señales muestreadas a 5 kHz.

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

Argumentos de salida

contraer todo

Coeficientes de respuesta al impulso, devueltos como vector columna.

Tiempos de muestreo, devueltos como vector columna.

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)

Algoritmos

impz filtra una secuencia de impulso de longitud n utilizando

filter(b,a,[1 zeros(1,n-1)])

y representa el resultado utilizando stem.

Nota

Si la entrada de impz es de precisión simple, la función calcula la respuesta al impulso mediante aritmética de precisión simple y devuelte una salida de precisión simple.

Cuando impz calcula n automáticamente, el algoritmo depende de las propiedades del filtro:

  • Filtros FIR: n es la longitud de b.

  • Filtros IIR: impz busca primero los polos de la función de transferencia utilizando roots.

    • Si el filtro es inestable, se escoge n como punto en el que el término del polo más grande alcanza 106 veces su valor original.

    • Si el filtro es estable, se escoge n como punto en el que el término del polo de mayor amplitud alcanza 5 × 10–5 veces su amplitud original.

    • Si el filtro es oscilatorio y solo tiene polos en el círculo de la unidad, impz calcula cinco periodos de la oscilación más lenta.

    • Si el filtro tiene términos tanto oscilatorios como con amortiguamiento, n es el mayor de los cinco periodos con oscilación más lenta o el punto en el que el término es 5 × 10–5 veces su amplitud original debido al polo más grande.

impz también permite retardos en el polinomio del numerador. El número de retardos se incorpora al cálculo del número de muestras.

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

Consulte también

Apps

Funciones