Main Content

타임테이블을 결합하고 타임테이블의 데이터를 동기화하기

다양한 방법으로 타임테이블을 결합하고 해당 데이터를 동기화할 수 있습니다. 타임테이블을 세로 또는 가로로 결합할 수 있지만, 이는 타임테이블에 서로 동일한 행 시간값이나 동일한 타임테이블 변수가 포함된 경우에만 가능합니다. 행 시간값 및 타임테이블 변수가 서로 다른 타임테이블을 결합하려면 synchronize 함수를 사용하십시오. synchronize는 모든 입력 타임테이블의 모든 변수를 포함하는 타임테이블을 생성합니다. 그런 다음, 입력 타임테이블의 데이터를 출력 타임테이블의 행 시간값으로 동기화합니다. synchronize는 출력 타임테이블의 누락된 요소를 누락 데이터 표시자, 최근접이웃에서 복사한 값, 또는 보간된 값 중 하나로 채울 수 있습니다. 또한 synchronize는 사용자가 지정한 시간 구간별로 타임테이블 데이터를 집계할 수도 있습니다.

타임테이블을 세로로 결합하기

openPricesSmall에서 타임테이블을 불러와서 세로로 결합합니다. 이 예제에서는 타임테이블 opWeek1opWeek2를 불러왔습니다. 이 타임테이블에는 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

opWeek1opOtherStock을 결합합니다. 두 타임테이블에서 가져온 행 시간값과 변수가 하나의 세트로 구성된 타임테이블이 출력됩니다.

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는 두 타임테이블의 모든 시간값을 포함합니다. synchronizett에서 데이터 값이 없는 위치에 누락 데이터 표시자를 넣습니다. 두 입력 타임테이블에 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  

참고 항목

| | |

관련 항목