Main Content

timerange

时间表行下标的时间范围

说明

示例

S = timerange(startTime,endTime) 创建一个下标索引,用于选择时间范围内的时间表行。S 会选择时间在 startTimeendTime 指定的时间区间(包括 startTime 但不包括 endTime)中的所有行。换句话说,该时间区间是半开区间。startTimeendTime 是日期时间或持续时间标量,或者是指定日期时间的字符向量或字符串。

如果 startTimeendTime 是日期时间值,则只能使用 S 对行时间是日期时间值的时间表通过下标进行索引。同样,如果 startTimeendTime 是持续时间值,则只能使用 S 对行时间是持续时间值的时间表通过下标进行索引。

示例

S = timerange(startTime,endTime,intervalType) 创建覆盖 intervalType 指定的区间类型的下标。例如,如果 intervalType'closed',则 S 包括其指定的时间范围中的 startTimeendTime

示例

S = timerange(startPeriod,endPeriod,datetimeUnit) 使用由 datetimeUnit 指定的日期或时间分量,创建一个涵盖 startPeriodendPeriod 之间的时间段的下标。例如,如果 datetimeUnit'months',则 S 包含 startPeriod 的月份分量的起始时间,以及 endPeriod 的月份分量的结束时间。输入 startPeriodendPeriod 可以是日期时间标量,如果是文本,则它们可以是指定日期时间的字符向量或字符串。

示例

S = timerange(timePeriod,datetimeUnit) 使用 datetimeUnit 指定的日期或时间分量,创建一个涵盖 timePeriod 的起始和结束时间的下标。例如,如果 datetimeUnit'day',则 S 包含 timePeriod 的天分量的起始和结束时间。输入 timePeriod 可以是日期时间标量,如果是文本,则可以是指定时间段的字符向量或字符串。

S = timerange(startEF,endEF) 使用一对事件过滤器创建一个行下标。要使用事件过滤器,您通过下标对其进行索引的时间表必须有附加的事件表。有关使用事件过滤器指定时间范围的详细信息,请参阅 eventfilter (自 R2023a 起)

示例

全部折叠

创建包含时间以及温度、压力和风速及风向的测量值的时间表。选择时间位于指定时间区间内的行。

Time = datetime({'12/18/2015 08:00:00';'12/18/2015 10:00:0';'12/18/2015 12:00:00';...
                 '12/18/2015 14:00:00';'12/18/2015 16:00:00';'12/18/2015 18:00:00'});
Temp = [37.3;39.1;42.3;45.7;41.2;39.9];
Pressure = [30.1;30.03;29.9;29.8;30.0;29.9];
WindSpeed = [13.4;6.5;7.3;8.5;9.2;4.3];
WindDirection = categorical({'NW';'N';'NW';'NW';'NNW';'N'});
TT = timetable(Time,Temp,Pressure,WindSpeed,WindDirection)
TT=6×4 timetable
            Time            Temp    Pressure    WindSpeed    WindDirection
    ____________________    ____    ________    _________    _____________

    18-Dec-2015 08:00:00    37.3      30.1        13.4            NW      
    18-Dec-2015 10:00:00    39.1     30.03         6.5            N       
    18-Dec-2015 12:00:00    42.3      29.9         7.3            NW      
    18-Dec-2015 14:00:00    45.7      29.8         8.5            NW      
    18-Dec-2015 16:00:00    41.2        30         9.2            NNW     
    18-Dec-2015 18:00:00    39.9      29.9         4.3            N       

指定介于 12/18/2015 08:00:0012/18/2015 12:00:00 之间的时间范围。

S = timerange('12/18/2015 08:00:00','12/18/2015 12:00:00')
S = 
	timetable timerange subscript:

		Select timetable rows with times in the half-open interval:
		[18-Dec-2015 08:00:00, 18-Dec-2015 12:00:00)

选择时间位于 S 指定的范围内的行。输出时间表包括该时间范围的开始时间,但不包括结束时间。

