Main Content

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

overlapsrange

确定时间表行时间是否与指定的时间范围重叠

说明

示例

如果 TT 的行时间范围与 rangeOfTimes 指定的时间范围重叠,则 tf = overlapsrange(TT,rangeOfTimes) 返回 1 (true)。否则,将返回 0 (false)。

TT 的行时间范围由其最小和最大行时间决定。

示例

tf = overlapsrange(TT,oneTime) 确定 TT 的行时间范围是否包含 oneTime 指定的时间。

示例

[tf,whichRows] = overlapsrange(___) 还返回逻辑索引,指示 TT 的哪些行在指定的时间范围内。

示例

全部折叠

创建一个行时间范围在 0 秒到 0.4 秒之间的时间表。

Intensity = [100;98.7;95.2;101.4;99.1];
TT = timetable(Intensity,'TimeStep',seconds(0.1))
TT=5×1 timetable
     Time      Intensity
    _______    _________

    0 sec          100  
    0.1 sec       98.7  
    0.2 sec       95.2  
    0.3 sec      101.4  
    0.4 sec       99.1  

创建一个时间范围对象,其时间范围为 0.25–1.0 秒。要创建该对象,请使用 timerange 函数。其输入是持续时间,您可以使用 seconds 函数来创建它们。

rangeOfTimes = timerange(seconds(0.25),seconds(1.0))
rangeOfTimes = 
	timetable timerange subscript:

		Select timetable rows with times in the half-open interval:
		[0.25 sec, 1 sec)

	See Select Timetable Data by Row Time and Variable Type.

确定 TT 的行时间是否与 rangeOfTimes 指定的范围重叠。

tf = overlapsrange(TT,rangeOfTimes)
tf = logical
   1

创建另一个时间范围对象,其时间范围为 0.7–1.0 秒。overlapsrange 函数返回 0,因为 rangeOfTimes 完全在 TT 的时间范围外。

rangeOfTimes = timerange(seconds(0.7),seconds(1.0))
rangeOfTimes = 
	timetable timerange subscript:

		Select timetable rows with times in the half-open interval:
		[0.7 sec, 1 sec)

	See Select Timetable Data by Row Time and Variable Type.

tf = overlapsrange(TT,rangeOfTimes)
tf = logical
   0

创建两个具有不同时间范围的时间表。这些时间表也可以有不同的变量和不同的行数。

Intensity = [100;98.7;95.2;101.4;99.1];
TT1 = timetable(Intensity,'TimeStep',seconds(0.1))
TT1=5×1 timetable
     Time      Intensity
    _______    _________

    0 sec          100  
    0.1 sec       98.7  
    0.2 sec       95.2  
    0.3 sec      101.4  
    0.4 sec       99.1  

Readings = [74;83;99];
TT2 = timetable(Readings,'TimeStep',seconds(0.5),'StartTime',seconds(0.25))
TT2=3×1 timetable
      Time      Readings
    ________    ________

    0.25 sec       74   
    0.75 sec       83   
    1.25 sec       99   

确定 TT1 中的行时间范围是否与 TT2 中的行时间范围重叠。

tf = overlapsrange(TT1,TT2)
tf = logical
   1

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

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 

使用 datetime 函数指定一个时间点。此时间点是 2018 年 2 月 1 日午夜。

oneTime = datetime('2018-02-01')
oneTime = datetime
   01-Feb-2018

确定 TT 中的行时间范围是否包含 oneTime

tf = overlapsrange(TT,oneTime)
tf = logical
   1

oneTime 不必与 TT 的某特定行时间相匹配。如果 oneTime 是介于 TT 的最小和最大行时间之间的任意时间,则 overlapsrange 返回 1。

oneTime = datetime('2018-02-28 09:23:45')
oneTime = datetime
   28-Feb-2018 09:23:45

tf = overlapsrange(TT,oneTime)
tf = logical
   1

创建一个时间表。

Intensity = [100;98.7;95.2;101.4;99.1];
TT = timetable(Intensity,'TimeStep',seconds(0.1))
TT=5×1 timetable
     Time      Intensity
    _______    _________

    0 sec          100  
    0.1 sec       98.7  
    0.2 sec       95.2  
    0.3 sec      101.4  
    0.4 sec       99.1  

指定一个时间范围。然后确定 TT 的哪些行在该时间范围内。第二个输出参数 whichRows 是逻辑数组,其元素对应于 TT 中的行。对于行时间在时间范围内的每行,它包含的对应元素为 1;对于行时间不在时间范围内的每行,它包含的对应元素为 0

rangeOfTimes = timerange(seconds(0.1),seconds(0.35));
[tf,whichRows] = overlapsrange(TT,rangeOfTimes)
tf = logical
   1

whichRows = 5x1 logical array

   0
   1
   1
   1
   0

要访问该时间范围内的行,请使用 whichRowsTT 进行索引。

TT2 = TT(whichRows,:)
TT2=3×1 timetable
     Time      Intensity
    _______    _________

    0.1 sec       98.7  
    0.2 sec       95.2  
    0.3 sec      101.4  

输入参数

全部折叠

输入时间表。TT 的最小和最大行时间决定其时间范围。

时间范围,指定为时间范围对象或时间表。

  • 如果要使用时间范围对象,则使用 timerange 函数创建该对象,并将范围的开始和结束时间显式指定为 timerange 的输入。

  • 如果您使用时间表,则不需要显式指定范围的开始和结束时间。overlapsrange 会自动从时间表的最小和最大行时间获取它们。

单一时间,指定为 datetimeduration 标量。

输出参数

全部折叠

True 或 false,如果 TT 的行时间范围与 rangeOfTimes 指定的时间范围或 oneTime 指定的时间点重叠,则返回逻辑值 1,否则返回逻辑值 0

在指定时间范围内的行的索引,以逻辑数组形式返回。您可以使用 whichRowsTT 进行索引。

例如,在以下代码中,您可以使用 overlapsrange 的第二个输出对时间表 TT 进行索引。时间表 TT2 仅包括其行时间在 rangeOfTimes 指定的范围内的那些行。

[tf,whichVars] = (TT,rangeOfTimes);
TT2 = T(whichRows,:)
在 R2020a 中推出