Hi everyone,
I am trying to implement an algorithm that involves a pruning of a large sparse matrix. The pruning scheme should keep the k largest values (all nonzero values are positive) in each column of the sparse matrix M.
My current solution is:
function Mp = pruning(M,k)[i,j,v] = find(M);t = sortrows([i j v],[2 -3]);dzero = cumsum([0;diff(t(:,2))]==0);dz = [1;diff(t(:,2))]>0;dd = dzero.*dz;for r = 2:numel(dd); dd(r) = max(dd([r-1 r])); end;I = (dzero-dd+1) <= k;Mp = sparse(t(I,1),t(I,2),t(I,3),size(M,1),size(M,2));
Do you have better solutions (that avoid the loop)?
Thanks, W.
Best Answer