0
|
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 |
|