python/makezero.py
changeset 0 0efde00f9229
equal deleted inserted replaced
-1:000000000000 0:0efde00f9229
       
     1 #!/usr/bin/python
       
     2 
       
     3 import pylab as pl
       
     4 
       
     5 def makezero(B, gap=None):
       
     6     B = pl.array(B)   # B is a vector!
       
     7     B = B.squeeze()
       
     8     if len(B.shape)!=1:
       
     9         print "B must be a vector!"
       
    10         exit()
       
    11     if gap == None:
       
    12         gap = 1e8
       
    13     temp = B[pl.find(B)]
       
    14     temp = -pl.sort(-abs(temp))
       
    15     ratio = temp[:-1]/pl.float32(temp[1:])
       
    16     if pl.find(ratio>gap).size != 0:
       
    17         min_ind = min(pl.find(ratio>gap))
       
    18         our_eps = temp[min_ind+1]
       
    19         zeroind = pl.find(abs(B)<=our_eps)
       
    20         B[zeroind] = 0
       
    21     return pl.atleast_2d(B) 
       
    22 
       
    23 if __name__== "__main__":
       
    24     B = pl.array([2,3,.000000000004,5,.00006])
       
    25     print B
       
    26     B = makezero(B)
       
    27     print B
       
    28