isregular

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

Синтаксис

TF = isregular(TT)
TF = isregular(TT,unit)
[TF,dt] = isregular(___)

Описание

пример

TF = isregular(TT) возвращает 1 (true), если времена строки в расписании TT являются регулярными. В противном случае это возвращает 0 (false). Времена строки являются регулярными, если они увеличиваются или уменьшаются монотонно фиксированным временным шагом. Например, если времена строки подряд всегда отличаются на одну секунду, то времена являются регулярными.

пример

TF = isregular(TT,unit) возвращает 1 (true), если времена строки являются регулярными относительно календарного модуля длительности, заданного unit. Например, если времена строки являются значениями datetime, год которых и компоненты месяца являются регулярными к месяцу, и unit является 'month', затем isregular возвращает 1.

пример

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

Примеры

свернуть все

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

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

StockPrice = [109.0;107.82;113.17;128.01;116];
M = timetable(datetime(2016,1:5,3)',StockPrice)
M=5×2 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 array
   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×2 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 регулярными к календарному модулю, заданному unit. Таблица приводит календарные модули длительности, которые можно задать.

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

Описание

'years'

Регулярный к году

'quarters'

Регулярный к четверти

'months'

Регулярный к месяцу

'weeks'

Регулярный к неделе

'days'

Регулярный ко дню

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

Регулярный относительно времени

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

свернуть все

Регулярность времен строки, возвращенных как логический 1, если времена строки являются регулярными, и логический 0, если они не.

Временной шаг между временами строки, возвращенными как длительность или календарная длительность. Если расписание не обычно, то 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 в день, переключая с DST до стандартного времени (когда времена строки заданы как значения datetime, часовой пояс которых наблюдает DST),Номер календарных дней или месяцев

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

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

Введенный в R2017b