TT2 = TT(S,:)
TT2=2×4 timetable
            Time            Temp    Pressure    WindSpeed    WindDirection
    ____________________    ____    ________    _________    _____________

    18-Dec-2015 08:00:00    37.3      30.1        13.4            NW      
    18-Dec-2015 10:00:00    39.1     30.03         6.5            N       

创建一个时间表。

Time = [seconds(1):seconds(1):seconds(5)];
TT = timetable(Time',[98;97.5;97.9;98.1;97.9],[120;111;119;117;116],...
               'VariableNames',{'Reading1','Reading2'})
TT=5×2 timetable
    Time     Reading1    Reading2
    _____    ________    ________

    1 sec        98        120   
    2 sec      97.5        111   
    3 sec      97.9        119   
    4 sec      98.1        117   
    5 sec      97.9        116   

指定两到四秒之间的闭时间区间。

S = timerange(seconds(2),seconds(4),'closed')
S = 
	timetable timerange subscript:

		Select timetable rows with times in the closed interval:
		[2 sec, 4 sec]

选择时间位于 S 指定的范围内的行。闭区间包括开始和结束时间。

TT2 = TT(S,:)
TT2=3×2 timetable
    Time     Reading1    Reading2
    _____    ________    ________

    2 sec      97.5        111   
    3 sec      97.9        119   
    4 sec      98.1        117   

创建包含每月中旬设置价格的时间表。

Time = datetime(2018,1:12,15)';
Price = randi([85 110],12,1);
TT = timetable(Time,Price)
TT=12×1 timetable
       Time        Price
    ___________    _____

    15-Jan-2018     106 
    15-Feb-2018     108 
    15-Mar-2018      88 
    15-Apr-2018     108 
    15-May-2018     101 
    15-Jun-2018      87 
    15-Jul-2018      92 
    15-Aug-2018      99 
    15-Sep-2018     109 
    15-Oct-2018     110 
    15-Nov-2018      89 
    15-Dec-2018     110 

使用 'quarters' 将时间范围指定为时间单位。时间范围的开始是包括 2018 年 1 月 1 日的季度。该范围的结束是包括 2018 年 5 月 1 日的季度。时间范围包括整个季度,意味着范围结束于 2018 年 7 月 1 日开始之前的瞬间。

S = timerange('2018-01-01','2018-05-01','quarters')
S = 
	timetable timerange subscript:

		Select timetable rows with times in: QUARTERS
		  Starting at, including:   01-Jan-2018 00:00:00
		  Ending at, but excluding: 01-Jul-2018 00:00:00

选择 TT 的行。输出时间表包括 2018 年 5 月 15 日和 6 月 15 日的行,但不包括 7 月 15 日的行以及在 2018 年前两个季度之外的任何行。

TT(S,:)
ans=6×1 timetable
       Time        Price
    ___________    _____

    15-Jan-2018     106 
    15-Feb-2018     108 
    15-Mar-2018      88 
    15-Apr-2018     108 
    15-May-2018     101 
    15-Jun-2018      87 

创建一个包含在每个月的开头和中旬设置的价格的时间表。

Time = datetime({'2018-01-01';'2018-01-15';'2018-02-01';'2018-02-15';
                 '2018-03-01';'2018-03-15'});
Price = randi([85 110],6,1);
TT = timetable(Time,Price)
TT=6×1 timetable
       Time        Price
    ___________    _____

    01-Jan-2018     106 
    15-Jan-2018     108 
    01-Feb-2018      88 
    15-Feb-2018     108 
    01-Mar-2018     101 
    15-Mar-2018      87 

使用 'months' 将时间范围指定为时间单位。由于第一个输入是 2018 年 2 月的某个日期,因此时间范围涵盖整个 2 月。

S = timerange('2018-02-01','months')
S = 
	timetable timerange subscript:

		Select timetable rows with times in: MONTHS
		  Starting at, including:   01-Feb-2018 00:00:00
		  Ending at, but excluding: 01-Mar-2018 00:00:00

