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 |
计算结果示例: