5.5 形状发现举例

 

1. 筛选取值在[90,95]之间的曲线段

不需要计算特征指数,也不用投射参数。

参数设置:

特征指数名组合Nm

Nm=[“Value”]

取值范围记Ag

Ag=[[90,95]]

形状长度范围dut

dut=[100,10000]

SPL例程


A B
1 =file(“1Ddata.csv”).import@tc() /包含时间序列X的序表
2 [Value] /Nm
3 [[90,95]] /Ag
4 [100,10000] /dut
5 =A2.(~/">="/"number("/$[A3(]/#/$[)(1)]/")"/"&&"/~/"<="/"number("/$[A3(]/#/$[)(2)]/")").concat("&&") /特征指数筛选条件
6 =A1.pselect@a(eval(A5)) /特征指数索引Id
7 =A6.group@u(~-#) /索引相邻的是一段Ids
8 =A7.select(~.len()>=A4(1)&&~.len()<=A4(2)) /按长度过滤Ids’
9 =A1.(Value) /时间序列X
10 =A8.(A9(~)) /指定形状Sp

计算结果示例:

时间序列X

..

横轴是索引,纵轴是X取值

..

图中蓝色段是发现的形状。

2. 上升的曲线段

需要用到升降指数L,计算L前还要拟合主线M,需要参数投射。

参数设置:

观察级别K’

K’=600

特征指数名组合Nm

Nm=[“L”]

取值范围记Ag

Ag=[[0.1,1]]

形状长度范围dut

dut=[100,10000]

SPL例程


A B
1 =file(“1Ddata.csv”).import@tc() /包含时间序列X的序表
2 600 /K'
3 [L] /Nm
4 [[0.1,1]] /Ag
5 [100,10000] /dut
6 =A1.(Value) /时间序列X
7 =2*power(4,lg(A2/15,2)-1) /平衡系数K
8 =fit_main(A6,A7) /主线M
9 =A2/40 /指数区间k
10 =Lift(A8,A9) /升降指数L
11 =[A10.min(),A10.max()] /特征指数最大最小值
12 =[A11]
13 =A4.((idx=#,~.(arg_throw(~,A12(idx)(2),A12(idx)(1))))) /参数投射
14 =A1.derive(A10(#):L) /序表T
15 =A3.(~/">="/"number("/$[A13(]/#/$[)(1)]/")"/"&&"/~/"<="/"number("/$[A13(]/#/$[)(2)]/")").concat("&&") /特征指数筛选条件
16 =A14.pselect@a(eval(A15)) /特征指数索引Id
17 =A16.group@u(~-#) /索引相邻的是一段Ids
18 =A17.select(~.len()>=A5(1)&&~.len()<=A5(2)) /按长度过滤Ids'
19 =A18.(A6(~)) /指定形状Sp

计算结果示例:

..

3. 振频很高的曲线段

需要用到振频指数Vf,计算Vf前要拟合主线M和波动曲线Wv,需要参数投射。

参数设置:

观察级别K’

K’=600

特征指数名组合Nm

Nm=[“L”]

取值范围记Ag

Ag=[[0.1,1]]

形状长度范围dut

dut=[100,10000]

SPL例程


A B
1 =file(“1Ddata.csv”).import@tc() /包含时间序列X的序表
2 600 /K'
3 [Vf] /Nm
4 [[0,1]] /Ag
5 [100,10000] /dut
6 =A1.(Value) /时间序列X
7 =2*power(4,lg(A2/15,2)-1) /平衡系数K
8 =fit_main(A6,A7) /主线M
9 =A2/40 /指数区间k
10 =A6--A8 /波动曲线Wv
11 =VFre(A10,A9) /振频指数Vf
12 =[A11.min(),A11.max()] /特征指数最大最小值
13 =[A12]
14 =A4.((idx=#,~.(arg_throw(~,A13(idx)(2),A13(idx)(1))))) /参数投射
15 =A1.derive(A11(#):Vf) /序表T
16 =A3.(~/">="/"number("/$[A14(]/#/$[)(1)]/")"/"&&"/~/"<="/"number("/$[A14(]/#/$[)(2)]/")").concat("&&") /特征指数筛选条件
17 =A15.pselect@a(eval(A16)) /特征指数索引Id
18 =A17.group@u(~-#) /索引相邻的是一段Ids
19 =A18.select(~.len()>=A5(1)&&~.len()<=A5(2)) /按长度过滤Ids'
20 =A19.(A6(~)) /指定形状Sp

计算结果示例:

..

4. 振荡发散的曲线段

需要用到振幅升降指数VaL和振频升降指数VfL,计算它们前要拟合主线M、波动曲线Wv、振幅指数Va、振频指数Vf、振幅主线VaM、振频主线VfM,需要参数投射。

参数设置:

观察级别K’

K’=600

特征指数名组合Nm

Nm=[“VaL”, “VfL”]

取值范围记Ag

Ag=[[0,1],[-0.5,1]]

形状长度范围dut

dut=[100,10000]

SPL例程


A B
1 =file(“1Ddata.csv”).import@tc() /包含时间序列X的序表
2 600 /K'
3 [VaL, VfL] /Nm
4 [[0,1],[-0.5,1]] /Ag
5 [100,10000] /dut
6 =A1.(Value) /时间序列X
7 =2*power(4,lg(A2/15,2)-1) /平衡系数K
8 =fit_main(A6,A7) /主线M
9 =A2/40 /指数区间k
10 =A6--A8 /波动曲线Wv
11 =Amplitude(A10,A9) /振幅指数Va
12 =fit_main(A11,A7) /振幅主线VaM
13 =Lift(A12,A9) /振幅升降指数VaL
14 =VFre(A10,A9) /振频指数Vf
15 =fit_main(A14,A7) /振频主线VfM
16 =Lift(A15,A9) /振频升降指数VfL
17 =[A13.min(),A13.max()] /振幅升降指数最大最小值
18 =[A16.min(),A16.max()] /振频升降指数最大最小值
19 =[A17,A18] /特征指数最大最小值
20 =A4.((idx=#,~.(arg_throw(~,A19(idx)(2),A19(idx)(1))))) /参数投射
21 =A1.derive(A13(#):VaL,A16(#):VfL) /序表T
22 =A3.(~/">="/"number("/$[A20(]/#/$[)(1)]/")"/"&&"/~/"<="/"number("/$[A20(]/#/$[)(2)]/")").concat("&&") /特征指数筛选条件
23 =A21.pselect@a(eval(A22)) /特征指数索引Id
24 =A23.group@u(~-#) /索引相邻的是一段Ids
25 =A24.select(~.len()>=A5(1)&&~.len()<=A5(2)) /按长度过滤Ids'
26 =A25.(A6(~)) /指定形状Sp

计算结果示例:

..