withinrange
确定时间表行时间是否在指定的时间范围内
说明
示例
创建一个行时间范围在 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
创建一个时间范围对象,其时间范围为 –1 到 1 秒。要创建该对象,请使用 timerange 函数。其输入是持续时间,您可以使用 seconds 函数来创建它们。
rangeOfTimes = timerange(seconds(-1),seconds(1))
rangeOfTimes = timetable timerange subscript: Select timetable rows with times in the half-open interval: Starting at, including: -1 sec Ending at, but excluding: 1 sec See Select Times in Timetable.
确定 TT 的行时间是否在 rangeOfTimes 指定的范围内。
tf = withinrange(TT,rangeOfTimes)
tf = logical
1
创建另一个范围为 0.1–0.9 秒的时间范围对象。withinrange 函数返回 0,因为 TT 的第一个行时间不在 rangeOfTimes 范围内。
rangeOfTimes = timerange(seconds(0.1),seconds(0.9))
rangeOfTimes = timetable timerange subscript: Select timetable rows with times in the half-open interval: Starting at, including: 0.1 sec Ending at, but excluding: 0.9 sec See Select Times in Timetable.
tf = withinrange(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;75;87;93;92]; TT2 = timetable(Readings,'TimeStep',seconds(0.1),'StartTime',seconds(-0.1))
TT2=7×1 timetable
Time Readings
________ ________
-0.1 sec 74
0 sec 83
0.1 sec 99
0.2 sec 75
0.3 sec 87
0.4 sec 93
0.5 sec 92
确定 TT1 的行时间范围是否在 TT2 的行时间范围内。
tf = withinrange(TT1,TT2)
tf = logical
1
另一方面,TT2 的行时间范围不在 TT1 的范围内。
tf = withinrange(TT2,TT1)
tf = logical
0
创建一个包含在每个月的开头和中旬设置的价格的时间表。
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 的行时间。虽然一个行时间碰巧等于 oneTime,但其他行时间不相等。因此,withinrange 函数返回 0。
tf = withinrange(TT,oneTime)
tf = logical
0
时间表可以有重复的行时间。将 TT 的所有行时间更改为相同的值,然后再次调用 withinrange。现在,所有行时间都等于 oneTime,withinrange 返回 1。
TT.Time(1:end) = oneTime
TT=6×1 timetable
Time Price
___________ _____
01-Feb-2018 106
01-Feb-2018 108
01-Feb-2018 88
01-Feb-2018 108
01-Feb-2018 101
01-Feb-2018 87
tf = withinrange(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] = withinrange(TT,rangeOfTimes)
tf = logical
0
whichRows = 5×1 logical array
0
1
1
1
0
要访问该时间范围内的行,请使用 whichRows 对 TT 进行索引。
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 的最小和最大行时间决定其时间范围。
时间范围,指定为时间范围对象或时间表。
如果将
rangeOfTimes指定为时间范围对象,则使用timerange函数创建时间范围。将范围的开始和结束时间显式指定为timerange的输入。如果输入时间表
TT有附加的事件表,则您可以通过使用事件过滤器的时间范围对象调用withinrange。有关使用事件过滤器指定时间范围的详细信息,请参阅eventfilter(自 R2023b 起)
如果您将
rangeOfTimes指定为时间表,则不需要显式指定范围的开始和结束时间。withinrange会自动从时间表的最小和最大行时间获取它们。
单一时间,指定为 datetime 或 duration 标量。
输出参量
True 或 false,如果 TT 的行时间范围完全在 rangeOfTimes 指定的时间范围内,则返回逻辑值 1,否则返回逻辑值 0。
在指定时间范围内的行的索引,以逻辑数组形式返回。您可以使用 whichRows 对 TT 进行索引。
例如,在以下代码中,您可以使用 withinrange 的第二个输出对时间表 TT 进行索引。时间表 TT2 仅包括其行时间在 rangeOfTimes 指定的范围内的那些行。
[tf,whichVars] = (TT,rangeOfTimes); TT2 = T(whichRows,:)
扩展功能
此函数完全支持基于线程的环境。有关详细信息,请参阅在基于线程的环境中运行 MATLAB 函数。
版本历史记录
在 R2020a 中推出当您调用 withinrange 时,您可以指定使用事件过滤器作为其开始和结束时间的时间范围。要使用事件过滤器,您必须首先将事件表附加到输入时间表。有关将 withinrange 与事件过滤器结合使用的详细信息,请参阅 eventfilter。
另请参阅
withtol | timerange | seconds | timetable | datetime | duration | containsrange | overlapsrange
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)