The discrete wavelet packet transform (DWPT) contains a multitude of disjoint dyadic decompositions representing an ensemble of different bases. Best basis selection is an attempt to isloate one such basis in an optimal way.
1  wavBestBasis(costs)

costs 
a numeric vector containing the costs for each crystal in a DWPT in C(W(0,0)), C(W(1,0)), C(W(1,1)), C(W(2,0)), ..., C(W(J,2^J1)) order where C() is the additive cost functional and W(j,n) is the DWPT crystal at level j and oscillation (local node) index n for j=1,...,J. 
Ronald R. Coifman and Mladen Victor Wickerhauser, “EntropyBased Algorithms for Best Basis Selection", IEEE Transactions on Information Theory, 38(2), pp. 713–718, 1992.
D. B. Percival and A. T. Walden, Wavelet Methods for Time Series Analysis, Cambridge University Press, 2000.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21  ## calculate the DWPT of the difference of the
## atomic clock series
W < wavDWPT(diff(atomclock), n.level=6)
## define an entropy cost functional
"entropy" < function(x){
iz < which(x==0)
z < x^2 * log(x^2)
if (length(iz))
z[iz] < 0
sum(z)
}
## create the cost vector
C < unlist(lapply(W$data, entropy))
## calculate the bets basis
z < wavBestBasis(C)
## print the crystals of the best basis
paste("W(", z$level, ",", z$osc, ")", sep="")

Questions? Problems? Suggestions? Tweet to @rdrrHQ or email at ian@mutexlabs.com.
Please suggest features or report bugs with the GitHub issue tracker.
All documentation is copyright its authors; we didn't write any of that.