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