exponenta event banner

seqperiod

Вычислить период последовательности

Описание

пример

p = seqperiod(x) возвращает целые числа, соответствующие периодам последовательностей в x. Период p вычисляется как минимальная длина подпоследовательности x(1:p) из x которое постоянно повторяется каждый p образцы.

пример

p = seqperiod(x,tol) определяет tol как абсолютный допуск для определения, когда два числа достаточно близки, чтобы рассматриваться как равные.

пример

[p,nr] = seqperiod(x) также возвращает количество повторений x(1:p) в x.

Примеры

свернуть все

Создайте многоканальный сигнал и определите период каждого столбца.

x = [4 0 1 6; 
     2 0 2 7; 
     4 0 1 5; 
     2 0 5 6];

p = seqperiod(x)
p = 1×4

     2     1     4     3

Первый столбец x имеет период 2. Второй столбец x имеет период 1. Третий столбец x не является периодическим, поэтому p(3) является только количеством строк x. Четвертый столбец x имеет период 3, хотя второе повторение периодической последовательности является неполным.

Вычислите количество повторений каждой периодической последовательности.

[~,nr] = seqperiod(x)
nr = 1×4

    2.0000    4.0000    1.0000    1.3333

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

Генерируют двухканальную синусоиду так, что один канал имеет четыре периода в интервале выборки, а другой канал имеет два периода. Постройте график синусоиды.

n = 0:31;
x = cos(2*pi./[8;16].*n)';

plot(n,x,'.-')
axis tight

Figure contains an axes. The axes contains 2 objects of type line.

Вычислите длины повторяющихся подпоследовательностей и количество повторений. Задание абсолютного допуска 1e-5.

[p,nr] = seqperiod(x,1e-5)
p = 1×2

     8    16

nr = 1×2

     4     2

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

a = permute([5 4 3 5 4 3 5 4],[3 1 2])
a = 
a(:,:,1) =

     5


a(:,:,2) =

     4


a(:,:,3) =

     3


a(:,:,4) =

     5


a(:,:,5) =

     4


a(:,:,6) =

     3


a(:,:,7) =

     5


a(:,:,8) =

     4

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

[p,nr] = seqperiod(a)
p = 3
nr = 2.6667

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

свернуть все

Входной массив, заданный как вектор, матрица или массив N-D.

  • Если x является матрицей, то seqperiod проверяет периодичность по каждому столбцу x.

  • Если x является многомерным массивом, то seqperiod проверяет периодичность вдоль первого размера массива x с размером больше 1.

Длина x не обязательно быть кратным p, так что в конце x.

Пример: sin(pi./[4;2]*(0:159))' задает двухканальную синусоиду. Второй канал имеет вдвое большую частоту, чем первый канал.

Типы данных: double

Абсолютный допуск для определения, когда два числа достаточно близки, чтобы их можно было рассматривать как равные, определяемые как положительный вещественный скаляр.

Типы данных: double

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

свернуть все

Период последовательности, возвращаемый как скаляр, вектор, матрица или массив N-D. Если последовательность не является периодической, то p равняется длине x вдоль выбранного размера.

  • Если x является матрицей, то p - вектор строки с тем же количеством столбцов, что и x.

  • Если x является многомерным массивом, то p является многомерным массивом целых чисел, первое измерение которых имеет размер 1. Остальные размеры p соответствуют остальным размерам x с размерами больше 1.

Число повторений последовательности, возвращаемых в виде скаляра, вектора, матрицы или N-D массива. nr имеет те же размеры, что и p. Элементы nr не обязательно целые числа.

Представлен до R2006a