# How to recover data from a DiscreteWaveletTransform with Battle Lemarie Wavelets?

The question is why can data be recovered perfectly from a discrete Wavelet Transform with a Haar Wavelet but not with some Battle Lemarie Wavelets?

A simple example with the HaarWavelet[]:

data3 = Table[Random[Real, 10], {k, 30}]

{0.702135, 4.9963, 4.89421, 9.69088, 0.396075, 0.781406,
6.41113, 6.82329, 6.51081, 7.93571, 9.42005, 9.27458, 4.27116,
2.14756, 6.01304, 7.76658, 7.86689, 9.94061, 7.02273, 6.3883,
7.34664, 4.71568, 4.7454, 5.27213, 6.64451, 9.71938, 9.85119,
5.58125, 6.24843, 8.93798}

re2 = DiscreteWaveletTransform[data3, HaarWavelet[], WorkingPrecision -> MachinePrecision]

InverseWaveletTransform[re2]
{0.702135, 4.9963, 4.89421, 9.69088, 0.396075, 0.781406, 6.41113,
6.82329, 6.51081, 7.93571, 9.42005, 9.27458, 4.27116, 2.14756,
6.01304, 7.76658, 7.86689, 9.94061, 7.02273, 6.3883, 7.34664,
4.71568, 4.7454, 5.27213, 6.64451, 9.71938, 9.85119, 5.58125,
6.24843, 8.93798}


And now the same with a Battle Lemarie Wavelet:

data3 = Table[Random[Real, 10], {k, 30}]

{4.57767, 9.00061, 4.69697, 2.98705, 0.880157, 9.86854,
4.00198, 4.89448, 3.5703, 5.21159, 0.666989, 2.34296, 9.20806,
6.2718, 4.95437, 4.33022, 3.7734, 3.56578, 1.39766, 2.00157, 9.25936,
5.37673, 2.39729, 6.44292, 4.68169, 6.37612, 7.70032, 3.45587,
3.80153, 6.50759}

re2 =
DiscreteWaveletTransform[data3, BattleLemarieWavelet[1, 10],
WorkingPrecision -> MachinePrecision]

InverseWaveletTransform[re2]

{4.22627, 11.0403, 4.47468, 1.00538, 2.57364, 12.6589,
2.97526, 2.00396, 0.903247, 4.00951, 1.49102, 0.706097, 7.48314,
8.84186, 6.57139, 2.88699, 1.16318, 2.09853, 2.98261, 1.89232,
7.64724, 7.39258, 5.25025, 6.75834, 5.33315, 8.11338, 7.85654,
3.73812, 5.31351, 6.48029}


I know I can increase the precision by taking a higher value then 10 within the calculation of the Battle Lemarie Wavelet but since i'm limited in this case by 30 data points I can´t get a perfect reconstruction?

Thanks for some help :).

When taking transforms and their inverses, it is necessary to use the same options in both operations. In your case, you need to tell the InverseWaveletTransform to use the BattleLemarieWavelet option since you gave this option to the DiscreteWaveletTransform, that is:
InverseWaveletTransform[re2, BattleLemarieWavelet[1, 10]]