(Public Domain)
Signal Processing Packages and Notebooks 2.4
for
Mathematica Version 1.2 and higher
by
Brian Evans, James McClellan, Kevin West,
Wallace McClure, and Lina Karam
Digital Signal Processing Laboratory
School of Electrical Engineering
Georgia Institute of Technology
Atlanta, GA 303320250
evans@eedsp.gatech.edu
> Introduction
This is an unsupported release of Mathematica code for symbolic
signal processing copyrighted by The Georgia Tech Research Foundation. Once
installed (see below), this collection of Mathematica packages can be
loaded by any user. Bundled with the packages are nine notebooks: Analog
Filters, EducationalTool, LaPlaceTest, PiecewiseConvolution, README,
SignalProcessingExamples, SignalProcessingIntroduction, SignalProcessing
Usage, and zTransform (in three parts). They demonstrate the abilities of
these packages. A complete set of references is given at the end.
> Installation
Uncompressing and untarring "SigProc2.0.tar.Z" will create a hierarchy
of directories under the current directory. The signal processing packages
will be under Packages/SignalProcessing, and the Notebooks will be under
Notebooks. In order to install them in the standard (system) place, move
the contents of Packages/SignalProcessing to
/NextLibrary/Mathematica/Packages on a NeXT
/usr/local/math/Packages on a Sun
d:\math\packages on an IBM PC
> Macintosh Users under Mathematica 1.2
Please make sure that the start up procedure includes the loading
of the Elliptic functions, symbolic integration, and Series abilities.
> Getting started
The Mathematica file "SignalProcessing.m" loads in all the
necessary files. Load it in by < True).
Besides the examples in the ICASSP '90 paper, [1] try
1. ASPAnalyze[ t Exp [  4 t / 5 ] Cos [ 3 Pi t / 4 ] CStep[t], t ]
2. DSPAnalyze[ n (4/5)^n Step[n], n ]
3. DSPAnalyze[ (4/5)^n1 Impulse[n1  n2] Step[n1,n2], {n1,n2} ]
4. ASPAnalyze[ Exp[ 4 t1 / 50] Delta[t1  t2] CStep[t1,t2], {t1,t2} ]
5. DSPAnalyze[ (1/2)^n1 (2/5)^n2 Multinomial[n1,n2] Step[n1,n2], {n1,n2} ]
Note that the analog analyzer (ASPAnalyze) only displays the interesting
section of magnitude and phase plots (part encompassing the breakpoints).
Also, note that twodimensional polezero plots are actually root maps,
unless the twodimensional transform is separable (then two polezero
plots will be displayed). Note that
a. Delta is the Dirac delta function,
b. Impulse is the unit Kronecker delta function, and
c. Mathematica's Laplace transform is Laplace whereas mine is LaPlace.
The paper entitled "Symbolic Transforms with Applications to Signal
Processing" [2] gives Mathematica's output for four of the examples above.
> Transform Capabilities
Fourier, Laplace and ztransforms are useful for analyzing linear
systems and signal processing operations. We have implemented packages
for all the transforms commonly used in signal processing:
(discrete signals) ztransform
discretetime Fourier transform
discrete Fourier transform
(continuous signals) Laplace transform
Fourier transform
This implementation of the transforms is very general in that multi
dimensional versions. The packages also track properties of the trans
forms, so it is also possible to deduce the stability or instability of
a linear system. Using the transforms, the packages can solve
linear constantcoefficient difference and differential equations
for rightsided (defined for t > t0) and leftsided (defined for t < t0)
functions.
> Knowledge Representation for Signals and Systems
We have added many functions (signal primitives) and operators
(system primitives) that are common in signal processing and linear
systems theory but missing in Mathematica:
(basic signals) Kronecker impulse, Dirac delta, sinc,
continuous and discrete step functions,
continuous and discrete pulse functions,
aliased sinc, filter representations
(basic operators) aliasing, convolution, DFT, DTFT, backward
difference, downsampling, Fourier transform,
interleave samples, Laplace transform,
periodic, reverse, scale axis, shift,
summation, upsampling
The transform packages support all of these new objects.
> Other Abilities of These Packages
(continuous signals) analog 1D filter design
1D piecewise convolution
plots of 1D and 2D signals
(discrete signals) 1D convolution (in version 2.1)
plots of 1D and 2D sequences
(general plotting) polezero diagrams
root loci
frequency responses
> Signal Processing Notebooks
In order to extend the use of these extensions in the educational
environment, we have written several notebooks on subjects that are
studied in transform theory and signal processing courses:
(tutorial notebooks) ztransform (in three parts)
piecewise convolution
analog filter design
(directed help/guide) signal processing examples
Mathematica as an educational tool
Laplace transform
(reference guide) signal processing usage information
In the tutorial notebooks, we give numerous examples such as might be
found in a standard textbook and solve problems that are at the level
of elementary homework problems. We use the notebook's animation
ability whenever possible. In the analog filter design notebook, for
example, we illustrate the dependence of the filter's magnitude
response on the filter order (and elsewhere on the ripple
control parameter) as an animation sequence.
> Hierarchical Relationship Between Files
The Mathematica packages are grouped OORBP
into four categories: supporting routines, / \
digital signal processing packages (DSPRBP), DSPRBP ASPRBP
analog signal processing packages (ASPRBP), \ /
and objectoriented extensions (OORBP). SUPPORT
The supporting routines are maintained
in six files (as shown on the right). These
are kept in the Mathematica package directory TransSupport.m S
SignalProcessing/Support. "SupCode.m" defines Convolution.m  U
general purpose Mathematica routines like  + P
Second, SeriesQ, ToList, GenerateCode, and    P
PrintIt (which sends Mathematica output to a   ROC.m O
a PostScript printer). The file "SigProc.m"    R
establish the representation of common signal  FilterSupport.m  T
processing operators (like Upsample, Shift,  / 
and Convolve), as well as common signal pro SigProc.m 
cessing functions (like Step, CStep, Impulse,  
Delta, and Sinc). "ROC.m" defines routines to +
extract and combine regions of convergence 
(ROC's), where an ROC is one open interval of SupCode.m
points. The file "FilterSupport.m" defines
filter objects like IIR, FIR, and IIRFunction,
as well as filter types like Butterworth and Elliptic. The remaining file
is "TransSupport.m" which provides a general set of routines to aid in the
writing of transformation rule bases, extends Mathematica's graphics capa
bilities (to include magnitude/phase responses, polezero diagrams, root
loci), and defines tools for stability analysis LSI systems. The file
"Convolution.m" defines onedimensional piecewise discrete and continuous
convolution.
The digital signal processing routines are maintained in the
hierarchy shown on the next page. These files are maintained in the Mathe
matica package directory under SignalProcessing/Digital. Most files in
the DSPRBP rely on the forward and inverse ztransform capabilities in
"ZTransform.m" and "InvZTransform.m", respectively, which in turn depend
on the file "ZSupport.m". "ZSupport.m" defines the ztransform object,
supporting routines for rule writing, and checking for valid transforms.
The files "DTFT.m" and "DFT.m" contain the rules for the discretetime
Fourier transform and the discrete Fourier transform, respectively. The
file "DSPAnalyzer.m" provides a powerful analyzer of one and two
dimensional signals generated by linear, shiftinvariant systems. This
routine graphs a signal in the timedomain, prints out its ztransform,
indicates conditions for the sequence to be stable, displays its polezero
diagram, gives its DTFT, and plots its magnitude and phase responses. The
package "ZSolve.m" provides the ability to solve linear, constant coef
ficient difference equations.

++
  
DSPAnalyze.m DFT.m   D
    I
+   G
   I
DTFT.m ZSolve.m Correlation.m T
   A
+ ++ L
   
 ZTransform.m InvZTransform.m
  
 
 
DSupport.m ZSupport.m
 


The analog signal processing packages are arranged in a similar
manner, as shown below. "LaPlace.m" and "InvLaPlace.m" provide the forward
and inverse Laplace transforms, which are able to transform expressions
involving signal processing operators and functions. Note that the Laplace
transform extensions released by Wolfram Research only do onedimensional,
onesided transforms and are biased toward higher order mathematical
functions (which are common in physics). Ours work for multidimensional,
ASPAnalyze.m
 
 Fourier.m LSolve.m A
   N
 ++ A
   L
LaPlace.m InvLaPlace.m O
  G
+

FilterDesign.m LSupport.m
 
multisided functions and, therefore, track the region of convergence.
ASPAnalyze provides the same capabilities as does the DSPAnalyze.
The top layer is not yet included with the signal processing
packages. It implements properties of signals and systems, including
routines that reason about them. Because this code implements some of the
work of Gary Kopec, Cory Myers, and Michele Covell, we originally called
it the objectoriented signal processing packages, which is a misnomer
because Mathematica is objectoriented. Anyway, the files "Signal.m" and
"System.m" provide signal and system definitions, respectively. Since
Mathematica is formulabased, it can compute signal values in a pointby
point fashion. These new packages add arraybased, streambased, and state
machinebased signals. This will eventually allow simulation of a wide
variety of signals and systems.
> Alteration of Standard Mathematica Routines
1. the absolute value of a positive number is that number,
2. the absolute value of a negative number is that number negated,
3. the first argument to ClearAttributes and SetAttributes is held,
4. the determinant Det of a number is that number, and
5. the dot product (Dot) of two numbers is their product.
> Disclaimer and Future Releases
This software is the property of the Georgia Tech Research Cor
poration. We have signed a licensing agreement with Wolfram Research Inc.
(WRI) so that WRI can distribute the extensions. The Mathematica Journal
also has the rights to distribute an earlier version of the packages.
I would like to know if you find bugs in it. I have stopped
mailing new releases since I have posted updated code in an anonymous ftp
locations.
Brian L. Evans and James H. McClellan
Georgia Tech, School of Electrical Engineering, Atlanta, GA 303320250
USENET: ...!{allegra,hplabs,ulysses}!gatech!eedsp!evans
INTERNET: evans@eedsp.gatech.edu
> Suggestion
Please, please, use lower case oneletter symbols as variables
and do not assign values to them. This includes variables like n, t, x,
and y, as well as t1, t2, etc. Use oneletter upper case variables to
represent constants (A, G,...), although Mathematica reserves I and N and
we reserve L and Z.
> Documentation
Most of the documentation is in notebook format. Since many users
do not have access to the notebook interface, I have also include two
LaTeX files: "usage.tex" (reference guide) and "usersguide.tex". Another
option is to find a Macintosh computer and acquire MathReader (from the
anonymous ftp subdirectory) which is a public domain notebook reader.
MathReader will at least allow you to peruse notebooks but you will not
be able to evaluate any code fragments.
> References on the Signal Processing Packages
1. Evans, Brian, James McClellan, and Wallace McClure. "Symbolic Trans
forms Using DSP Knowledge Bases", Proc. of the 1990 IEEE Inter. Conf.
on Acoustics, Speech, and Signal Processing. pp. 17751778.
2. Evans, Brian, James McClellan, and Wallace McClure. "Symbolic Trans
forms with Applications to Signal Processing". Mathematica Journal.
vol. 1, issue #2. Dec., 1990. pp 7080.
3. Evans, Brian, and James McClellan. "Transforms for Signal Processing".
1991 Mathematica Conference. Jan., 1991.
> References on the Signal Processing Packages and Notebooks
4. Evans, Brian, James McClellan, and Kevin West. "Mathematica as an
Educational Tool for Signal Processing". Proc. IEEE Southeastern
Conference (Southeastcon). April, 1991. pp. 11621166.
5. Evans, Brian, and James McClellan. "Symbolic Analysis of Signals and
Systems", ch. 3 of Symbolic and KnowledgeBased Signal Processing ed.
by Alan Oppenheim and Hamid Nawab. Prentice Hall, Englewood Cliffs
(NJ), May, 1992.
> References on Transforms
6. Clements, Mark, and Jerrold Pease. 1989. "On Causal Linear Phase IIR
Digital Filters," IEEE Transactions on Acoustics, Speech, and Signal
Processing, vol. ASSP37, issue #4, pp. 479484.
7. Churchill, Ruel. 1958. Operational Mathematics. McGrawHill, New York.
8. Dudgeon, Dan, and Russel Mersereau. 1984. Multidimensional Digital
Signal Processing. Prentice Hall, Englewood Cliffs (NJ).
9. Muth, Eginhard. 1978. Transform Methods. Prentice Hall, Englewood
Cliffs (NJ).
10. Oberhettinger, Fritz, and Larry Badii. 1973. Tables of Laplace Trans
forms. SpringerVerlag, New York.
11. Oppenheim, Alan and Alan Willsky. 1983. Signals and Systems. Prentice
Hall, Englewood Cliffs (NJ).
12. Oppenheim, Alan, and Ronald Schafer. 1989. DiscreteTime Signal Pro
cessing. Prentice Hall, Englewood Cliffs (NJ).
> References on Symbolic Signal Processing
13. Covell, Michele. 1989. An Algorithm Design Environment for Signal Pro
cessing. Ph.D. Thesis and RLE Tech. Rep. #549. MIT, Cambridge (MA).
14. Kopec, Gary. 1980. "The Representation of DiscreteTime Signals and
Systems in Programs." Ph.D. Thesis. MIT, Cambridge (MA).
15. Kopec, Gary. 1985. "The Signal Representation Language SRL." IEEE
Trans. on Acoustics, Speech, and Signal Processing, vol. ASSP33,
issue #4, pp. 921932.
16. Myers, Cory S. 1986. "Signal Representation for Symbolic and Numeric
Processing" Ph.D. Thesis and RLE Tech. Rep. #521. MIT, Cambridge, MA.