Reply by Nasser M. Abbasi●September 18, 20102010-09-18
Hello DSP experts;
I took an introduction to digital filters course at cal state univ and
learned something about design of IIR digital filters (was a hard course!).
I used the textbook we had and the instructor notes to write this small
Mathematica demonstration to design a low pass IIR digital filter using
Butterworth method. I used Mathematica since I wanted to display H(s)
and H(z) in symbolic form.
If someone would like to try it and to let me know if they spot an bug
or something I might not be doing right. You can either email me or post
here.
You need the free mathematica player to run this demo. The player can be
downloaded from Wolfram research web site. the link is at the top of my
page where I have the demo (pls see the bottom of this email).
This is an educational demo.
This is below what I wrote in the demo:
---------------
"This demonstration implements design of an IIR low pass digital filter.
The input consists of the design specifications for the desired
Butterworh analog filter.
These specifications are used to determine the Butterworth filter
transfer function H(s) which is then mapped to digital filter transfer
function H(z).
The transformation of H(s) to H(z) is performed using either bilinear
transformation or impulse invariance.
A number of plots are made available to examine different aspects of the
final design such as the locations of poles and zeros, the response of
the filter to common signals and the display of H(s) and H(z) in
symbolic format.
Due to space limitation the design is limited to a filter of order 10.
The design can be made by asking for a minimum order filter or by
specifying the filter order required. Both normalized units and hertz
units can be used in the frequency specification."
-------------
I only do Butterworth low pass design. And no bandpass, high pass,
etc... but these can be done easily once the low pass digital filter is
done using frequency transformation formulas, but will not do it now. No
space left on the UI :)
I used basic textbook method to do the design. I wrote a seprate report
on IIR design here before starting coding:
http://12000.org/my_notes/IIR_digital_filter_design/index.htm
I still need to do some cosmetic minor changes to the UI and more
testing, but I think the functionality is all done.
I run few cases, compared my output to that generated by Matlab FDAtool,
and I get similar output. Also run some examples from the textbook, and
I get same H(s) and H(z).
here is the link to my Mathematica demo page
http://12000.org/my_notes/mma_demos/KERNEL/index.htm
It is item #12 on the table shown there.
Thanks for trying it if you do.
--Nasser