Filtro de paso de banda con una respuesta de impulso dada (Matlab)

4

Estoy tratando de pasar una forma de onda de sonido .wav a través de un filtro de paso de banda cuya respuesta al impulso está dada por

\ $ h (t) = 50u (t) \ exp (-10t) \ sin (2 \ pi 440t), \ $

He importado el archivo en Matlab de la siguiente manera:

[s, Fs] = wavread('piano_chord.wav');

Entonces, ¿qué sintaxis debo usar para implementar este filtro?

He visto el [b,a] = butter(n,Wn) o [b,a] = cheby1(n,Rp,Wp) para los filtros de paso de banda de Butterworth y Chebyshev respectivamente. Pero no sé cómo la ecuación de los factores de respuesta al impulso en esto, y qué valores necesito usar para a, b, y Wn.

Cualquier ayuda sería muy apreciada.

    
pregunta Merin

2 respuestas

1

cree una base de tiempo para su respuesta de impulso:

t = 0 : 1/fs : 1;

crea la respuesta al impulso

b = 50 * exp( -10*t ) .* sin( 2*pi*440*t );

filtrar la señal

filtered_s = filter( b, 1, s);
    
respondido por el MikeP
1

Si ya tiene la respuesta de impulso que desea, el enfoque más simple sería simplemente convulsionar eso con la señal, implementando efectivamente un filtro FIR.

La alternativa sería hacer una FFT de la respuesta de impulso para obtener la respuesta de frecuencia y luego tratar de aproximarla con un banco de filtros convencionales (por ejemplo, Butterworth o Chebyshev).

    
respondido por el Dave Tweed

Lea otras preguntas en las etiquetas