Il modo più pulito che so come farlo è creando una matrice sparsa in base ai tuoi dati e indici:
[M,N] = size(Indices); indmax = max(Indices(:));
Result = sparse(repmat(1:N,M,1),Indices,Data,indmax,indmax);
Spero che qualcuno venga e ci mostri un metodo ancora più pulito.