Wavelet packets provide an adaptive decomposition that overcomes limitations of the discrete wavelet transform (DWT). In wavelet packets, signal decomposition using high-pass and low-pass filters is applied recursively to both low-pass and high-pass outputs, allowing more flexible time-frequency analysis. This results in a redundant dictionary with increased flexibility but also higher computational costs. Pruning algorithms are used to select an optimal subset of bases for a given application based on cost functions related to properties like sparsity, entropy, or energy concentration.