Dear All,
I have problems with this script:
Fs = 44100;
fo = 500;
B = 2^(1/6)-2^(-1/6);
// Low-pass Butterworth
hLPs = analpf(3,"butt",[],1);
// Band-pass Butterworth centered at fo
hBPs = horner(hLPs, (2*%pi*fo/%s + %s/(2*%pi*fo))/B)
// Apply bilinear transform
hBPz = horner(hBPs, 2*Fs*(%z - 1)/(%z + 1))
// Attempt to get the same using iir
hBPz1 = iir(3, "bp", "butt", fo/Fs*[2^(1/6),2^(-1/6)], [0 0])
I attempt to design a discrete Butterworth band-pass filter using two
equivalent methods:
1) Manually applying a bilinear transform to the analog filter designed
with analpf()
2) Applying the function iir()
For some resaon I couldn't figure out, the first method yields an
unexpected result:
--> hBPz
hBPz =
0.0000005 +0.0000016z +0.0000016z² +0.0000005z³
-----------------------------------------------
-0.9671578 +2.9195957z -2.9518237z² +z³
--> hBPz1
hBPz1 =
0.0000006 -0.0000017z² +0.0000017z⁴ -0.0000006z⁶
-----------------------------------------------------------------------------
1.0335428 -6.1515162z +15.271063z² -20.239437z³ +15.104038z⁴
-6.0176897z⁵ +z⁶
The official function iir() is correct. The manual procedure
unexpectedly reduces the order of the denominator.
Maybe someone can find out what's going on...
Thanks,
Federico Miyara
--
El software de antivirus Avast ha analizado este correo electrónico en busca de
virus.
https://www.avast.com/antivirus
_______________________________________________
users mailing list
users@lists.scilab.org
http://lists.scilab.org/mailman/listinfo/users