Descripción
Implementar el filtro peine (comb filter) definido mediante tres coeficientes y dos muestras de retardo.
Contexto del TP
La consigna pide generar la respuesta al impulso del filtro peine, caracterizarlo en frecuencia (módulo y fase) y analizar cómo varían sus comportamientos al cambiar b0, b1 y b2. El nombre "peine" viene de la forma de su respuesta en frecuencia.
Definición matemática
h[n] = b₀·δ[n] + b₁·δ[n-1] + b₂·δ[n-2]
y[n] = b₀·x[n] + b₁·x[n-1] + b₂·x[n-2]
donde δ[n] es el impulso unitario (1 si n=0, 0 si n≠0).
Función a implementar
Archivo: core/dsp/filters.py
comb_filter(signal, b0, b1, b2)
Parámetros
| Parámetro |
Tipo |
Descripción |
signal |
np.ndarray |
Señal de entrada x[n], arreglo 1D |
b0 |
float |
Coeficiente para muestra actual |
b1 |
float |
Coeficiente para muestra anterior |
b2 |
float |
Coeficiente con 2 muestras de retardo |
Retorno
| Variable |
Tipo |
Descripción |
y |
np.ndarray |
Señal filtrada. Misma longitud que signal |
Criterios de aceptación
| Test |
Qué verifica |
test_comb_zero_coefficients |
Con b0=b1=b2=0, la salida es un arreglo de ceros |
test_comb_identity |
Con b0=1, b1=0, b2=0, la salida es igual a la entrada |
test_comb_output_length |
La longitud de salida es igual a la de entrada |
test_comb_known_output |
Para una señal de impulso, la salida debe ser [b0, b1, b2, 0, 0, ...] |
test_comb_delay_two |
Con b0=0, b1=0, b2=1: la salida es la entrada retardada 2 muestras |
Notas de implementación
- La respuesta al impulso de este filtro tiene exactamente 3 coeficientes no nulos
- Se puede implementar como convolución con
h = np.array([b0, b1, b2])
- Alternativa: implementar el bucle de diferencias directamente (más didáctico)
- Usar
mode='same' si se usa np.convolve
Archivos involucrados
core/dsp/filters.py
core/dsp/tests/test_filters.py
Descripción
Implementar el filtro peine (comb filter) definido mediante tres coeficientes y dos muestras de retardo.
Contexto del TP
La consigna pide generar la respuesta al impulso del filtro peine, caracterizarlo en frecuencia (módulo y fase) y analizar cómo varían sus comportamientos al cambiar b0, b1 y b2. El nombre "peine" viene de la forma de su respuesta en frecuencia.
Definición matemática
donde δ[n] es el impulso unitario (1 si n=0, 0 si n≠0).
Función a implementar
Archivo:
core/dsp/filters.pyParámetros
signalnp.ndarrayb0floatb1floatb2floatRetorno
ynp.ndarraysignalCriterios de aceptación
test_comb_zero_coefficientstest_comb_identitytest_comb_output_lengthtest_comb_known_outputtest_comb_delay_twoNotas de implementación
h = np.array([b0, b1, b2])mode='same'si se usanp.convolveArchivos involucrados
core/dsp/filters.pycore/dsp/tests/test_filters.py