% get K subsets of gradients from corresponding K given gradient sets, such that
% gradients in each subset are evenly distributed.
%
% USAGE:
% [gradCell,grb_result,indexMatrix] = OptimalSamplingMultiSubsetsFromDifferentSets(gradAll, param, grbParam)
%
% INPUT
% gradAll : K gradient matrix cell, where each element is a N_kx3 gradient matrix for a single shell.
% param.numSamples : Kx1 or 1xK vector which gives number of samples in K subsets
% param.w : weight for single shell term. 0<w<1. Default value is 0.5.
% param.ModelFile : string. If set, write the model into a file
%
% grbParam.start : a warm start if provided
% grbParam.TimeLimit : time limit to terminate the program
% grbParam.MIPFocus : MIPFocus
%
% OUTPUT
% gradCell : Kx1 cell, each element is a gradient matrix.
% grb_result : output from GUROBI
%
%
% Reference:
% 1. "Single- and Multiple-Shell Uniform Sampling Schemes for Diffusion MRI Using Spherical Codes",
% Jian Cheng, Dinggang Shen, Pew-Thian Yap, Peter J. Basser, IEEE Transactions on Medical Imaging, 2017.
% 2. "Designing Single- and Multiple-Shell Sampling Schemes for Diffusion MRI Using Spherical Code",
% Jian Cheng, Dinggang Shen, Pew-Thian Yap, MICCAI 2014.
%
% Copyright (c) 2013, Jian Cheng <jian.cheng.1983@gmail.com>
%