0
$\begingroup$

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 :).

$\endgroup$
1
$\begingroup$

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]]

will recover the input data.

$\endgroup$
  • $\begingroup$ I tried that before and this will not recover the data. You tried that with your mathematica? I'm using mathematica 8 what's your version you tested it with? $\endgroup$ – Dan May 11 '16 at 9:18
  • $\begingroup$ It works fine. It does give back the same data you start with. I'm using ver. 10. $\endgroup$ – bill s May 11 '16 at 13:23
  • $\begingroup$ So than it seems so be a bug in Mathematica 8. It's possible since the wavelet analysis was added first time in version 8. Thank you :). $\endgroup$ – Dan May 11 '16 at 13:54

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.