To check out this repository please hg clone the following URL, or open the URL using EasyMercurial or your preferred Mercurial client.

Statistics Download as Zip
| Branch: | Revision:

root / _beattracker / adapt_thresh.m

History | View | Annotate | Download (949 Bytes)

1
function [dfout,m] = adapt_thresh(df,pre,post);
2

    
3

    
4

    
5

    
6
df = df(:)';
7
% uses juan's adaptive median threshold
8

    
9
alpha = 9;
10
thresh=0.033;
11
fn = @mean;
12

    
13
if(nargin<2)
14
    pre = 8;
15
    post = 7;
16
end
17

    
18
%df = df-min(df);
19
%alpha norm
20
%df = df/real(mean(abs(df+eps).^alpha).^(1/alpha));   
21

    
22

    
23

    
24

    
25
% low pass filtering
26

    
27
%[b,a]=butter(2,0.28);
28

    
29
%b = [0.1600 0.3200 0.1600];
30
%a = [1.0000 -0.5949 0.2348];
31

    
32

    
33
%df=filtfilt(b,a,df);
34

    
35

    
36
% median threshold
37

    
38
N=length(df);
39

    
40
for i=1:min(post,N)
41
	k=min(i+pre,N);
42
	m(i)=feval(fn,df(1:k));
43
  %  m2(i) = feval(@mean,df(1:k));
44
end
45

    
46
if N>(post+pre)
47
	m=[m feval(fn,buffer(df,post+pre+1,post+pre,'nodelay'))];
48
end
49

    
50
% if N>(post+pre)
51
% 	m2=[m2 feval(@mean,buffer(df,post+pre+1,post+pre,'nodelay'))];
52
% end
53

    
54
for i=N+(1-pre:0)
55
	j=max(i-post,1);
56
	m(i)=feval(fn,df(j:end));
57
%    m2(i)=feval(@mean,df(j:end));
58
end
59

    
60
%df = (df- m*thresh);
61
df = df-m;
62

    
63
dfout = (df>0).*df;
64
%dfout = df;