then
'msgbox(\当前的1 x2:\当前的1 x3:\当前的nlast:\exit do else x1=x2 x2=x3
Do While ( i <= nlast)
If (vbfenxing(i) <> 0 ) then exit do end if i = i + 1 Loop x3 = i i = x3 + 1 end if loop '()
i = x3 + 1
xianbegin = x1 tewei = x2
if (x3<=nlast) then
If (vbfenxing(x1) = 1) Then xianfang = -1
'以顶分型开始,线段方向向下 vbted(tewei) = vbl(tewei) vbteg(tewei) = vbh(x3) Else
xianfang = -1
'以底分型开始,线段方向向上 vbteg(tewei) = vbl(tewei) vbted(tewei) = vbh(x3) End If
vbtegx(tewei) = xianfang
'定义出第一个特征序列,及关系即:是上升的还是下降的 end if
'tewei = x4 tenumber = 0 i = x3 + 1
vbxian(xianbegin) = vbfenxing(xianbegin) vbxiang(xianbegin) = vbh(xianbegin) vbxiand(xianbegin) = vbl(xianbegin) 'vbxiang(xianbegin) = gg 'vbxiand(xianbegin) = dd For m = i To nlast '(2)
Do While ( m <= nlast)
If (vbfenxing(m) <> 0 ) then exit do end if
m = m + 1 Loop x4 = m m = x4 + 1
Do While ( m <= nlast)
If (vbfenxing(m) <> 0 ) then exit do end if
m = m + 1 Loop x5 = m m = x5 + 1 newtewei = x4
if ( x5 > nlast) then exit for
end if
If (xianfang = -1) Then
'xianfang=-1 以顶分型开始,线段方向向下 vbted(newtewei) = vbl(newtewei) vbteg(newtewei) = vbh(x5) Else
'xianfang=1 以底分型开始,线段方向向上 vbteg(newtewei) = vbh(newtewei) vbted(newtewei) = vbl(x5) End If
'判断方向/缺口及包含
vbtegx(newtewei) = xianfang tenumber = 1 + tenumber 'if (tenumber >= 1) then
If (vbted(newtewei) > vbted(tewei) And vbteg(newtewei) > vbteg(tewei) Or vbted(newtewei) < vbted(tewei) And vbteg(newtewei) < vbteg(tewei)) Then '(3)向上或向下即:不是包含
If (vbted(newtewei) > vbted(tewei) And vbteg(newtewei) > vbteg(tewei)) Then '(4) 特征序列的方向向上 tefang = 1 Else
tefang = -1
'(4)特征序列的方向向下 End If
vbtegx(newtewei) = tefang If (xianfang <> tefang) Then
'(5)线段方向与特征序列的方向不同,即:出现了特征序列的分型 线段方向与特征序列关系不同,出现分型,
'首先判断自tewei(x2)开始的三笔是否构成线段,构成线段则下一步,不构成线段返回原线段继续,再判断第一个(tewei的前一个特征序列)与第二个(tewei)之间是否有缺口
if ( vbweibi(x4)=0 or vbweibi(x3)=0 or vbweibi(x4)=1 or vbweibi(x3)=2 ) then
'if ( vbweibi(x6)=0 or vbweibi(x5)=0 ) then
'{}构成线段,新线段从newtewei开始,原线段在newtewei处结束 还要判断顶是否大于底
if (tenumber <= 1) then
'(tenumber)此情况发生在三笔构成线段但线段的两端不是其最高点或最低点的情况,当下只有三笔不能开始新线段否则就出现一笔构成一个线段的现象了 i=m
Do While ( i <= nlast)
If (vbfenxing(i) <> 0 ) then exit do end if
i = i + 1 Loop x6 = i
if ( x6 > nlast) then
'msgbox( \当前的x6:\当前的nlast:\exit for end if
'再判断x5,x6是否构成线段,构成则新线段否则原线段继续
if ( vbweibi(x6)=0 or vbweibi(x5)=0 or vbweibi(x6)=1 or vbweibi(x5)=2 ) then '开始 构成新线段,新线段在newtewei开始xianbegin=newtewei
vbxian(xianbegin) = vbfenxing(xianbegin) vbxiang(xianbegin) = vbh(xianbegin) vbxiand(xianbegin) = vbl(xianbegin) x2=x5 x3=x6 tewei=x2 m = x6 + 1
If (vbfenxing(xianbegin) = 1) Then xianfang = -1
'以顶分型开始,线段方向向下 vbted(tewei) = vbl(tewei) vbteg(tewei) = vbh(x3) Else
xianfang = 1
'以底分型开始,线段方向向上 vbteg(tewei) = vbh(tewei) vbted(tewei) = vbl(x3) End If
vbtegx(tewei) = xianfang tenumber = 0 else
'else 原线段继续 tewei=newtewei
vbtegx(newtewei) = xianfang x2=x4 x3=x5
m = x5 + 1 end if '开始结束 else
'(tenumber) tenumber = 0 bao = 0
xianbegin = tewei
vbxian(xianbegin) = vbfenxing(xianbegin) vbxiang(xianbegin) = vbh(xianbegin) vbxiand(xianbegin) = vbl(xianbegin) x2 = X3 x3 = x4 tewei = x2
If (vbfenxing(xianbegin) = 1) Then xianfang = -1
'以顶分型开始,线段方向向下 vbted(tewei) = vbl(tewei) vbteg(tewei) = vbh(x3) Else
xianfang = 1
'以底分型开始,线段方向向上 vbteg(tewei) = vbh(tewei) vbted(tewei) = vbl(x3) End If
vbtegx(tewei) = xianfang m = x3+1 end if
'(tenumber) else
'{}不构成线段,原线段继续 tewei=newtewei
vbtegx(newtewei) = xianfang x2=x4 x3=x5
m = x5 + 1 end if '{} Else
'(5)线段方向与特征序列关系相同,未出现分型tewei的值更新为newtewei 'tenumber = 1+tenumber vbtegx(newtewei) = xianfang tewei=newtewei x2=x4 x3=x5