Функция, которая преобразует вектор входных данных в матрицу-буфер.
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 | Матрица-буфер |
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].
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].
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],
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]
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 - пустой массив.
Нет.