1. A method for coding multi-dimensional data using a codebook of basis functions, comprising: (a) applying a transform to the multi-dimensional data to create transform coefficients, wherein the multi-dimensional data has a total number of dimensions greater than a total number of dimensions of the codebook of basis functions; (b) forming groups of the transform coefficients; and (c) coding different ones of the groups of the transform coefficients using matching pursuits coding with non-identical dictionaries of basis functions from the codebook of basis functions.