This web page publishes the Java source code and Javadoc generated documentation for wavelets. Wavelets are a technique, like Fourier analysis, for analyzing signals. They are also used for data compression, comparision and a variety of other applications.
I am not a member of the Java cult. Java does not change everything. Java is just a programming language and in many cases, because it is interpreted, a slow one at that. I implemented the wavelet code in Java because I wanted to keep my Java "chops up". I use C++ at work and implement a lot of my own software in C++, so this is a way of sharpening my Java skills. I have a love/hate relationship with C++, but the more I use Java the more sure I am that I've made the right choice in implementing large software components in C++.
Most of the Java code that implements the wavelet software is packaged with an archive program called tar. The tar program is standard on UNIX, Linux and probably Mac OS X. Originally tar stood for tape archive. If you don't have a copy of tar for Windows NT you can download the win32 binary here. This version of tar is open source software, from Cygnus (now Red Hat), and came with the Cygwin32 package.
The links below are to sub-pages that in turn contain the links to download the Java software for various wavelet algorithms. The software is documented in comments and in bearcave.com web pages that describe some of the mathematics behind the wavelet algorithms. I have also listed the references I have used, since a full description of the complexities of wavelets and their implementation is beyond what can easily be conveyed on web pages.
This software represents an evolution in my understanding of wavelets over many months. The Haar software is the first wavelet software I implemented. This software includes some statistical functions and a flawed attempted at Gaussian filtering. The lifting scheme software was implemented after the initial Haar algorithms. The Lifting Scheme wavelet software proceeds from a form of ur-wavelet I call the "predict" wavelet. The complete lifting scheme algorithms (which include what the lifting scheme refers to as an "update" step) provide a more simpler and more elegent implementation of the Haar algorithms. The Haar wavelet is extended to two other forms of wavelet - what I call a "line wavelet" and a polynomial interpolation wavelet.
Ian Kaplan, July 2001
Revised: January 2002