neville
语法
neville(X, Y, resampleRule, [closed='left'], [origin='start_day'],
[outputX=false])
详情
该函数根据 resampleRule, closed, origin 确定的采样规则,对 X 进行重采样操作。并根据重采样后的 X,对 Y 进行 neville 插值(Neville Interpolation)。
若不指定 outputX,仅返回一个对 Y 插值后的向量。若指定 outputX = true,则返回一个 tuple,其第一个元素为 X 重采样后的向量,第二个元素为对 Y 插值后的向量。
参数
返回值
DOUBLE 类型向量或元组。
例子
neville([2016.02.14 00:00:00, 2016.02.15 00:00:00, 2016.02.16 00:00:00], [1.0, 2.0, 4.0], resampleRule=`60min);输出返回:[1,1.0217,1.0451,1.0703,1.0972,1.1259,1.1562,1.1884,1.2222,1.2578, 1.2951,1.3342,1.375,1.4175,1.4618,1.5078,1.5556,1.605,1.6562,1.7092, 1.7639,1.8203,1.8785,1.9384,2,2.0634,2.1285,2.1953,2.2639,2.3342, 2.4062,2.48,2.5556,2.6328,2.7118,2.7925,2.875,2.9592,3.0451,3.1328, 3.2222,3.3134,3.4062,3.5009,3.5972,3.6953,3.7951,3.8967,4]
// 数据点精确落在 3min 整点边界上
X = 2022.01.01T00:00:00 + [0, 3, 6, 9] * 60 // 00:00, 00:03, 00:06, 00:09
Y = [1.0, 3.0, 7.0, 13.0]
// closed='left'(默认):区间 [t, t+3min),00:03 归入第二个桶的起点
neville(X, Y, `3min, closed=`left, outputX=true)
// output:([2022.01.01T00:00:00,2022.01.01T00:03:00,2022.01.01T00:06:00,2022.01.01T00:09:00],[1,3,7,13])
// closed='right':区间 (t, t+3min],00:03 归入第一个桶的终点
// 桶划分基准改变,插值曲线随之变化
neville(X, Y, `3min, closed=`right, outputX=true)
// output:([2021.12.31T23:57:00,2022.01.01T00:00:00,2022.01.01T00:03:00,2022.01.01T00:06:00],[,1,3,7])// 数据从 00:00:30 开始,不与整分对齐
X = 2026.01.01T00:00:30 + (0..4) * 60 // 00:00:30, 00:01:30, ..., 00:04:30
Y = [2.0, 4.0, 7.0, 11.0, 16.0]
// origin='start_day':从当天零点 00:00:00 对齐
// 重采样 X: 00:00:00, 00:01:00, 00:02:00, 00:03:00, 00:04:00
neville(X, Y, `1min, origin=`start_day, outputX=true)
// output:([2022.01.01T00:00:00,2022.01.01T00:01:00,2022.01.01T00:02:00,2022.01.01T00:03:00,2022.01.01T00:04:00],[,2.875,5.375,8.875,13.375])
// origin='start':从第一个数据点 00:00:30 对齐
// 重采样 X: 00:00:30, 00:01:30, 00:02:30, 00:03:30, 00:04:30
neville(X, Y, `1min, origin=`start, outputX=true)
// output:([2022.01.01T00:00:30,2022.01.01T00:01:30,2022.01.01T00:02:30,2022.01.01T00:03:30,2022.01.01T00:04:30],[2,4,7,11,16])
// origin=自定义时间戳:从 00:00:10 对齐
// 重采样 X: 00:00:10, 00:01:10, 00:02:10, 00:03:10, 00:04:10
neville(X, Y, `1min, origin=2026.01.01T00:00:10, outputX=true)
//output:([2022.01.01T00:00:10,2022.01.01T00:01:10,2022.01.01T00:02:10,2022.01.01T00:03:10,2022.01.01T00:04:10],[,3.222222222222222,5.88888888888889,9.555555555555555,14.222222222222223])X = [2016.02.14T00:00:00, 2016.02.15T00:00:00, 2016.02.16T00:00:00]
Y = [1.0, 2.0, 4.0]
// outputX=false(默认):只返回插值后的 Y 向量
neville(X, Y, `60min)
// outputX=true:返回 tuple,[0] 为重采样后的时间戳,[1] 为插值 Y
result = neville(X, Y, `60min, outputX=true)
result[0] // 每小时一个时间戳,共 49 个
result[1] // 对应插值 Y 值,共 49 个