Filtro pasa bandas en MATLAB usando audio

Hola, compañeros. Primero, gracias por este foro ya que aquí he resuelto varias dudas de ingeniería.

En este caso busco saber cómo crear un filtro pasa bandas con unos audios previamente mezclados. Lo cual quiero hacer un pasa bajas, pasa altas, pasa bandas y rechaza bandas. Los primero dos ya están usando filtros ideales.

Para sumar audio, de manera representativa, es esto:

suma = audio1 + audio2;

Para el filtro pasa bandas y rechaza bandas pienso usar la función butter, donde i es el orden, Wn la frecuencia normalizada y el signo de interrogación es donde no comprendo si debo poner lo de un pasa bajar más un pasa bandas.

[num, den] = butter(i, Wn,'?');

Esta es la parte del código que no comprendo bien.
fs = 22010;

Rp =1;
Rs = 20;

f1 = 3000;
f2 = 10499;

Wp = [f1 f2] .*2 ./ fs;% Wp and Ws in radians per second.
Ws = [f1-500 f2+500] .*2 ./ fs;

[N Wn] = buttord(Wp,Ws,Rp,Rs);
[suma a] = butter(N,Wn);
 
Esas instrucciones son para hacer un filtro con no más de 1 dB de ripple (Rp) en la banda de atenuación y no menos de 20 dB (Rs) de atenuación, con una banda de paso de entre 3 kHz (f1) y 10.499 kHz (f2), y una banda de atenuación que llega a 500 Hz de la de paso.
Wn es un vector de longitud 2 con los elementos Wl y Wh que son las frecuencias de corte (-3 dB).
Las frecuencias W están expresadas en fracciones de la frecuencia de Nyquist, por lo que la frecuencias en Hz son W * fs / 2.
El primer valor devuelto por la función butter no se llamaría "suma", porque son los coeficientes del numerador de la transformada Z del fitlro. Lo usual es llamarlo "b".
Para graficar la magnitud de la respuesta en frecuencia del filtro se puede hacer:
[H, f] = freqz(b, a, 512, fs);
plot(f, 20 * log10(abs(H)));
 
Ok! Gracias por esta explicación. Realmente soy algo nueva en esto de los filtros. Ya corregí algunas cosas y tomé en cuenta tu explicación.
Gracias
 
Atrás
Arriba