Index of /pub/programs/OregonDSP

[ICO]NameLast modifiedSizeDescription

[PARENTDIR]Parent Directory   -  
[   ]OregonDSP.pdf 2011-02-16 15:05 64K 
[   ]OregonDSP.zip 2011-02-16 15:04 820K 
[TXT]readme.txt 2011-02-17 11:27 6.6K 

		OregonDSP:  A Basic Collection of FIR and
		IIR Digital Filters 
		Author:  David B. Harris 
		Deschutes Signal Processing LLC 

  OregonDSP is a collection of 44 Java classes that design and 
implement finite impulse response (FIR) and infinite impulse response 
(IIR) digital filters.  Supporting classes implement complex and real 
fast Fourier transforms (FFTs) and the overlap-add algorithm for 
filtering a continuous stream in a series of consecutive, contiguous 
blocks with an FIR filter. 

  OregonDSP is free software offered under the terms of the GNU Lesser 
General Public License. 

  Documentation at this point is limited to this brief README file and 
a set of Java docs included with the distribution.  Many of the Java 
docs have extensive comments, including references to papers describing 
the algorithms.  

  The filters and FFTs implemented by this collection of classes 
generally replace (and frequently improve upon) Fortran and C filter 
implementations found in SAC (Seismic Analysis Code).  However, they 
are not translations of SAC subroutines, but represent completely new 
development with substantially different implementations.  These new 
routines often are significantly faster than their SAC counterparts. 

  The root package is com.oregondsp.signalprocessing.  This top-level 
package contains classes for windowing signals (Hamming and Hanning 
windows are supported at present) and a Sequence utility class that 
contains low-level methods used by the rest of the classes.  The 
remaining classes are divided among the following subpackages: 

com.oregondsp.signalprocessing.fft 

  This package contains two public classes (CDFT, RDFT) and three 
package private support classes (CDFTsr, CDFTsr8, CDFTsr16).   The 
latter are not intended to be instantiated by the user.  The FFT 
classes recursively implement a hierarchy of discrete Fourier 
transforms of decreasing size until reaching length-8 and length-16 
transforms.  These latter two transforms are hand-coded for efficiency. 
Throughout, the design goal was to use the constructors of these 
classes to precompute and hardwire indexing and cosine table 
calculations, so that these are not performed during evaluation of the 
DFTs. This philosophy leads to a time-efficient implementation that may 
produce large images for larger-size DFTs (of length 16384 and 
greater).  There are provisions for sharing the DFT instances among 
multiple calculations (if, for example, the FFTs are called repeated to 
process data from a continuous stream), though care must be taken to do 
this in a thread-safe manner. 

  The real DFT class (RDFT) uses the well-established trick of 
computing a real length-N DFT with two length-N/2 real DFTs implemented 
with a length-N/2 complex DFT. 

com.oregondsp.signalprocessing.filter 

  This package contains two sub-packages implementing IIR and FIR 
filters and three utility classes (LagrangePolynomial, Polynomial and 
Rational) useful in designing these filters.

com.oregondsp.signalprocessing.filter.iir 

  This package contains classes for implementing IIR digital filters 
and their analog prototypes.  The digital filters are designed by 
transformation of the analog prototypes with an impulse-invariant 
transformation (see Oppenheim and Schafer, Digital Signal Processing).  
As of this writing, the package implements Butterworth filters and 
Chebyshev types I and II filters in lowpass, bandpass and highpass 
types.  In addition, it implements a general Allpass filter class and a 
specialized class for Thiran allpass filters used to implement 
subsample interpolation (equivalently subsample delays).
 
com.oregondsp.signalprocessing.filter.fir 

  This package contains the OverlapAdd class, which implements the 
overlap-add algorithm for filtering a continuous stream with an FIR 
filter in consecutive, contiguous blocks.  This algorithm allows 
filtering of an arbitrary-length sequence and is suitable for filtering 
real-time streams.  The package also contains the Interpolator class, 
which uses OverlapAdd to implement arbitrary integer-rate interpolation 
of continuous stream data.  Fixed-length sequences (such as cut event 
segments) also can be processed with these classes.  This package also 
contains a ComplexAnalyticSignal class that can be used to generate 
complex analytic representations of real signals and envelopes of real 
signals. 

  This package also contains the following subpackage implementing 
equiripple FIR filters designed with the Parks-McClellan algorithm. 

com.oregondsp.signalprocessing.filter.fir.equiripple 

  This package implements the Remez exchange algorithm to design a wide 
variety of FIR filters characterized by minimizing the maximum 
deviations from desired frequency responses.  At present the package 
implements lowpass, bandpass and highpass filters, two types of 
differentiators and Hilbert transformers (even-length and odd-length) 
and a half-band lowpass filter specialized for interpolation of 
sequences by a factor of two.  Overviews of these filter types and the 
design method can be obtained in the following references: 

	A Unified Approach to the Design of Optimum Linear Phase FIR 
Digital Filters, James H. McClellan and Thomas W. Parks (1973), IEEE 
Transactions on Circuit Theory, Vol. CT-20, No. 6, pp. 697-701. 
	FIR Digital Filter Design Techniques Using Weighted Chebyshev 
Approximation, Lawrence R. Rabiner, James H. McClellan and Thomas W. 
Parks (1975) Proceedin gs of the IEEE, Vol. 63, No. 4, pp. 595-610. 

 Despite the relative antiquity of these references, the 
Parks-McClellan algorithm is still one of the best design methods 
available for digital filters. 

Comments on use 

  To get to this point you have already unzipped the distribution file 
OregonDSP.zip.  You should find com and doc subdirectories, which 
contain the source/executable files and the documentation html files, 
respectively, as well as copies of the GNU GPL and LGPL licenses.  To 
view the documentation, open the doc subdirectory and click on the file 
index.html.  This should launch your browser and bring up an index page 
that you can navigate to see documentation for each class.

  To use the software, you should put the com directory and all of its 
subdirectories into the resource directory that you use for Java 
projects (it could be the directory you point to in the Java's 
classpath). Alternatively, if you are using an IDE, you can refer to 
the software as a library using the supplied jar file.  Add 
oregondsp.jar to your list of jar file resources with your IDE. 

  For bug reports, please use oregondsp@gmail.com. 

	Dave Harris 
	Maupin, Oregon 
	February 3, 2011