本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

isregular

确定时间表关于时间或日历单位是否规则

说明

示例

如果时间表 TT 关于指定的时间或日历单位是规则的,则 tf = isregular(TT,timeComponent) 返回 1 (true)。否则,将返回 0 (false)。如果时间表的行时间以相同的时间步单调递增或递减,则时间表是规则的。

  • 如果 TT 的行时间是 datetime 值,则它们之间的时间步关于日历单位(例如,月)可能是规则的,但关于确切的历时可能是不规则的。使用 timeComponent 输入参数指定时间或日历单位。

    例如,如果行时间关于每月的 datetime 值是规则的,而 timeComponent'month',则 isregular 返回 1。但是,如果 timeComponent'time',则 isregular 返回 0,因为不同月份表示不同时间长度。

  • 如果行时间是 duration 值,则将 timeComponent 指定为 'time' 或使用下一个语法。duration 数据类型不使用日历单位表示时间。

示例

tf = isregular(TT) 等效于 isregular(TT,'time')

示例

[tf,dt] = isregular(___) 返回 dt,即行时间之间的时间步。如果 TT 是规则的,则 dtduration 值或 calendarDuration 值。如果 TT 不是规则时间,则 dtNaN 值。

示例

全部折叠

使用月时间向量创建时间表。确定时间表是否按时间规则变化,然后是否按月规则变化。

创建一个时间表,其行时间是 2016 年的前五个月。添加每月的股票价格作为表变量。

StockPrice = [109.0;107.82;113.17;128.01;116];
M = timetable(datetime(2016,1:5,3)',StockPrice)
M=5×1 timetable
       Time        StockPrice
    ___________    __________

    03-Jan-2016         109  
    03-Feb-2016      107.82  
    03-Mar-2016      113.17  
    03-Apr-2016      128.01  
    03-May-2016         116  

确定 M 是否为规则时间表。

TF = isregular(M)
TF = logical
   0

M 不是规则时间表,因为前五个月的天数不相同。您可以使用 diff 函数来计算 M 中连续时间之间的时间步差。差为持续时间,以小时、分钟和秒的格式显示时间步。

D = diff(M.Time)
D = 4x1 duration
   744:00:00
   696:00:00
   744:00:00
   720:00:00

通过指定 'month' 作为测量单位,确定 M 是否按月规则变化。

TF = isregular(M,'months')
TF = logical
   1

创建一个时间表。确定它是否为规则时间表,如果是,则返回时间步的大小。

Time = [minutes(0):minutes(15):minutes(60)]';
Pulse = [72 75 80 73 69]';
TT = timetable(Time,Pulse)
TT=5×1 timetable
     Time     Pulse
    ______    _____

    0 min      72  
    15 min     75  
    30 min     80  
    45 min     73  
    60 min     69  

[TF,dt] = isregular(TT)
TF = logical
   1

dt = duration
   15 min

TT 是规则时间表。

输入参数

全部折叠

输入时间表。

时间或日历单位,指定为字符向量或字符串标量。isregular 确定 TT 的行时间基于 timeComponent 所指定的时间或日历单位是否是规则的。下表列出了您可以指定的单位。

时间或日历单位

说明

'years'

按年规则变化

'quarters'

按季度规则变化

'months'

按月规则变化

'weeks'

按周规则变化

'days'

按日规则变化

'time'(默认值)

按时间规则变化

输出参数

全部折叠

True 或 false,如果行时间为规则时间,则返回逻辑值 1,否则返回逻辑值 0

行时间之间的时间步,以 durationcalendarDuration 值形式返回。如果时间表不规则,则 dtNaN 值。

提示

  • 在某些情况下,您可以创建一个时间表,同时指定行时间之间的规则时间步,但生成的时间表是不规则的。当您使用日历时间单位指定时间步并且存在引入不规则时间步的行时间时,就会出现这种结果。例如,如果您创建时间步为一个日历月的时间表,从 2019 年 1 月 31 日开始,则就月份而言,时间步是不规则的。

    stime = datetime(2019,1,31);
    tstep = calmonths(1);
    TT = timetable('Size',[3 1],'VariableTypes',{'double'},...
                   'TimeStep',tstep,'StartTime',stime);
    tf = isregular(TT,'month')
    
    tf =
    
      logical
    
       0
    

    夏令时 (DST) 的转换或闰秒的行时间也会造成不规则性。下表指定了可能意外产生不规则时间表的行时间值和时间步。

    行时间值

    时间步

    开始时间,指定为一个月的第 29 天、第 30 天或第 31 天。

    日历月数或季度数。

    开始时间,指定为 2 月 29 日。

    日历年数。

    在从 DST 转换到标准时间的一天中凌晨 1:00 到 2:00 之间发生的行时间(当行时间指定为其时区遵守 DST 的日期时间值时)。日历天数或月数。

    闰秒行时间(当行时间指定为其时区为 UTCLeapSeconds 时区的日期时间值时)。有关闰秒的列表,请参阅 leapseconds

    以任何日历单位(天、周、月、季度或年)指定的时间步。

扩展功能

C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。

在 R2016b 中推出