buffer

Функция, которая преобразует вектор входных данных в матрицу-буфер.

Синтаксис:

y = buffer(x, n);

y = buffer(x, n, p);

y = buffer(x, n, p, optIn);

y = buffer(x, n, "zArray", z);

y = buffer(x, n, p, "zArray", z);

y = buffer(x, n, p, optIn, "zArray", z);

y = buffer(x, n, "optArray", z, optOut);

y = buffer(x, n, p, "optArray", z, optOut);

y = buffer(x, n, p, optIn, "optArray", z, optOut);

Аргументы:

Имя Тип данных Описание
x array Вектор входных данных
n integer Количество строк буфера (размер кадра)
p integer Коэффициент перекрытия
optIn integer Задержка начала буферизации
z array Выходной массив, заполняемый данными из x, которые не поместились в буфер
optOut array Выходной вектор с p последними элементами буфера
"zArray", "optArray" string Флаги, указывающие на дополнительные выходные параметры функции

Описание:

buffer(x, n) – функция возвращает буфер с n строками и Ceil(L/n) столбцами, где L – размер вектора входных данных x. Буфер последовательно заполняется элементами вектора x;

buffer(x, n, p) – функция осуществляет перекрытие кадров (столбцов) буфера на p элементов. При 0 < p < n (перекрытие) буфер повторяет p последних элементов каждого кадра в начале следующих. Первый кадр всегда начинается с p нулей. Число строк равно n, а количество столбцов равно Ceil(L/n - p), где L – размер вектора входных данных x. При p < 0 (отрицательное перекрытие) буфер пропускает p элементов в начале всех кадров, кроме первого. Число строк равно n, а количество столбцов равно Ceil(L/n - p), где L – размер вектора входных данных x;

buffer(x, n, p, optIn) – функция задает вектор элементов, который нужно вставить перед началом в случае перекрывающегося буфера, или число начальных элементов, которые нужно пропустить для буфера с отрицательным перекрытием. При 0 < p < n (перекрытие) optIn – вектор размером p, который будет вставлен в начале буфера. Этот вектор можно обозначить как начальное состояние. Если нужно пропустить начальное состояние буфера, то вместо вектора нужно подать строковый параметр “nodelay”, тогда y будет заполняться с первого элемента. В таком случае размер входного вектора должен быть не меньше p. При p < 0 (отрицательное перекрытие) optIn должно быть целым в диапазоне [0, -p]. Это число обозначает, какое количество входных элементов д олжно быть пропущено перед заполнением буфера;

buffer(..., "zArray", z) – буфер заполняется только целыми кадрами, в z записываются элементы из незаполненного столбца;

buffer(..., "optArray", z, optOut) – буфер дополнительно возвращает вектор с p последними элементами заполненного кадра, если 0 < p < n (перекрытие). Если p < 0 (отрицательное перекрытие), то optOut – это разница между пропускаемыми элементами (-p) и числом элементов, которые можно пропустить после заполнения последнего кадра буфера, при этом optOut всегда будет равен нулю, если вектор z содержит элементы.

Результат:

Имя Тип данных Описание
y matrix Матрица-буфер

Пример 1:

var   x: array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], // Входной массив
   N: integer = 5; // Количество строк в буфере
y = buffer(x,  N);

В результате переменной y будет присвоено значение буфера

[1, 6],

[2, 7],

[3, 8],

[4, 9],

[5, 10].

Пример 2:

var   x: array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], // Входной массив
   N: integer = 5, // Количество строк в буфере
   P: integer = 3; // Коэффициент перекрытия
y = buffer(x, N, P);

В результате переменной y будет присвоено значение буфера

[0 , 0 , 2 , 4 , 6],

[0 , 1 , 3 , 5 , 7],

[0 , 2 , 4 , 6 , 8],

[1 , 3 , 5 , 7 , 9],

[2 , 4 , 6 , 8 , 10].

Пример 3:

var   x: array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], // Входной массив
   N: integer = 7, // Количество строк в буфере
   P: integer = 3, // Коэффициент перекрытия
   optIn: array = [1, 0, 1]; // Задержка начала буферизации
output
   z: array; // Остатки массива x
y = buffer(x, N, P, optIn, "zArray", z);

В результате переменной y будет присвоено значение буфера

[1 , 2],

[0 , 3],

[1 , 4],

[1 , 5],

[2 , 6].

[3 , 7].

[4 , 8].

а переменной z будет присвоено значение [9 , 10],

Пример 4:

var   x: array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], // Входной массив
   N: integer = 7, // Количество строк в буфере
   P: integer = 3, // Коэффициент перекрытия
   optIn: string = "nodelay"; // Задержка начала буферизации (пропуск начального состояния)
output
   z: array, // Остатки массива x
   optOut: array; // Вектор с p последними элементами буфера
y = buffer(x, N, P, optIn, "optArray", z, optOut);

В результате переменной y будет присвоено значение буфера

[1],

[2],

[3],

[4],

[5].

[6].

[7].

переменной z будет присвоено значение [8, 9 , 10], а optOut - [5, 6, 7]

Пример 5:

var   x: array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], // Входной массив
   N: integer = 7, // Количество строк в буфере
   P: integer = -5, // Коэффициент перекрытия
   optIn: integer = 3; // Задержка начала буферизации

output
   z: array, // Остатки массива x
   optOut: integer; // Разница между -p и количеством оставшихся элементов в x
y = buffer(x, N, P, optIn, "optArray", z, optOut);

В результате переменной y будет присвоено значение буфера

[4],

[5],

[6],

[7],

[8].

[9].

[10].

переменной optOut будет присвоено значение [2], а z - пустой массив.

Дополнительные материалы

Нет.