isregular

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

Описание

пример

tf = isregular(D) возвращает 1 TRUE) если D является регулярным относительно времени. В противном случае это возвращает 0 ложь). Вход D является регулярным, если его времена находятся в последовательности, которая является строго монотонной (или увеличение или уменьшение) с уникальным временным шагом.

Входной параметр D может быть a:

  • datetime вектор.

  • duration вектор.

  • Расписание. Это является регулярным, если его вектор времен строки является регулярным.

Этот синтаксис эквивалентен isregular(D,'time').

пример

tf = isregular(D,timeUnit) определяет если D является регулярным относительно календарного модуля или требуемого времени.

Например, D может быть регулярным относительно месяцев, но неправильным относительно точного прошедшего времени, потому что различные месяцы могут иметь различные числа дней. Определить если D является регулярным относительно месяцев, задайте timeUnit как 'months'.

пример

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

Примеры

свернуть все

Создайте duration вектор при помощи seconds функция.

D = seconds(1:5)
D = 1x5 duration
   1 sec   2 sec   3 sec   4 sec   5 sec

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

tf = isregular(D)
tf = logical
   1

Измените последний элемент D.

D(end) = seconds(10)
D = 1x5 duration
    1 sec    2 sec    3 sec    4 sec   10 sec

D является более не регулярным.

tf = isregular(D)
tf = logical
   0

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

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

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. Различиями является duration значения, отформатированные, чтобы отобразить временные шаги как часы, минуты и секунды.

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

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

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 обычное расписание.

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

свернуть все

Входная переменная в виде расписания, datetime вектор или duration вектор.

Время или календарный модуль в виде вектора символов или строкового скаляра. isregular определяет если времена подряд D являются регулярными ко времени или календарному модулю, заданному timeUnit. Таблица приводит модули, которые можно задать.

Время или календарный модуль

Описание

'years'

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

'quarters'

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

'months'

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

'weeks'

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

'days'

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

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

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

  • Если D datetime вектор или расписание, временами строки которого является datetime значения, затем временные шаги могут быть регулярными относительно календарного модуля, такого как месяцы, но неправильный относительно точного прошедшего времени.

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

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

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

свернуть все

TRUE или FALSE, возвращенный как логический 1 если вход является регулярным и логический 0 если это не.

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

Советы

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

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

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

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

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

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

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

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

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

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

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

Введенный в R2017b