MathGroup Archive 2000

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Mathematica Wavelet-Explorer Question: Inverse Wavelet Transform on a subset of the coefficients

  • To: mathgroup at smc.vnet.net
  • Subject: [mg23023] Re: Mathematica Wavelet-Explorer Question: Inverse Wavelet Transform on a subset of the coefficients
  • From: Oscar Stiffelman <oscar at internap.com>
  • Date: Tue, 11 Apr 2000 23:18:40 -0400 (EDT)
  • Sender: owner-wri-mathgroup at wolfram.com

I think I found the answer.  Below, I construct a table comparing the
difference between the two approaches. 


compareIWT[wt_, filter_, numDropped_] := (
    wt1 = 
      MapIndexed[(If[Length[wt] - First[#2] < numDropped, 0*#1, #1]) &,
wt];
    wt2 = Take[wt, Length[wt] - numDropped];
    iwt1 = InverseWaveletTransform[wt1, filter];
    iwt2 = InverseWaveletTransform[wt2, filter];
    Mean[iwt2]/Mean[iwt1]
    )



Table[compareIWT[wt4, D4, i], {i, 1, 10}]


{1.41421, 2., 2.82843, 4., 5.65685, 8., 11.3137, 16., 22.6274, 32.}


This is just (sqrt(2))^numDropped.  I guess I will just use this scaling
factor-- I assume it will work for other filter lengths and types of
filters.


-- Oscar

On Mon, 10 Apr 2000, Oscar Stiffelman wrote:

> Hi,
> 
> I am using the Wavelet Explorer package in Mathematica, and I noticed
> something somewhat peculiar.  If I perform an inverse wavelet transform on
> a subset of the coefficients, the mean is shifted up, but if I instead
> zero out those coefficients (rather than truncating), then the mean
> remains the same:
> 
> In[1]:= <<Wavelets`Wavelets`  
> 
> In[2]:= randomWalk = NestList[(# + Random[Real, {-1, 1}])&, 0, 1023];
> 
> In[3]:= wt = WaveletTransform[randomWalk, DaubechiesFilter[4]];
> 
> In[4]:= Length /@ wt
> 
> Out[4]= {4, 4, 8, 16, 32, 64, 128, 256, 512}
> 
> In[5]:= iwt1 = InverseWaveletTransform[wt*{1,1,1,1,1,1,1,0,0},
> DaubechiesFilter[4]];
> 
> 
> In[6]:= Mean[iwt1]
> 
> Out[6]= 11.9505
> 
> In[7]:= Mean[randomWalk]
> 
> Out[7]= 11.9505
> 
> In[8]:=  iwt2 = InverseWaveletTransform[Take[wt, Length[wt]-2],
> DaubechiesFilter[4]];
> 
> In[9]:= Mean[iwt2]
> 
> Out[9]= 23.9011
> 
> 
> 
> Can anybody explain this?  The curves are basically the same shape
> (but at different resolutions).  How can I consistently scale the
> truncated inverse wavelet transform so that it will always be correct?
> 
> Thanks,
> 
> Oscar Stiffelman
> 
> 



  • Prev by Date: Re: Mod Bessel function bug ?
  • Next by Date: Re: Re: making a column into a list
  • Previous by thread: Mathematica Wavelet-Explorer Question: Inverse Wavelet Transform on a subset of the coefficients
  • Next by thread: Chop?