exponenta event banner

isregular

Определить, является ли расписание регулярным по времени или календарной единице

Описание

пример

tf = isregular(TT,timeComponent) прибыль 1 (true), если расписание TT является регулярным по отношению к указанному времени или календарной единице. В противном случае возвращается 0 (false). Расписание является регулярным, если его время строк монотонно увеличивается или уменьшается на один и тот же временной шаг.

  • Если время строки TT являются datetime значения, то временные шаги между ними могут быть регулярными по отношению к календарной единице, такой как месяцы, но нерегулярными по отношению к точному прошедшему времени. Укажите время или календарную единицу с помощью timeComponent входной аргумент.

    Например, если время строки является обычным месячным datetime значения, и timeComponent является 'month', то isregular прибыль 1. Но если timeComponent является 'time', то isregular прибыль 0 потому что разные месяцы могут представлять различную продолжительность времени.

  • Если время строки равно duration значения, затем укажите timeComponent как 'time' или используйте следующий синтаксис. duration тип данных не представляет время с использованием календарных единиц.

пример

tf = isregular(TT) эквивалентно isregular(TT,'time').

пример

[tf,dt] = isregular(___) прибыль dt, временной шаг между временами строк. Если TT является регулярным, то dt является либо duration значение или calendarDuration значение. Если TT не является регулярным, то dt является NaN значение.

Примеры

свернуть все

Создайте расписание с помощью месячного вектора времени. Определите, является ли оно регулярным в отношении времени, а затем в отношении месяцев.

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

StockPrice = [109.0;107.82;113.17;128.01;116];
M = timetable(datetime(2016,1:5,3)',StockPrice)
M=5×1 timetable
       Time        StockPrice
    ___________    __________

    03-Jan-2016         109  
    03-Feb-2016      107.82  
    03-Mar-2016      113.17  
    03-Apr-2016      128.01  
    03-May-2016         116  

Определить, M является регулярным расписанием.

TF = isregular(M)
TF = logical
   0

M не является регулярным, потому что первые пять месяцев имеют разное количество дней. Вы можете использовать diff функция для вычисления разностей во временных шагах между последовательными временами в M. Различия представляют собой длительности, форматируемые для отображения временных шагов в виде часов, минут и секунд.

D = diff(M.Time)
D = 4x1 duration
   744:00:00
   696:00:00
   744:00:00
   720:00:00

Определить, M является регулярным в отношении месяцев путем указания 'month' в качестве единицы измерения.

TF = isregular(M,'months')
TF = logical
   1

Создайте расписание. Определите, является ли он регулярным, а затем верните размер временного шага, если он есть.

Time = [minutes(0):minutes(15):minutes(60)]';
Pulse = [72 75 80 73 69]';
TT = timetable(Time,Pulse)
TT=5×1 timetable
     Time     Pulse
    ______    _____

    0 min      72  
    15 min     75  
    30 min     80  
    45 min     73  
    60 min     69  

[TF,dt] = isregular(TT)
TF = logical
   1

dt = duration
   15 min

TT является регулярным расписанием.

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

свернуть все

Расписание ввода.

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

Единица измерения времени или календаря

Описание

'years'

Регулярно в год

'quarters'

Регулярно в квартал

'months'

Регулярно в месяц

'weeks'

Регулярно в неделю

'days'

Регулярно в день

'time' (по умолчанию)

Регулярно в отношении времени

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

свернуть все

True или false, возвращается как логическое значение 1 если время строки является регулярным и логическим 0 если нет.

Шаг времени между временами строк, возвращаемый как duration или calendarDuration значение. Если расписание не является регулярным, то dt является NaN значение.

Совет

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

    stime = datetime(2019,1,31);
    tstep = calmonths(1);
    TT = timetable('Size',[3 1],'VariableTypes',{'double'},...
                   'TimeStep',tstep,'StartTime',stime);
    tf = isregular(TT,'month')
    
    tf =
    
      logical
    
       0
    

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

    Значение времени строки

    Шаг времени

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

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

    Время начала указано как 29 февраля.

    Количество календарных лет.

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

    Любое время строки, являющееся секундой скачка (когда время строки указано как datetime значения, часовой пояс которых UTCLeapSeconds часовой пояс). Список секунд скачка см. в разделе leapseconds.

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

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

.
Представлен в R2016b