int QccWAVWaveletLWT(const
QccVector input_signal, QccVector output_signal, int signal_length, int
signal_origin, int subsample_pattern);
int QccWAVWaveletInverseLWT(const
QccVector input_signal, QccVector output_signal, int signal_length, int
signal_origin, int subsample_pattern);
signal_origin gives the index number of the first sample of input_signal. signal_origin is used, in conjunction with subsample_pattern, to determine the phases of subsampling in each level of the signal decomposition. In most cases, the signal starts with index 0, so signal_origin is 0.
subsample_pattern may be either QCCWAVWAVELET_PHASE_EVEN or QCCWAVWAVELET_PHASE_ODD, indicating whether even- or odd-phase subsampling is desired. In the usual case, even subsampling is normally used.
In the case that signal_length is even, both the odd and even "subbands" of the LWT output are the same length. On the other hand, if signal_length is odd, one of the two subbands will be one sample longer than the other. Which subband will be longer will depend on whether signal_origin is odd or even, and also on which phase of subsampling is specified by subsample_pattern.
If signal_length is less than 2, QccWAVWaveletLWT() merely copies input_signal to output_signal.
QccWAVWaveletInverseLWT() performs the opposite operation as QccWAVWaveletLWT(). That is, even-index samples are extracted from the start of input_signal and "interleaved" with odd-indexed samples extracted from the end of input_signal. signal_origin and subsample_pattern are used to determine whether output_signal is to start with a odd- or even-indexed sample. If signal_length is less than 2, input_signal is merely copied to output_signal.
For both of these routines, output_signal must be allocated to sufficient length before calling the routine.
I. Daubechies and W. Sweldens, "Factoring Wavelet Transforms Into Lifting Steps," J. Fourier Anal. Appl., vol. 4, no. 3, pp. 245-267, 1998.