HAAR is a C++ library which computes the Haar transform of data.
In the simplest case, one is given a vector X whose length N is a power of 2. We now consider consecutive pairs of entries of X, and for I from 0 to (N/2)-1 we define:
S[I] = ( X[2*I] + X[2*I+1] ) / sqrt ( 2 )
D[I] = ( X[2*I] - X[2*I+1] ) / sqrt ( 2 )
We now replace X by the vector S concatenated with D. Assuming that (N/2) is greater than 1, we repeat the operation on the (N/2) entries of S, and so on, until we have reached a stage where our resultant S and D each contain one entry.
For data in the form of a 2D array, the transform is applied to the columns and then the rows.
The computer code and data files described and made available on this web page are distributed under the GNU LGPL license.
HAAR is available in a C version and a C++ version and a FORTRAN77 version and a FORTRAN90 version and a MATLAB version.
SFTPACK, a C++ library which implements the "slow" Fourier transform, intended as a teaching tool and comparison with the fast Fourier transform.
SINE_TRANSFORM, a C++ library which demonstrates some simple properties of the discrete sine transform.
WALSH, a C++ library which implements versions of the Walsh and Haar transforms.
- Ken Beauchamp,
Walsh functions and their applications,
Academic Press, 1975,
ISBN: 0-12-084050-2,
LC: QA404.5.B33.
- haar_prb.cpp a sample calling program.
- haar_prb_output.txt, the output file.
- HAAR_1D computes the Haar transform of a vector.
- HAAR_1D_INVERSE computes the inverse Haar transform of a vector.
- HAAR_2D computes the Haar transform of an array.
- HAAR_2D_INVERSE inverts the Haar transform of an array.
- I4_MAX returns the maximum of two I4's.
- I4_MIN returns the minimum of two I4's.
- R8MAT_PRINT prints an R8MAT.
- R8MAT_PRINT_SOME prints some of an R8MAT.
- R8MAT_UNIFORM_01_NEW returns a unit pseudorandom R8MAT.
- R8VEC_COPY_NEW copies an R8VEC to a "new" R8VEC.
- R8VEC_LINSPACE_NEW creates a vector of linearly spaced values.
- R8VEC_ONES_NEW creates a vector of 1's.
- R8VEC_TRANSPOSE_PRINT prints an R8VEC "transposed".
- R8VEC_UNIFORM_01_NEW returns a new unit pseudorandom R8VEC.
- TIMESTAMP prints the current YMDHMS date as a time stamp.
You can go up one level to the C++ source codes.
Last revised on 17 March 2011.