putC.wd(wdobj, level, v, boundary=F, index=F)
F
then only "real" data is replaced.
If boundary is T
then the boundary (bookeeping) elements
are replaced as well. Information about the lengths of the vectors
can be found in the first.last database function
and Nason and Silverman, 1994.
T
then the index numbers into the 1D array
where the coefficient insertion would take place are returned.
If index is F
(default) then the
modified wavelet decomposition object
is returned.
putC.wd
replaces father wavelet coefficients at a particular resolution level and
returns a modified wd object reflecting the change.
The need for this function is a consequence of the pyramidal structure of Mallat's algorithm and the memory efficiency gain achieved by storing the pyramid as a linear vector. PutC.wd obtains information about where the smoothed data appears from the fl.dbase component of an wd object, in particular the array
fl.dbase$first.last.cwhich gives a complete specification of index numbers and offsets for
wd.object$C.
Note that this function is method for the generic function putC. When the wd object is definitely a wd class object then you only need use the generic version of this function.
Note also that this function only puts information into wd class objects. To extract coefficients from a wd object you have to use the accessC function (or more precisely, the accessC.wd method).
# # Generate an EMPTY wd object: # > zero <- rep(0, 16) > zerowd <- wd(zero) # # Put some random father wavelet coefficients into the object at # resolution level 2. For the decimated wavelet transform there # are always 2^i coefficients at resolution level i. So we have to # insert 4 coefficients # > mod.zerowd <- putC( zerowd, level=2, v=rnorm(4)) # # If you use accessC on mod.zerowd you would see that there were only # coefficients at resolution level 2 where you just put the coefficients. # # Now, for a time-ordered non-decimated wavelet transform object the # procedure is exactly the same EXCEPT that there are going to be # 16 coefficients at each resolution level. I.e. # # Create empty TIME-ORDERED NON-DECIMATED wavelet transform object # > zerowdS <- wd(zero, type="station") # # Now insert 16 random coefficients at resolution level 2 # > mod.zerowdS <- putC(zerowdS, level=2, v=rnorm(16)) # # Once more if you use accessC on mod.zerowdS you will see that there are # only coefficients at resolution level 2.