选择 TT 的行。

TT(S,:)
ans=2×1 timetable
       Time        Price
    ___________    _____

    01-Feb-2018      88 
    15-Feb-2018     108 

输入参数

全部折叠

时间范围的开始和结束时间,指定为日期时间或持续时间标量对组,或者字符向量或字符串标量对组。

如果 startTimeendTime 是字符向量或字符串标量,则它们指定日期时间。如果 startTimeendTime 具有 timerange 无法识别的格式,则使用 datetimeduration 函数将其转换为日期时间或持续时间值。使用 datetimeduration'InputFormat' 参量可指定格式。

要创建单侧时间范围,请使用 '-inf''inf' 作为开始或结束时间。语法 timerange('-inf',endTime) 指定 endTime 之前的所有日期时间,而 timerange(startTime,'inf') 指定 startTime 之后的所有日期时间。

时间范围区间的类型,指定为字符向量或字符串标量。下表显示了时间范围区间的类型。

区间类型

描述

'open'

选择时间满足开区间 startTime < rowTimerowTime < endTime 的行。

'closed'

选择时间满足闭区间 startTime <= rowTimerowTime <= endTime 的行。

'openleft'

选择时间满足半开区间 startTime < rowTimerowTime <= endTime 的行。

'openright'(默认值)

选择时间满足半开区间 startTime <= rowTimerowTime < endTime 的行。

'closedright'

等效于 'openleft'

'closedleft'

等效于 'openright'

开始和结束时间段,指定为日期时间标量对组,或者字符向量或字符串标量对组。

如果 startPeriodendPeriod 是字符向量或字符串标量,则它们指定日期时间。如果 startPeriodendPeriod 具有 timerange 无法识别的格式,则使用 datetime 函数将其转换为日期时间值。使用 datetime'InputFormat' 参量可指定格式。

要创建单侧时间范围,请使用 '-inf''inf' 作为开始或结束时间。例如,语法 timerange('-inf',endPeriod,'days') 指定 endPeriod 的结束日之前的所有日期时间。语法 timerange(startTime,'inf','days') 指定 startPeriod 日期起始时间后的所有日期时间。

时间段,指定为日期时间标量、字符向量或字符串标量。如果 timePeriod 是字符向量或字符串标量,则它指定 datetime 函数可以转换为日期时间值的日期时间。

时间段的分量,指定为字符向量或字符串标量。下表显示您可以指定的分量。

注意:仅当其他输入参量指定的是日期时间值而不是持续时间值时,才能指定 datetimeUnit

日期或时间分量

描述

'years'

选择时间满足 year(startPeriod) <= year(rowTime)year(rowTime) <= year(endPeriod) 的行。

'quarters'

选择时间满足 quarter(startPeriod) <= quarter(rowTime)quarter(rowTime) <= quarter(endPeriod) 的行。

'months'

选择时间满足 month(startPeriod) <= month(rowTime)month(rowTime) <= month(endPeriod) 的行。

'weeks'

选择时间满足 week(startPeriod) <= week(rowTime)week(rowTime) <= week(endPeriod) 的行。

'days'

选择时间满足 day(startPeriod) <= day(rowTime)day(rowTime) <= day(endPeriod) 的行。

'hours'

选择时间满足 hour(startPeriod) <= hour(rowTime)hour(rowTime) <= hour(endPeriod) 的行。

'minutes'

选择时间满足 minute(startPeriod) <= minute(rowTime)minute(rowTime) <= minute(endPeriod) 的行。

'seconds'

选择时间满足 second(startPeriod) <= second(rowTime)second(rowTime) <= second(endPeriod) 的行。

自 R2023a 起

开始和结束事件过滤器,指定为一对事件过滤器。

扩展功能

基于线程的环境
使用 MATLAB® backgroundPool 在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool 加快代码运行速度。

版本历史记录

在 R2016b 中推出

全部展开