타임테이블을 결합하고 타임테이블의 데이터를 동기화하기
다양한 방법으로 타임테이블을 결합하고 해당 데이터를 동기화할 수 있습니다. 타임테이블을 세로 또는 가로로 결합할 수 있지만, 이는 타임테이블에 서로 동일한 행 시간값이나 동일한 타임테이블 변수가 포함된 경우에만 가능합니다. 행 시간값 및 타임테이블 변수가 서로 다른 타임테이블을 결합하려면 synchronize
함수를 사용하십시오. synchronize
는 모든 입력 타임테이블의 모든 변수를 포함하는 타임테이블을 생성합니다. 그런 다음, 입력 타임테이블의 데이터를 출력 타임테이블의 행 시간값으로 동기화합니다. synchronize
는 출력 타임테이블의 누락된 요소를 누락 데이터 표시자, 최근접이웃에서 복사한 값, 또는 보간된 값 중 하나로 채울 수 있습니다. 또한 synchronize
는 사용자가 지정한 시간 구간별로 타임테이블 데이터를 집계할 수도 있습니다.
타임테이블을 세로로 결합하기
openPricesSmall
에서 타임테이블을 불러와서 세로로 결합합니다. 이 예제에서는 타임테이블 opWeek1
과 opWeek2
를 불러왔습니다. 이 타임테이블에는 2016년 1월 첫째 주와 둘째 주 동안 일부 주식에 대한 시가가 포함되어 있습니다.
load openPricesSmall
두 타임테이블을 표시합니다.
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
타임테이블을 결합합니다. 두 타임테이블의 변수가 동일하면 타임테이블을 세로로 결합할 수 있습니다. 행 시간값은 행의 레이블을 지정하며 타임테이블 변수에 포함되지 않습니다. 참고로, 타임테이블의 행 시간값의 순서는 뒤바뀌어도 괜찮으며 간격이 규칙적이지 않아도 됩니다. 예를 들어, op
에는 주말에 해당하는 요일은 포함되어 있지 않습니다. 또한 타임테이블에는 중복된 시간값이 포함될 수 있습니다. op
에는 08-Jan-2016 09:00:00
에 대한 행이 두 개가 있습니다.
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
타임테이블을 가로로 결합하기
타임테이블을 가로로 결합할 수도 있습니다. 그렇게 하려면 두 타임테이블이 행 시간값은 동일하고 변수는 서로 달라야 합니다.
타임테이블 opOtherStocks
를 표시합니다. 이 타임테이블은 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
을 결합합니다. 두 타임테이블에서 가져온 행 시간값과 변수가 하나의 세트로 구성된 타임테이블이 출력됩니다.
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
타임테이블을 동기화하고 누락 데이터 표시하기
서로 다른 두 개의 타임테이블에서 대기질 데이터와 날씨 측정값을 불러와서 동기화합니다. 측정 날짜의 범위는 2015년 11월 15일부터 2015년 11월 19일까지입니다. 대기질 데이터는 건물 내부의 센서에서 얻어지고, 날씨 측정값은 외부 센서에서 얻어집니다.
load indoors load outdoors
각 타임테이블의 처음 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
타임테이블을 동기화합니다. 출력 타임테이블 tt
는 두 타임테이블의 모든 시간값을 포함합니다. synchronize
는 tt
에서 데이터 값이 없는 위치에 누락 데이터 표시자를 넣습니다. 두 입력 타임테이블에 Humidity
같이 이름이 동일한 변수가 있는 경우 synchronize
는 두 변수의 이름을 모두 바꾸고 출력 타임테이블에 바뀐 두 변수 이름을 추가합니다.
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
데이터 값을 동기화하고 보간하기
타임테이블을 동기화하고, 선형 보간으로 누락된 타임테이블 요소를 채웁니다. 두 타임테이블의 모든 시간값을 포함하는 시간 벡터로 동기화하려면 출력 시간값에 '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시간인 규칙적인 행 시간값을 갖습니다.
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
타임테이블을 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분 간격을 갖는 시간 벡터로 타임테이블을 동기화할 수 있습니다.
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
데이터 값을 동기화하고 집계하기
타임테이블을 동기화하고 출력 타임테이블에 있는 모든 변수의 일별 평균을 계산합니다.
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
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