function [B]   =  SVD_shrink(I, svdMethod, tau, delta )

rank_B = 3;
switch lower(svdMethod)
    case 'svdlibc'
        [U, diagS, V] = svdlibc(I, rank_B+1);
    case 'propack'
        [U,S,V] = lansvd(I,rank_FPN+1,'L');
        diagS = diag(S);
    case 'svds'
        [U, S, V] = svds(I, rank_B+1, 'L');
        diagS = diag(S);
    otherwise
        [U,S,V] = svd(I,0);
        diagS = diag(S);
end
temp    = (diagS-tau/delta).*double( (diagS-tau/delta) > 0 );
B       = U * diag(temp) * V';

