Manipulation ofarrays of bytes (signed or unsigned chars) is provided by the classes RWMathVec<T>, RWGenMat<T>, and RWMathArray<T>. Two typedefs are used:
typedef signed char SChar; typedef unsigned char UChar;
For applications requiring only small integers, these classes may be used for high efficiency and compactness. They are also very useful for storing and manipulating graphical images and 8-bit data streams from A/D converters, digitizers, and so on. This makes it easy to take a 2-dimensional Fourier transform of a graphical image, for example:
#include <rw/math/genmat.h> #include <rw/cfft2d.h> #include <iostream.h> main() { // Define a matrix of unsigned chars: RWGenMat<UChar> image; cin >> image; // Read in the image // Allocate a 2-D FFT server: DComplexFFT2DServer serve; // Calculate the Fourier Transform. RWGenMat<DComplex> spectrum = serve.fourier(RWConvertGenMat<UChar,DComplex>(image)); cout << spectrum; // Print periodogram }
Notice that we use the integer representations of the elements for input/output of vectors of signed or unsigned chars, not the literal character constants. This can differ from the behavior of your compiler when a single element is printed on an output stream. For example, the code:
char a = '$'; cout << a;
prints $ with most compilers. However, the code:
RWMathVec<SChar> a(3, '$'); cout << a;
always prints 36 36 36 with Math.h++. This is because the vector classes are primarily a tool for manipulating numbers, not strings. The Tools.h++ class RWCString should be used for manipulating strings.
>©Copyright 1999, Rogue Wave Software, Inc.
Contact Rogue Wave about documentation or support issues.