5.4 形状发现过程
有了前面的准备工作,我们就可以实现形状发现任务了。
先设定参数:
特征指数名组合记为Nm
Nm=[f1,f2,…,fm]
其中fi是第i个特征指数名。
特征指数组合对应的取值范围记为Ag。
Ag=[[a(1),b(1)], [a(2), b(2)],…, [a(m), b(m)]]
其中a(i) ,b(i)) 分别是第i个特征指数的取值下限和取值上限。
1. 发现形状过程可以分为三步:投射参数
将Ag中的所有参数投射到相应特征指数值上,投射结果记为Vl。
Vl=[[ F(a(1)), F(b(1))], [[F(a(2)), F(b(2))],…, [[F(a(m)), F(b(m))]]
其中F(…)是投射函数。
2. 筛选指定形状曲线段Sp’
指定形状曲线段索引Id
Id=T.pselect@a(F(a(1))≤f(1)≤F(b(1))&&…&& F(a(m))≤f(m)≤F(b(m)))
连续索引属于一段要发现的形状,索引不连续则属于另一段。
连续索引段Ids
Ids=Id.group(~-#)
其中f(i)是第i个特征指数的取值。
3. 按曲线段长度筛选
按特征指数筛选后,特征指数范围可能满足了,但曲线段长度可能过短或过长,所以要按长度范围筛选曲线段。
Sp’(1)=[xa,xa+1,…,xa+a’-1]
Sp’(2)= [xb,xb+1,…,xb+b’-1]
…
Sp’(p)= [xp,xp+1,…,xp+p’-1]
其中Sp’(j)是筛选出指定形状的第j段曲线。a’,b’,…是对应曲线段的长度。
将形状长度范围记为dut
dut=[d1,d2]
满足长度范围的连续索引段Ids’
Ids’= Ids.select(d1≤len(Sp’(j))≤d2)
指定形状的曲线段Sp
Sp=Ids’.(X(~))
第1步投射参数不是必须的,比如筛选原值在[90,95]的曲线段时,只要设置原值这一特征,然后按范围筛选即可。特征指数主要表述相对大小,设置为[-1,1]之间的数就可以了。