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.