isregular

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

Описание

пример

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

пример

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, часовым поясом которых является UTCLeapSeconds timeZone

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

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

Введенный в R2017b