putC.mwd(mwd, level, M, boundary = F, index = F)
level
M
boundary
boundary is F then only the "real"
data is replaced (and it is easy to predict the required length of
M). If boundary is T then
you can replace the boundary values at a particular level as well
(but it is hard to predict the required length of
M, and the information
has to be obtained from the mfirst.last
database component of mwd).
index
index is T then the index
numbers into the mwd$C array
where the matrix M would be stored is returned. Otherwise,
(default) the modified mwd object
is returned.
index
is F, otherwise the index numbers indicating where
the M matrix would have been inserted into the
mwd$C object are returned.
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 matrix of coefficients.
PutC obtains information about
where the smoothed data appears from the fl.dbase component of
mwd, in particular the array fl.dbase$first.last.c which
gives a complete specification of index numbers and offsets for
mwd$C.
Note also that this function only puts information into mwd class objects. To extract coefficients from mwd structures you have to use the accessC.mwd function.
See Downie and Silverman, 1998.
# # Generate an mwd object # tmp <- mwd(rnorm(32)) # # Now let's examine the finest resolution smooth... # accessC(tmp, level=3) # [,1] [,2] [,3] [,4] [,5] [,6] #[1,] -0.4669103 -1.3150580 -0.7094966 -0.1979214 0.32079986 0.5052254 #[2,] -0.7645379 -0.8680941 0.1004062 0.6633268 -0.05860848 0.5757286 # [,7] [,8] #[1,] 0.5187380 0.6533843 #[2,] 0.2864293 -0.4433788 # # A matrix. There are two rows one for each father wavelet in this # two-ple multiple wavelet transform and at level 3 there are 2^3 columns. # # Let's set the coefficients of the first father wavelet all equal to zero # for this example # newcmat <- accessC(tmp, level=3) newcmat[1,] <- 0 # # Ok, let's insert it back at level 3 # tmp2 <- putC(tmp, level=3, M=newcmat) # # And check it # accessC(tmp2, level=3) # [,1] [,2] [,3] [,4] [,5] [,6] [,7] #[1,] 0.0000000 0.0000000 0.0000000 0.0000000 0.00000000 0.0000000 0.0000000 #[2,] -0.7645379 -0.8680941 0.1004062 0.6633268 -0.05860848 0.5757286 0.2864293 # [,8] #[1,] 0.0000000 #[2,] -0.4433788 # # Yep, all the first father wavelet coefficients at level 3 are now zero.