timetable の結合とデータの同期
timetable の結合やデータの同期を行うには、さまざまな方法があります。timetable は垂直方向または水平方向に連結できますが、その場合、含まれる行時間または timetable 変数が同じでなければなりません。行時間や timetable 変数が異なる場合に timetable 同士を結合するには、関数 synchronize
を使用します。synchronize
は、すべての入力 timetable からのすべての変数を含む timetable を作成します。その後、入力 timetable のデータが出力 timetable の行時間に同期されます。synchronize
は、出力 timetable の欠損要素を欠損データ インジケーター、最近傍からコピーした値、内挿値のいずれかで埋めることができます。synchronize
は、timetable のデータを指定した時間ビンに集約することもできます。
timetable の垂直方向の連結
openPricesSmall
から timetable を読み込んで、垂直方向に連結します。timetable は opWeek1
と opWeek2
です。2016 年 1 月の第 1 週と第 2 週のいくつかの株式の始値が含まれています。
load openPricesSmall
2 つの timetable を表示します。
opWeek1
opWeek1=5×2 timetable
Time AAPL FB
____________________ ______ ______
08-Jan-2016 09:00:00 98.55 99.88
07-Jan-2016 09:00:00 98.68 100.5
06-Jan-2016 09:00:00 100.56 101.13
05-Jan-2016 09:00:00 105.75 102.89
04-Jan-2016 09:00:00 102.61 101.95
opWeek2
opWeek2=5×2 timetable
Time AAPL FB
____________________ ______ ______
14-Jan-2016 09:00:00 97.96 95.85
13-Jan-2016 09:00:00 100.32 100.58
12-Jan-2016 09:00:00 100.55 99
11-Jan-2016 09:00:00 98.97 97.91
08-Jan-2016 09:00:00 98.55 99.88
timetable を連結します。同じ変数を含む timetable は垂直方向に連結できます。行時間は行にラベルを付け、timetable 変数には含まれません。1 つの timetable 内にある行時間は、順不同な場合や不定間隔の場合もあることに注意してください。たとえば、op
には、週末にあたる日が含まれません。1 つの timetable に、重複する時間が含まれる場合もあります。op
には、08-Jan-2016 09:00:00
の行が 2 行含まれています。
op = [opWeek2;opWeek1]
op=10×2 timetable
Time AAPL FB
____________________ ______ ______
14-Jan-2016 09:00:00 97.96 95.85
13-Jan-2016 09:00:00 100.32 100.58
12-Jan-2016 09:00:00 100.55 99
11-Jan-2016 09:00:00 98.97 97.91
08-Jan-2016 09:00:00 98.55 99.88
08-Jan-2016 09:00:00 98.55 99.88
07-Jan-2016 09:00:00 98.68 100.5
06-Jan-2016 09:00:00 100.56 101.13
05-Jan-2016 09:00:00 105.75 102.89
04-Jan-2016 09:00:00 102.61 101.95
timetable の水平方向の連結
timetable を水平方向に連結することもできます。連結する timetable は、行時間が同じで、変数が異なっていなければなりません。
timetable opOtherStocks
を表示します。この timetable は opWeek1
と同じ行時間を含みますが、変数は異なる株式のものです。
opOtherStocks
opOtherStocks=5×2 timetable
Time MSFT TWTR
____________________ _____ _____
08-Jan-2016 09:00:00 52.37 20.51
07-Jan-2016 09:00:00 52.7 21
06-Jan-2016 09:00:00 54.32 21.62
05-Jan-2016 09:00:00 54.93 22.79
04-Jan-2016 09:00:00 54.32 22.64
opWeek1
と opOtherStock
を連結します。出力 timetable には、1 セットの行時間と、両方の timetable の変数が含まれます。
op = [opWeek1 opOtherStocks]
op=5×4 timetable
Time AAPL FB MSFT TWTR
____________________ ______ ______ _____ _____
08-Jan-2016 09:00:00 98.55 99.88 52.37 20.51
07-Jan-2016 09:00:00 98.68 100.5 52.7 21
06-Jan-2016 09:00:00 100.56 101.13 54.32 21.62
05-Jan-2016 09:00:00 105.75 102.89 54.93 22.79
04-Jan-2016 09:00:00 102.61 101.95 54.32 22.64
timetable の同期と欠損データの指定
大気質データと気象測定値を 2 つの異なる timetable から読み込んで同期します。測定値の日付範囲は 2015 年 11 月 15 日から 2015 年 11 月 19 日までです。大気質データは屋内のセンサーから、気象測定値は屋外のセンサーから取得されています。
load indoors load outdoors
各 timetable の最初の 5 行を表示します。さまざまな時刻に取得されたさまざまな数量の測定値が含まれています。
indoors(1:5,:)
ans=5×2 timetable
Time Humidity AirQuality
___________________ ________ __________
2015-11-15 00:00:24 36 80
2015-11-15 01:13:35 36 80
2015-11-15 02:26:47 37 79
2015-11-15 03:39:59 37 82
2015-11-15 04:53:11 36 80
outdoors(1:5,:)
ans=5×3 timetable
Time Humidity TemperatureF PressureHg
___________________ ________ ____________ __________
2015-11-15 00:00:24 49 51.3 29.61
2015-11-15 01:30:24 48.9 51.5 29.61
2015-11-15 03:00:24 48.9 51.5 29.61
2015-11-15 04:30:24 48.8 51.5 29.61
2015-11-15 06:00:24 48.7 51.5 29.6
timetable を同期します。出力 timetable tt
には両方の timetable からのすべての時刻が含まれます。synchronize
は、tt
内に配置するデータ値がない場合、欠損データ インジケーターを配置します。両方の入力 timetable に Humidity
などの同じ名前の変数がある場合、synchronize
は両方の変数の名前を変更し、両方を出力 timetable に追加します。
tt = synchronize(indoors,outdoors); tt(1:5,:)
ans=5×5 timetable
Time Humidity_indoors AirQuality Humidity_outdoors TemperatureF PressureHg
___________________ ________________ __________ _________________ ____________ __________
2015-11-15 00:00:24 36 80 49 51.3 29.61
2015-11-15 01:13:35 36 80 NaN NaN NaN
2015-11-15 01:30:24 NaN NaN 48.9 51.5 29.61
2015-11-15 02:26:47 37 79 NaN NaN NaN
2015-11-15 03:00:24 NaN NaN 48.9 51.5 29.61
データ値の同期と内挿
timetable を同期し、線形内挿を使用して、timetable の欠損要素を埋めます。両方の timetable のすべての時間を含む時間ベクトルに同期するには、出力時間に "union"
を指定します。
ttLinear = synchronize(indoors,outdoors,"union","linear"); ttLinear(1:5,:)
ans=5×5 timetable
Time Humidity_indoors AirQuality Humidity_outdoors TemperatureF PressureHg
___________________ ________________ __________ _________________ ____________ __________
2015-11-15 00:00:24 36 80 49 51.3 29.61
2015-11-15 01:13:35 36 80 48.919 51.463 29.61
2015-11-15 01:30:24 36.23 79.77 48.9 51.5 29.61
2015-11-15 02:26:47 37 79 48.9 51.5 29.61
2015-11-15 03:00:24 37 80.378 48.9 51.5 29.61
規則的な時間への同期
1 時間ごとの時間ベクトルに timetable を同期します。入力 timetable には不規則な行時間がありました。出力 timetable では、1 時間のタイム ステップで行時間が規則的になっています。
ttHourly = synchronize(indoors,outdoors,"hourly","linear"); ttHourly(1:5,:)
ans=5×5 timetable
Time Humidity_indoors AirQuality Humidity_outdoors TemperatureF PressureHg
___________________ ________________ __________ _________________ ____________ __________
2015-11-15 00:00:00 36 80 49 51.299 29.61
2015-11-15 01:00:00 36 80 48.934 51.432 29.61
2015-11-15 02:00:00 36.634 79.366 48.9 51.5 29.61
2015-11-15 03:00:00 37 80.361 48.9 51.5 29.61
2015-11-15 04:00:00 36.727 81.453 48.834 51.5 29.61
timetable を 30 分のタイム ステップに同期します。入力引数 "regular"
と、名前と値の引数 TimeStep
を使用して、一定のタイム ステップを指定します。
ttHalfHour = synchronize(indoors,outdoors,"regular","linear",TimeStep=minutes(30)); ttHalfHour(1:5,:)
ans=5×5 timetable
Time Humidity_indoors AirQuality Humidity_outdoors TemperatureF PressureHg
___________________ ________________ __________ _________________ ____________ __________
2015-11-15 00:00:00 36 80 49 51.299 29.61
2015-11-15 00:30:00 36 80 48.967 51.366 29.61
2015-11-15 01:00:00 36 80 48.934 51.432 29.61
2015-11-15 01:30:00 36.224 79.776 48.9 51.499 29.61
2015-11-15 02:00:00 36.634 79.366 48.9 51.5 29.61
代替方法として、30 分間隔を指定する時間ベクトルに timetable を同期できます。
tv = [datetime(2015,11,15):minutes(30):datetime(2015,11,18)];
tv.Format = indoors.Time.Format;
ttHalfHour = synchronize(indoors,outdoors,tv,"linear");
ttHalfHour(1:5,:)
ans=5×5 timetable
Time Humidity_indoors AirQuality Humidity_outdoors TemperatureF PressureHg
___________________ ________________ __________ _________________ ____________ __________
2015-11-15 00:00:00 36 80 49 51.299 29.61
2015-11-15 00:30:00 36 80 48.967 51.366 29.61
2015-11-15 01:00:00 36 80 48.934 51.432 29.61
2015-11-15 01:30:00 36.224 79.776 48.9 51.499 29.61
2015-11-15 02:00:00 36.634 79.366 48.9 51.5 29.61
データ値の同期と集約
timetable を同期して、出力 timetable のすべての変数の日次平均を計算します。
ttDaily = synchronize(indoors,outdoors,"daily","mean"); ttDaily
ttDaily=4×5 timetable
Time Humidity_indoors AirQuality Humidity_outdoors TemperatureF PressureHg
___________________ ________________ __________ _________________ ____________ __________
2015-11-15 00:00:00 36.5 80.05 48.931 51.394 29.607
2015-11-16 00:00:00 36.85 80.35 47.924 51.571 29.611
2015-11-17 00:00:00 36.85 79.45 48.45 51.238 29.613
2015-11-18 00:00:00 NaN NaN 49.5 50.8 29.61
timetable を 6 時間間隔に同期して、各間隔の平均値を計算します。
tt6Hours = synchronize(indoors,outdoors,"regular","mean",TimeStep=hours(6)); tt6Hours(1:5,:)
ans=5×5 timetable
Time Humidity_indoors AirQuality Humidity_outdoors TemperatureF PressureHg
___________________ ________________ __________ _________________ ____________ __________
2015-11-15 00:00:00 36.4 80.2 48.9 51.45 29.61
2015-11-15 06:00:00 36.4 79.8 48.9 51.45 29.6
2015-11-15 12:00:00 36.6 80.4 49.025 51.45 29.61
2015-11-15 18:00:00 36.6 79.8 48.9 51.225 29.607
2015-11-16 00:00:00 36.6 80.2 48.5 51.4 29.61
代替方法として、同じ 6 時間間隔をもつ時間ベクトルを指定します。
tv = [datetime(2015,11,15):hours(6):datetime(2015,11,18)];
tv.Format = indoors.Time.Format;
tt6Hours = synchronize(indoors,outdoors,tv,"mean");
tt6Hours(1:5,:)
ans=5×5 timetable
Time Humidity_indoors AirQuality Humidity_outdoors TemperatureF PressureHg
___________________ ________________ __________ _________________ ____________ __________
2015-11-15 00:00:00 36.4 80.2 48.9 51.45 29.61
2015-11-15 06:00:00 36.4 79.8 48.9 51.45 29.6
2015-11-15 12:00:00 36.6 80.4 49.025 51.45 29.61
2015-11-15 18:00:00 36.6 79.8 48.9 51.225 29.607
2015-11-16 00:00:00 36.6 80.2 48.5 51.4 29.61
参考
timetable
| table2timetable
| synchronize
| retime