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.