putD.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$D
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$D
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.
PutD obtains information about
where the wavelet coefficients appear from the fl.dbase component of
mwd, in particular the array fl.dbase$first.last.d
which
gives a complete specification of index numbers and offsets for
mwd$D
.
Note also that this function only puts information into mwd class objects. To extract coefficients from mwd structures you have to use the accessD.mwd function.
See Downie and Silverman, 1998.
# # Generate an mwd object # tmp <- mwd(rnorm(32)) # # Now let's examine the finest resolution detail... # accessD(tmp, level=3) # [,1] [,2] [,3] [,4] [,5] [,6] #[1,] 0.8465672 0.4983564 0.3408087 0.1340325 0.5917774 -0.06804291 #[2,] 0.6699962 -0.2535760 -1.0344445 0.2068644 -0.4912086 1.16039885 # [,7] [,8] #[1,] -0.6226445 0.2617596 #[2,] -0.4956576 -0.5555795 # # # A matrix. There are two rows one for each mother 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 mother wavelet all equal to zero # for this example # newdmat <- accessD(tmp, level=3) newdmat[1,] <- 0 # # Ok, let's insert it back at level 3 # tmp2 <- putD(tmp, level=3, M=newdmat) # # And check it # accessD(tmp2, level=3) # [,1] [,2] [,3] [,4] [,5] [,6] [,7] #[1,] 0.0000000 0.000000 0.000000 0.0000000 0.0000000 0.000000 0.0000000 #[2,] 0.6699962 -0.253576 -1.034445 0.2068644 -0.4912086 1.160399 -0.4956576 # [,8] #[1,] 0.0000000 #[2,] -0.5555795 # # # Yep, all the first mother wavelet coefficients at level 3 are now zero.