- [1]将2个时间序列(datenum array)按照最小时间间隔同步, 使用了mex加速
- [2] 将torig(datenum),data(double) 组成的时间序列, 同步到新的时间戳(tTarget下). 得到xnew
- [3] 计算fcn(d(sti(1):edi(1))), fcn(d(sti(2):edi(2))),… 结果保存在x里. 当fcn为max/min等有ia返回的, 保存在ia里
- [4]寻找datanum序列中>=st,<=ed 的点序号, 输出到stidx, edidx中. 没找到为-1
- [5]寻找dataenum序列(t)中 比 idx位置 ws窗内的点的序号
- [6]在线计算movsum
- [7]在线计算movmax
- [8]在线计算movhampel
- [9]对时间序列时间窗内的数据,施加函数fcn, 然后按offset=1,不断移动窗, 直到序列终点
对时间序列的一系列处理函数.
[1]将2个时间序列(datenum array)按照最小时间间隔同步, 使用了mex加速
tIdxs=sync2seriesbyMindist(tTarget,tOrig,minDist,isFillMissing)
% input:
% tTarget:需要同步到的目标时间戳序列(datenum),N x 1 double. 必须是升序排列的
% tOrig:待同步的时间戳序列(datenum), M x 1 double 必须是升序排列的
% minDist:最小门限 一般为minutes(5)/days(1). 1 x 1 double
% isFillMissing: 是否对NaN进行填充最近值.
% output:
% tIdxs: 返回同步序列对应在原序列B中的序号. -1=未找到符合条件的时间点. N x 1 double
[2] 将torig(datenum),data(double) 组成的时间序列, 同步到新的时间戳(tTarget下). 得到xnew
xnew=sync_x2y(tTarget,tOrig,data,minDist,isFillMissing)
% input:
% tTarget:需要同步到的目标时间戳序列(datenum),N x 1 double. 必须是升序排列的
% tOrig:待同步的时间戳序列(datenum), M x 1 double 必须是升序排列的
% data: 与tOrig对应的值序列.
% minDist:最小门限 一般为minutes(5)/days(1). 1 x 1 double
% isFillMissing: 是否对NaN进行填充最近值.
% output:
% xnew: 和tTarget等长. 如果在tOrig在tTarget中找到了对应, 则xnew=data中对应的点的值. 否则, torig为nan.
[3] 计算fcn(d(sti(1):edi(1))), fcn(d(sti(2):edi(2))),… 结果保存在x里. 当fcn为max/min等有ia返回的, 保存在ia里
[x,ia]=split_apply_fcn(d,sti,edi,fcn)
% d, sti=[1;3;5], edi=[2;4;6]. fcn=@max , x=max(d(1:3)) 以此类推.
[4]寻找datanum序列中>=st,<=ed 的点序号, 输出到stidx, edidx中. 没找到为-1
[stidx,edidx]=search_x_within_range(t,st,ed)
[5]寻找dataenum序列(t)中 比 idx位置 ws窗内的点的序号
outidx=search_x_in_timewin(t,idx,ws)
% 寻找t中 比 idx位置 ws窗内的点的序号
% input:
% t, nx1 datenum 序列; idx, mx1 double序列, idx=1表示t中的第一个点的时间, idx=2表示第二个点, 以此类推; ws 1x1 double 时间窗大小, ws为正时为往右找数据时
% 间小于t+ws的最后一个点的序号, ws为负时为往左找比t-ws大的最后一个点的序号
% output: outidx, mx1 double序列, 找到的点的序号
% test :
% a=[1:10]; b=[3,5]; c=4;
% d=tsfun.search_x_in_timewin(a',b',c);
[6]在线计算movsum
dmax=movsum_by_buf(tn,dm,winsize,bufsize)
[7]在线计算movmax
dmax=movmax_by_buf(tn,dm,winsize,bufsize)
[8]在线计算movhampel
[xf,xi,xmedian,xsigma]=movhampel(x,range,nsigma)
[9]对时间序列时间窗内的数据,施加函数fcn, 然后按offset=1,不断移动窗, 直到序列终点
dout=movfcn_in_timewin(t,d,timewindow,fcn)