Aquí está mi código para una señal de dos tonos, donde uso una banda de detención para eliminar el tono más alto y luego graficar el antes (en azul) y después (en rojo) en el dominio de frecuencia después de convolucionar mi señal con los coeficientes del filtro .
Si coloca este código en Matlab, puede ver claramente que la frecuencia más alta ha sido eliminada con éxito por el filtro, sin embargo, por alguna razón, la amplitud de la frecuencia más baja se ha reducido a la mitad, y cuanto más aumento el número de coeficientes del filtro, cuanto más se aplana toda mi curva, ¿por qué ocurre esto? ¿Y cómo puedo evitarlo para que la banda de detención no se propague hacia afuera? Aquí está la imagen y el código:
fMuestreo = 8000; tSampling = 1 / fSampling; t = 0: tMuestreo: 0.005; F0 = 1000; F1 = 3000; xt = sin (2 * pi * F0 * t) + sin (2 * pi * F1 * t); ht = fir1 (40, .25, 'stop'); yt = conv (xt, ht); fAxis = -4000: 125: 4000-125; xF = fft (xt, 64); MagXF = desplazamiento manual (abs (xF)); trama (fAxis, MagXF); Espere yF = fft (yt, 64); MagYF = desplazamiento manual (abs (yF)); trama (fAxis, MagYF, 'r')
Respuestas:
Los filtros siempre tienen un "roll-off" inherente en su respuesta de frecuencia, porque prácticamente no puede darse cuenta de una banda de paso que es una función rectangular perfecta. Para un filtro de paso bajo, el punto donde la magnitud de su respuesta de frecuencia cae a -3dB se llama banda de paso y todo lo que está más allá se llama banda de detención (técnicamente, todo más allá de la frecuencia de esquina, pero tomaremos la frecuencia de esquina para ser el nivel de -3dB). La rapidez con la que su respuesta de frecuencia se atenúa más allá de la banda de paso depende de la longitud del filtro.
Si observa la respuesta de frecuencia de su filtro,
ht
verá que cae a -6dB a 1000 Hz:Por lo tanto, tiene sentido que la potencia caiga 6dB después del filtrado, lo que se ve en su figura como una reducción de la amplitud a la mitad.
Si hubiera mirado la documentación de la
fir1
función que utilizó, también se habría dado cuenta (énfasis mío):Ahora, para crear filtros más nítidos, con respuestas que se acerquen bastante a un rectángulo, tendrá que usar filtros IIR, que vienen con su propia serie de problemas de estabilidad, etc., pero definitivamente una opción. Puede ver mi respuesta aquí para obtener algunas ideas sobre la implementación de un filtro IIR de sección de segundo orden de forma discreta 2 que ofrece esquinas muy definidas. El ejemplo es para un filtro de paso de banda, pero puede leer los documentos de las funciones utilizadas allí e implementar una versión de paso bajo usted mismo.
fuente
A un filtro le lleva tiempo "decidir" si una señal está dentro o fuera de una transición de filtro. Una solución es simplemente alejar la transición del filtro de cualquier señal de interés, como a medio camino entre sus dos señales de prueba, donde, en su caso de prueba, hay muy poca señal para distorsionar por una decisión imperfecta.
fuente
Utilizar
en cambio, tendrá una atenuación muy baja en F0 y una atenuación muy alta en F1.
fuente