table2timetable

Преобразовывание таблицы в расписание

Синтаксис

TT = table2timetable(T)
TT = table2timetable(T,'RowTimes',timeVarName)
TT = table2timetable(T,'RowTimes',rowTimes)
TT = table2timetable(T,'SampleRate',Fs)
TT = table2timetable(T,'TimeStep',dt)
TT = table2timetable(___,'StartTime',t0)

Описание

пример

TT = table2timetable(T) преобразовывает таблицу T в расписание. Первая переменная datetime или длительности в T становится вектором времен строки TT. Остающиеся переменные T становятся переменными TT.

  • Если T является M-by-N таблица без имен строки, то TT является M-by-(N-1) расписание.

  • Если T является M-by-N таблица с именами строки, то table2timetable присваивает имена строки T к переменной TT. В результате TT является M-by-N расписание.

Для получения дополнительной информации о создании и использовании расписаний, см. Расписания.

Чтобы создать расписание из данных в тексте или файле электронной таблицы, сначала используйте функцию readtable, чтобы считать данные в таблицу. Затем преобразуйте таблицу в расписание с table2timetable.

пример

TT = table2timetable(T,'RowTimes',timeVarName) присваивает табличную переменную timeVarName как вектор времен строки выходного расписания. timeVarName может быть именем любой переменной в T, который содержит значения длительности или datetime. Остающиеся переменные T становятся переменными TT.

пример

TT = table2timetable(T,'RowTimes',rowTimes) присваивает векторный rowTimes как вектор времен строки выходного расписания. Все переменные T становятся переменными TT.

пример

TT = table2timetable(T,'SampleRate',Fs) использует частоту дискретизации Fs, чтобы вычислить расположенные с равными интервалами времена строки. Fs является положительным числовым скаляром, который задает количество выборок в секунду (Гц). Первый раз строки является нулевыми секундами.

пример

TT = table2timetable(T,'TimeStep',dt) использует временной шаг dt, чтобы вычислить расположенные с равными интервалами времена строки. dt является длительностью или календарным значением длительности, которое задает отрезок времени между временами строки подряд. Первый раз строки является нулевыми секундами.

пример

TT = table2timetable(___,'StartTime',t0) задает время начала t0, вместо нулевых секунд, как первый раз строки. Можно использовать этот синтаксис, когда вы создаете обычное расписание с помощью любого аргументы пары "имя-значение" 'SampleRate' или 'TimeStep' от любого из предыдущих двух синтаксисов.

Примеры

свернуть все

Преобразуйте таблицу, которая содержит даты и времена к расписанию.

Считайте данные об отключении электроэнергии из файла outages.csv к таблице. Таблица содержит и отключение электричества и времена восстановления.

T = readtable('outages.csv');
T(1:5,:)
ans=5×6 table
      Region          OutageTime        Loss     Customers     RestorationTime           Cause      
    ___________    ________________    ______    __________    ________________    _________________

    'SouthWest'    2002-02-01 12:18    458.98    1.8202e+06    2002-02-07 16:50    'winter storm'   
    'SouthEast'    2003-01-23 00:49    530.14    2.1204e+05                 NaT    'winter storm'   
    'SouthEast'    2003-02-07 21:15     289.4    1.4294e+05    2003-02-17 08:14    'winter storm'   
    'West'         2004-04-06 05:44    434.81    3.4037e+05    2004-04-06 06:10    'equipment fault'
    'MidWest'      2002-03-16 06:18    186.44    2.1275e+05    2002-03-18 23:23    'severe storm'   

Преобразуйте таблицу в расписание. Первая переменная с временами, OutageTime, становится временным вектором TT.

TT = table2timetable(T);
TT(1:5,:)
ans=5×6 timetable
       OutageTime         Region        Loss     Customers     RestorationTime           Cause      
    ________________    ___________    ______    __________    ________________    _________________

    2002-02-01 12:18    'SouthWest'    458.98    1.8202e+06    2002-02-07 16:50    'winter storm'   
    2003-01-23 00:49    'SouthEast'    530.14    2.1204e+05                 NaT    'winter storm'   
    2003-02-07 21:15    'SouthEast'     289.4    1.4294e+05    2003-02-17 08:14    'winter storm'   
    2004-04-06 05:44    'West'         434.81    3.4037e+05    2004-04-06 06:10    'equipment fault'
    2002-03-16 06:18    'MidWest'      186.44    2.1275e+05    2002-03-18 23:23    'severe storm'   

Индексируйте в TT с помощью времен строки от ее временного вектора. Можно обработать времена строки как метки, которые задают строки.

TT('2003-02-07 21:15',:)
ans=1×6 timetable
       OutageTime         Region       Loss     Customers     RestorationTime         Cause     
    ________________    ___________    _____    __________    ________________    ______________

    2003-02-07 21:15    'SouthEast'    289.4    1.4294e+05    2003-02-17 08:14    'winter storm'

