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