Matlab 使用'创建间隔;datenum';

Matlab 使用'创建间隔;datenum';,matlab,Matlab,我正在为等距时间序列创建限制,我需要能够更改时间间隔(1分钟、5分钟、10分钟、15分钟、30分钟、60分钟等)。我的界限是市场的开盘和收盘时间。我所研究的股票在第二天的17点到16点15分之间交易。 以下是我正在使用的: timevec=datenum(2013,1,1,17,0:1*interval:1395,0)'; % It creates a time vector from 1-1-2013 17.00.00 to 1-2-2013 16.15.00 % spaced by "1m

我正在为等距时间序列创建限制,我需要能够更改时间间隔(1分钟、5分钟、10分钟、15分钟、30分钟、60分钟等)。我的界限是市场的开盘和收盘时间。我所研究的股票在第二天的17点到16点15分之间交易。 以下是我正在使用的:

timevec=datenum(2013,1,1,17,0:1*interval:1395,0)';
% It creates a time vector from 1-1-2013 17.00.00 to 1-2-2013 16.15.00 
% spaced by "1min*interval"
使用的公式非常简单,但如果我需要使用10分钟或30分钟,就会出现问题,结果是:
(10分钟)

(30分钟)

我想要的是10分钟的情况下额外的间隔16:20:00,30分钟的情况下额外的间隔16:30:00。我能想到的唯一解决方案是将边界移动到16:30,并添加一个if语句,以在不需要时删除额外的观察值,或将边界保持在16:15:00,并添加一个if语句,以在需要时添加额外的观察值。

有没有办法用一行代码来处理这两种情况?

Matlab创建的范围使所有值都在限制范围内。如果要在限制之外添加一个附加值,可以通过在末尾添加几乎一个间隔长度来修改上限:

step = 15;
1:step:100+0.99*step

ans =
     1    16    31    46    61    76    91   106

+1对于一个具有示例、工作代码和尝试解决方案描述的精心设计的问题!显然,当使用60分钟作为间隔时,它输出25小时,同样重复第一个。虽然在使用dd-mm-yyyy-HH:mm:SS时没有问题,但在只对HH:mm:SS感兴趣时可能会有问题(如我的情况)。我用一个简单的
timevec=unique(timevec)解决了这个问题
有没有办法不用添加行来解决最后一个小问题?@Gio:为什么不将范围创建为
datenum(start):datenum(step):datenum(end)
(并添加我文章中解释的修改)?这样,您将拥有更干净的代码。顺便说一句:多行有时可以大大提高可读性。
02-Jan-2013 15:30:00
02-Jan-2013 16:00:00
step = 15;
1:step:100+0.99*step

ans =
     1    16    31    46    61    76    91   106