void Projection1D(vector & data, vector strides, vector levels, vector sizes, int size, int dim) { int ndim = levels.size(); int dsize; int stride; // Interate through 'start' indicies and project vector zsize = sizes; zsize.array()-1; dsize = size*1.0/sizes(dim); vector bit(ndim); bit.fill(0); stride = strides(dim); for(int i=0; i < sizes(dim); i++) { int indexstart = bit.dot(strides); Projection1DSlice(data, indexstart, stride, dsize, levels(dim)); gridutils::IncreaseBit(bit, zsize, dim); } data = data.array()*gridutils::PowInt(2,levels(dim)-1); }