-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathendpoints.m
125 lines (114 loc) · 1.45 KB
/
endpoints.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
function [B2,E2,B1,E1]=endpoints(Er,Zr,ITU,ITR,IZCT)
Le=length(Er);
% Stage 1
flag=1;
c=1;
B1=1;
while (flag)
while (Er(c)<=ITR)
c=c+1;
end
B1=c;
flag=0;
for c=B1+1:B1+3
if c>Le
break;
end
if Er(c)<ITU
flag=1;
break;
end
end
if flag
c=B1+1;
else
break;
end
end
% Stage 2
flag=1;
c=length(Er);
E1=c;
while (flag)
while (Er(c)<=ITR)
c=c-1;
end
E1=c;
flag=0;
for c=E1-1:-1:E1-3
if c<1
break;
end
if Er(c)<ITU
flag=1;
break;
end
end
if flag
c=E1-1;
else
break;
end
end
% Stage 3
sumZ=0;
ind=[];
for i=B1:-1:B1-25
if i<1
break;
end
if Zr(i)>IZCT
sumZ=sumZ+1;
ind=[i ind];
end
end
if sumZ>=4
B2=ind(1);
else
B2=B1;
end
% Stage 4
sumZ=0;
ind=[];
for i=E1:E1+25
if i>Le
break;
end
if Zr(i)>IZCT
sumZ=sumZ+1;
ind=[ind i];
end
end
if sumZ>=4
E2=ind(end);
else
E2=E1;
end
% Stage 5
i=B2-1;
while (1)
if i<1
i=1;
break;
end
if Er(i)>ITR
B2=i;
else
break;
end
i=i-1;
end
i=E2+1;
while(1)
if i>Le
i=Le;
break;
end
if Er(i)>ITR
E2=i;
else
break;
end
i=i+1;
end
end