Main Content

containsrange

timetable の行時間に指定した時間範囲が含まれるかどうかを判別

R2020a 以降

説明

tf = containsrange(TT,rangeOfTimes) は、TT の行時間の範囲に rangeOfTimes で指定された時間範囲が含まれる場合は 1 (true) を返します。それ以外の場合は 0 (false) を返します。

TT の行時間の範囲は、最小行時間と最大行時間で決まります。

tf = containsrange(TT,oneTime) は、TT の行時間の範囲に oneTime で指定された時間が含まれるかどうかを判別します。

[tf,whichRows] = containsrange(___) は、指定された時間範囲内にある TT の行を示す論理インデックスも返します。

すべて折りたたむ

行時間の範囲が 0 ~ 0.4 秒の timetable を作成します。

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.1 ~ 0.35 秒の time range オブジェクトを作成します。オブジェクトを作成するには、関数 timerange を使用します。入力は、関数 seconds を使用して作成できる期間です。

rangeOfTimes = timerange(seconds(0.1),seconds(0.35))
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.35 sec

TT の行時間に rangeOfTimes で指定された範囲が含まれるかどうかを判別します。

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

範囲が 0.1 ~ 0.9 秒の別の time range オブジェクトを作成します。この範囲の場合、0.9 秒は TT の時間範囲外であるため、関数 containsrange は 0 を返します。

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

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

時間範囲が異なる 2 つの timetable を作成します。timetable は、さまざまな変数や異なる行数を持つこともできます。

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.15),'StartTime',seconds(0.05))
TT2=3×1 timetable
      Time      Readings
    ________    ________

    0.05 sec       74   
    0.2 sec        83   
    0.35 sec       99   

TT1 の行時間の範囲に TT2 の行時間の範囲が含まれるかどうかを判別します。

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

これに対して、TT2 の行時間の範囲には TT1 の範囲が含まれていません。

tf = containsrange(TT2,TT1)
tf = logical
   0

各月初頭と半ばの物価を含む timetable を作成します。

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 日午前 0 時とします。

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

TT の行時間の範囲に oneTime が含まれるかどうかを判別します。

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

oneTime は、TT の特定の行時間と一致する必要はありません。oneTimeTT の最小行時間と最大行時間の間の時間であれば、containsrange は 1 を返します。

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

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

timetable を作成します。

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 の行を判別します。2 番目の出力引数 whichRows は、要素が TT の行に対応する logical 配列です。行時間が時間範囲内にある各行には 1 が、行時間が時間範囲内にない各行には 0 が含まれます。

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

whichRows = 5x1 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  

入力引数

すべて折りたたむ

入力 timetable。TT の最小行時間と最大行時間によって時間の範囲が決まります。

時間範囲。time range オブジェクトまたは timetable として指定します。

  • rangeOfTimes を time range オブジェクトとして指定する場合は、関数 timerange を使用して時間範囲を作成します。timerange への入力として範囲の開始時間と終了時間を明示的に指定します。

    • 入力 timetable TT にイベント テーブルが付加されている場合は、イベント フィルターを使用する time range オブジェクトを指定して containsrange を呼び出すことができます。イベント フィルターを使用した時間範囲の指定の詳細については、eventfilter を参照してください。 (R2023b 以降)

  • rangeOfTimes を timetable として指定する場合は、範囲の開始と終了を明示的に指定する必要はありません。containsrange により、timetable の最小行時間と最大行時間から自動的に取得されます。

単一の時間。datetime スカラーまたは duration スカラーとして指定します。

出力引数

すべて折りたたむ

true または false。TT の行時間の範囲に rangeOfTimes で指定された時間範囲または oneTime で指定された時点が含まれる場合は logical 1、それ以外の場合は logical 0 として返されます。

指定された時間範囲内の行のインデックス。logical 配列として返されます。whichRows を使用して TT にインデックスを付けることができます。

たとえば、次のコードでは、containsrange の 2 番目の出力を使用して、timetable TT にインデックスを付けることができます。timetable TT2 には、行時間が rangeOfTimes で指定された範囲内にある行のみが含まれます。

[tf,whichVars] = (TT,rangeOfTimes);
TT2 = T(whichRows,:)

拡張機能

バージョン履歴

R2020a で導入

すべて展開する