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.