Zero out "small" entries subject to structural rank
A = gangstr(M,tol)
A = gangstr(M,tol) creates matrix A of full structural rank such that A is M except that elements of M that are relatively "small," based on tol, are zeros in A. The algorithm decreases tol, if needed, until sprank(A) = sprank(M). M must have at least as many columns as rows. Default tol is 1e-2.
gangstr identifies elements of M that are relatively less than tol by first normalizing all the rows of M to have norm 1. It then examines nonzeros in M in a columnwise fashion, replacing with zeros those elements with values of magnitude less than tol times the maximum absolute value in that column.