table2timetable

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

Описание

пример

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

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

  • Если T M- N таблица с именами строки, затем table2timetable присваивает имена строки T к переменной TT. В результате TT M- 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×5 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×5 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×6 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×5 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×2 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×2 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×2 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×2 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, часовым поясом которых является UTCLeapSeconds timeZone . Для списка секунд прыжка смотрите leapseconds.

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

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

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

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

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

Введенный в R2017b