function vwHist = calcVisualWordHist(descriptors, centroids) % Calculate necessary sizes nCentroids = size(centroids, 1); nDescs = size(descriptors, 1); % Calculate all distances for each descriptor to each cluster distances = zeros([nCentroids nDescs]); for i=1:nDescs distances(:, i) = sqrt(sum(bsxfun(@minus, centroids, descriptors(i, :)) .^ 2, 2)); end % Make histogram and normalize [minVals minIdx] = min(distances); %#ok vwHist = histc(minIdx, 1:nCentroids)'; vwHist = vwHist ./ nDescs; end