code: public double[] aggregate(ArrayList<double[]> descriptors) throws Exception {
  		double[] multiVlad = new double[vectorLength];
  		int vectorShift = 0;
  		for (int i = 0; i < vladAggregators.length; i++) {
  			double[] subVlad = vladAggregators[i].aggregate(descriptors);
  			if (normalizationsOn) {
  				Normalization.normalizePower(subVlad, 0.5);
  				Normalization.normalizeL2(subVlad);
  			}
  			System.arraycopy(subVlad, 0, multiVlad, vectorShift, subVlad.length);
  			vectorShift += vladAggregators[i].getNumCentroids() * vladAggregators[i].getDescriptorLength();
  		}
  		// re-apply l2 normalization on the concatenated vector, if we have more than 1 vocabularies
  		if (vladAggregators.length > 1 && normalizationsOn) {
  			Normalization.normalizeL2(multiVlad);
  		}
  		return multiVlad;
  	}
docs: Takes as input an ArrayList of double arrays which contains the set of local descriptors of an image.
  Returns the multiVLAD representation of the image using the codebooks supplied in the constructor.
  
  @param descriptors
  @return the multiVLAD vector
  @throws Exception