Вычислите длительность отключений электроэнергии. Используйте точечный синтаксис, чтобы извлечь времена строки как вектор.

TT.OutageDuration = TT.RestorationTime - TT.OutageTime;
TT(1:5,:)
ans=5×7 timetable
       OutageTime         Region        Loss     Customers     RestorationTime           Cause          OutageDuration
    ________________    ___________    ______    __________    ________________    _________________    ______________

    2002-02-01 12:18    'SouthWest'    458.98    1.8202e+06    2002-02-07 16:50    'winter storm'         148:32:00   
    2003-01-23 00:49    'SouthEast'    530.14    2.1204e+05                 NaT    'winter storm'               NaN   
    2003-02-07 21:15    'SouthEast'     289.4    1.4294e+05    2003-02-17 08:14    'winter storm'         226:59:00   
    2004-04-06 05:44    'West'         434.81    3.4037e+05    2004-04-06 06:10    'equipment fault'       00:26:00   
    2002-03-16 06:18    'MidWest'      186.44    2.1275e+05    2002-03-18 23:23    'severe storm'          65:05:00   

Преобразуйте таблицу в расписание и задайте табличную переменную, которая становится временным вектором расписания.

Считайте данные об отключении электроэнергии из файла outages.csv к таблице. Таблица содержит и отключение электричества и времена восстановления.

T = readtable('outages.csv');
T(1:5,:)
ans=5×6 table
      Region          OutageTime        Loss     Customers     RestorationTime           Cause      
    ___________    ________________    ______    __________    ________________    _________________

    'SouthWest'    2002-02-01 12:18    458.98    1.8202e+06    2002-02-07 16:50    'winter storm'   
    'SouthEast'    2003-01-23 00:49    530.14    2.1204e+05                 NaT    'winter storm'   
    'SouthEast'    2003-02-07 21:15     289.4    1.4294e+05    2003-02-17 08:14    'winter storm'   
    'West'         2004-04-06 05:44    434.81    3.4037e+05    2004-04-06 06:10    'equipment fault'
    'MidWest'      2002-03-16 06:18    186.44    2.1275e+05    2002-03-18 23:23    'severe storm'   

Преобразуйте таблицу в расписание. Задайте вторую переменную с датами и временами, RestorationTime, как временной вектор расписания.

TT = table2timetable(T,'RowTimes','RestorationTime');
TT(1:5,:)
ans=5×6 timetable
    RestorationTime       Region          OutageTime        Loss     Customers           Cause      
    ________________    ___________    ________________    ______    __________    _________________

    2002-02-07 16:50    'SouthWest'    2002-02-01 12:18    458.98    1.8202e+06    'winter storm'   
    NaT                 'SouthEast'    2003-01-23 00:49    530.14    2.1204e+05    'winter storm'   
    2003-02-17 08:14    'SouthEast'    2003-02-07 21:15     289.4    1.4294e+05    'winter storm'   
    2004-04-06 06:10    'West'         2004-04-06 05:44    434.81    3.4037e+05    'equipment fault'
    2002-03-18 23:23    'MidWest'      2002-03-16 06:18    186.44    2.1275e+05    'severe storm'   

Преобразуйте таблицу в расписание путем добавления отдельного временного вектора, который содержит времена строки. Все табличные переменные становятся переменными расписания.

Reading1 = [98;97.5;97.9;98.1;97.9];
Reading2 = [120;111;119;117;116];
T = table(Reading1,Reading2)
T=5×2 table
    Reading1    Reading2
    ________    ________

        98        120   
      97.5        111   
      97.9        119   
      98.1        117   
      97.9        116   

Time = [seconds(1):seconds(1):seconds(5)];
TT = table2timetable(T,'RowTimes',Time)
TT=5×3 timetable
    Time     Reading1    Reading2
    _____    ________    ________

    1 sec        98        120   
    2 sec      97.5        111   
    3 sec      97.9        119   
    4 sec      98.1        117   
    5 sec      97.9        116   

Составление таблицы.

Reading1 = [98;97.5;97.9;98.1;97.9];
Reading2 = [120;111;119;117;116];
T = table(Reading1,Reading2)
T=5×2 table
    Reading1    Reading2
    ________    ________

        98        120   
      97.5        111   
      97.9        119   
      98.1        117   
      97.9        116   

Задайте частоту дискретизации 500 Гц. Преобразуйте T в расписание с помощью той частоты дискретизации и стартовое время строки нулевых секунд.

TT = table2timetable(T,'SampleRate',500)
TT=5×3 timetable
      Time       Reading1    Reading2
    _________    ________    ________

    0 sec            98        120   
    0.002 sec      97.5        111   
    0.004 sec      97.9        119   
    0.006 sec      98.1        117   
    0.008 sec      97.9        116   

Составление таблицы.

Reading1 = [98;97.5;97.9;98.1;97.9];
Reading2 = [120;111;119;117;116];
T = table(Reading1,Reading2)
T=5×2 table
    Reading1    Reading2
    ________    ________

        98        120   
      97.5        111   
      97.9        119   
      98.1        117   
      97.9        116   

Задайте временной шаг десяти секунд, с помощью функции seconds. Преобразуйте T в расписание с помощью того уровня выборки и стартовое время строки нулевых секунд.

TT = table2timetable(T,'TimeStep',seconds(10))
TT=5×3 timetable
      Time      Reading1    Reading2
    ________    ________    ________

    00:00:00        98        120   
    00:00:10      97.5        111   
    00:00:20      97.9        119   
    00:00:30      98.1        117   
    00:00:40      97.9        116   

Составление таблицы.

Reading1 = [98;97.5;97.9;98.1;97.9];
Reading2 = [120;111;119;117;116];
T = table(Reading1,Reading2)
T=5×2 table
    Reading1    Reading2
    ________    ________

        98        120   
      97.5        111   
      97.9        119   
      98.1        117   
      97.9        116   

Преобразуйте его в расписание путем определения временного шага десяти секунд и времени начала 5 секунд.

dt = seconds(10);
t0 = seconds(5);
TT = table2timetable(T,'TimeStep',dt,'StartTime',t0)
TT=5×3 timetable
     Time     Reading1    Reading2
    ______    ________    ________

    5 sec         98        120   
    15 sec      97.5        111   
    25 sec      97.9        119   
    35 sec      98.1        117   
    45 sec      97.9        116   

Входные параметры

свернуть все

Входная таблица.

Имя переменной из входной таблицы, заданной как вектор символов или скаляр строки.

Времена строки присвоены выходному расписанию, заданному как вектор datetime или вектор длительности. Число элементов rowTimes должно равняться количеству строк входной таблицы. Временные стоимости в rowTimes не должны быть уникальными, не отсортированы, или регулярными.

Частота дискретизации, заданная в виде положительного числа. Fs задает количество выборок в секунду (Гц).

Временной шаг, заданный как скаляр datetime или скаляр длительности.

Типы данных: datetime | duration | calendarDuration

Время начала, заданное как скаляр datetime или скаляр длительности.

  • Если t0 является значением datetime, то времена строки TT являются значениями datetime.

  • Если t0 является длительностью, то времена строки являются длительностью.

Если временной шаг, dt является календарным значением длительности, то t0 должен быть значением datetime.

Типы данных: datetime | duration

Выходные аргументы

свернуть все

Выведите расписание. Расписание может сохранить метаданные, такие как описания, переменные модули, имена переменных, и времена строки. Для получения дополнительной информации смотрите разделы Свойств timetable.

Советы

  • В определенных случаях можно вызвать table2timetable с синтаксисом, который задает шаг постоянного времени между временами строки, и все же table2timetable возвращает неправильное расписание. Этот результат происходит, когда вы задаете временной шаг с помощью календарного модуля времени и существует время строки, которое вводит неправильный шаг. Например, если вы создаете расписание с временным шагом одного календарного месяца, начиная 31 января 2019, затем это неправильно относительно месяцев.

    stime = datetime(2019,1,31);
    tstep = calmonths(1);
    T = table([1:3]');
    TT = table2timetable(T,'TimeStep',tstep,'StartTime',stime)
    
    TT =
    
      3×1 timetable
    
           Time        Var1
        ___________    ____
    
        31-Jan-2019     1  
        28-Feb-2019     2  
        31-Mar-2019     3  
    
    

    Кроме того, существуют другие случаи, где неисправности происходят из-за сдвигов с Летнего времени (DST) или ко временам строки, которые являются секундами прыжка. Эта таблица задает временные стоимости строки и временные шаги, которые могут неожиданно произвести неправильные расписания.

    Временная стоимость строки

    Временной шаг

    Время начала, заданное как 29-й, 30-й, или 31-й день месяца

    Номер календарных месяцев или четвертей

    Время начала, заданное как 29 февраля

    Номер календарных лет

    Любое время строки, произойдя между 1:00 и 2:00 в день, переключая с DST до стандартного времени (когда времена строки заданы как значения datetime, часовой пояс которых наблюдает DST),Номер календарных дней или месяцев

    Любое время строки, которое является вторым прыжком (когда времена строки заданы как значения datetime, часовой пояс которых является часовым поясом UTCLeapSecond),

    Временной шаг задан в любом календарном модуле (дни, недели, месяцы, четверти, или годы)

Вопросы совместимости

развернуть все

Не рекомендуемый запуск в R2018b

Расширенные возможности

Введенный в R2017b