Estoy tratando de pasar una forma de onda de sonido .wav a través de un filtro de paso de banda cuya respuesta de impulso está dada por
He importado el archivo a Matlab de la siguiente manera:
[s, Fs] = wavread('piano_chord.wav');
Entonces, ¿qué sintaxis debo usar para implementar este filtro?
He mirado los [b,a] = butter(n,Wn)
filtros [b,a] = cheby1(n,Rp,Wp)
de paso de banda de Butterworth y Chebyshev respectivamente. Pero no sé cómo la ecuación para los factores de respuesta de impulso en esto, y qué valores necesito usar para a, b y Wn.
Cualquier ayuda sería muy apreciada.
crea una base de tiempo para tu respuesta de impulso:
t = 0 : 1/fs : 1;
crear la respuesta de impulso
b = 50 * exp( -10*t ) .* sin( 2*pi*440*t );
filtrar la señal
filtered_s = filter( b, 1, s);
Si ya tiene la respuesta de impulso que desea, el enfoque más simple sería simplemente convolucionar 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).
Merín
wavwrite(filtered_s, Fs, 'band_pass')
sintaxis, aparece el error: Advertencia: datos recortados durante la escritura en el archivo: band_pass . ¿De qué otra manera puedo exportar la señal filtrada?Merín