usuarios de Akai mpc's y más cosas

Comparativa entre el comportamiento de un filtro analógico en alta frecuencia y uno digital
Se realiza la conversión del filtro analógico desde el domino s al dominio digital z, mediante la transformada bilineal (BLT).

Así la función de transferencia de un filtro paso bajo de un polo se puede expresar así:


 

kill(all);
Hz2Rad(x):=float(x*2*%pi)$
dB(x):= float(20 * log(abs(x))/log(10))$
H(s):=1/(s/ωc+1)$ /*funcion de transferencia paso bajo 1 polo*/ 
fc:round(makelist(2^(10*x)*20,x,0.5,1,0.1))$/*6 frecuencias de corte*/
ωc:float(Hz2Rad(fc))$Hs:makelist(1/(s/x+1),x,ωc)$freq: []$
gaindB1:[]$
gaindB2:[]$
gaindB3:[]$
gaindB4:[]$
gaindB5:[]$
gaindB6:[]$n_muestras:150$
delta:ceiling(22050/n_muestras)$
for f:0.1 step delta thru 22050 do
(
ω:2*%pi*f/*frecuencia angular*/
s:%i*ω,
auxdB: dB(ev(cabs(Hs[1]))),
gaindB1: append(gaindB1,[auxdB]),
auxdB: dB(ev(cabs(Hs[2]))),
gaindB2: append(gaindB2,[auxdB]),
auxdB: dB(ev(cabs(Hs[3]))),
gaindB3: append(gaindB3,[auxdB]),
auxdB: dB(ev(cabs(Hs[4]))),
gaindB4: append(gaindB4,[auxdB]),
auxdB: dB(ev(cabs(Hs[5]))),
gaindB5: append(gaindB5,[auxdB]),
auxdB: dB(ev(cabs(Hs[6]))),
gaindB6: append(gaindB6,[auxdB]))$for f:0.1 step delta thru 22050 do
(
freq: append(freq,[f])
)$lista1:[discrete,float(freq),float(gaindB1)]$
lista2:[discrete,float(freq),float(gaindB2)]$
lista3:[discrete,float(freq),float(gaindB3)]$
lista4:[discrete,float(freq),float(gaindB4)]$
lista5:[discrete,float(freq),float(gaindB5)]$
lista6:[discrete,float(freq),float(gaindB6)]$lista:[lista1,lista2,lista3,lista4,lista5,lista6]$fc1:string(fc[1])$
fc1:sconcat(fc1,Hz)$
fc2:string(fc[2])$
fc2:sconcat(fc2,Hz)$
fc3:string(fc[3])$
fc3:sconcat(fc3,Hz)$
fc4:string(fc[4])$
fc4:sconcat(fc4,Hz)$
fc5:string(fc[5])$
fc5:sconcat(fc5,Hz)$
fc6:string(fc[6])$
fc6:sconcat(fc6,Hz)$
fcs:[fc1,fc2,fc3,fc4,fc5,fc6]$wxplot2d(lista,
[x,10,22050],
[y,20,3],
[logx],
[legend,fcs[1],fcs[2],fcs[3],fcs[4],fcs[5],fcs[6]],
[color,blue,blue,blue,blue,blue,blue],
[grid2d,true],
[xlabel,Frecuencia(Hz)],
[ylabel,Amplitud(dB)],
[label,[3dB,fc[1],3],[3dB,fc[5],3]]
);

 


 

Vemos que el comportamiento del filtro analógico en la gráfica de arriba para diversas frecuencias de corte,
ahora la tarea es mediante la la transformada bilineal BLT, convierte la función de transferencia en s-→z
y calcular la gráfica para las diversas frecuencias y comprobar la diferencias entre el comportamiento s<–>z

/**/
gaindBd1:[]$
gaindBd2:[]$
gaindBd3:[]$
gaindBd4:[]$
gaindBd5:[]$
gaindBd6:[]
/*H(s):=1/(s/ωc+1)$*/
s: 2/T*(z1)/(z+1)$ /*transformada bilineal BLT*/
samplerate:44100$ /*samples/s*/
T: float(1/samplerate)$
Hz:ev(H(s))$
Hz:ratsimp(Hz)for f:0.1 step delta thru 22050 do
(                                 
ω:2*%pi*f/*frecuencia angular*/
Ω:ω*T,  /*frecuencia en digital*/
z: exp(%i*Ω),
auxdB: dB(ev(cabs(Hz[1]))),
gaindBd1: append(gaindBd1,[auxdB]),
auxdB: dB(ev(cabs(Hz[2]))),
gaindBd2: append(gaindBd2,[auxdB]),
auxdB: dB(ev(cabs(Hz[3]))),
gaindBd3: append(gaindBd3,[auxdB]),
auxdB: dB(ev(cabs(Hz[4]))),
gaindBd4: append(gaindBd4,[auxdB]),
auxdB: dB(ev(cabs(Hz[5]))),
gaindBd5: append(gaindBd5,[auxdB]),
auxdB: dB(ev(cabs(Hz[6]))),
gaindBd6: append(gaindBd6,[auxdB]))listad1:[discrete,float(freq),float(gaindBd1)]$
listad2:[discrete,float(freq),float(gaindBd2)]$
listad3:[discrete,float(freq),float(gaindBd3)]$
listad4:[discrete,float(freq),float(gaindBd4)]$
listad5:[discrete,float(freq),float(gaindBd5)]$
listad6:[discrete,float(freq),float(gaindBd6)]listad:[listad1,listad2,listad3,listad4,listad5,listad6]$wxplot2d(listad,
[x,10,22050],
[y,20,3],
[logx],
[legend,fcs[1],fcs[2],fcs[3],fcs[4],fcs[5],fcs[6]],
[color,blue,blue,blue,blue,blue,blue],
[grid2d,true],
[xlabel,Frecuencia(Hz)],
[ylabel,Amplitud(dB)],
[label,[3dB,fc[1],3],[3dB,fc[5],3]]
);

 




listaf:append(lista,listad)
wxplot2d(listaf,
[x,10,22050],
[y,20,3],
[logx],
/*[legend,fcs[1],fcs[2],fcs[3],fcs[4],fcs[5],fcs[6]],*/
[legend,false],
[color,blue,blue,blue,blue,blue,blue,red,red,red,red,red,red],
[grid2d,true],
[xlabel,Frecuencia(Hz)],
[ylabel,Amplitud(dB)],
[label,[3dB,fc[1],3],[3dB,fc[5],3]]
);
 

 

 

Comprobamos que en el gráfico de arriba la gran diferencia de comportamiento de los filtros digitales y analógicos en alta frecuencia, al realizar la transformada bilineal (BLT), s-→z.


Created with wxMaxima.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Nube de etiquetas

A %d blogueros les gusta esto: