Буферный сигнальный вектор в матрицу кадров данных
y = buffer(x,n)
y = buffer(x,n,p)
y = buffer(x,n,p,opt)
[y,z] = buffer(...)
[y,z,opt] = buffer(...)
y = buffer(x,n)
делит сигнальный вектор длины-L
x
в неперекрывающиеся сегменты данных (кадры) длины n
. Каждый кадр данных занимает один столбец матричного вывода y
, который имеет строки n
и столбцы ceil(L/n)
. Если L
не является равномерно делимым n
, последний столбец дополнен нулем к длине n
.
y = buffer(x,n,p)
перекрытия или underlaps последовательные кадры в выходной матрице выборками p
:
Для 0
< p
< n
(перекрытие), buffer
повторяет итоговые выборки p
каждого кадра в начале следующего кадра. Например, если x
= 1:30
и n
= 7
, перекрытие p
= 3
выглядит так.
Первый кадр запускается с нулей p
(начальное условие по умолчанию), и количеством столбцов в y
является ceil(L/(n-p))
.
Для p
< 0
(underlap), buffer
пропускает выборки p
между последовательными кадрами. Например, если x
= 1:30
и n
= 7
, буфер с underlap p
= -3
выглядит так.
Количеством столбцов в y
является ceil(L/(n-p))
.
y = buffer(x,n,p,opt)
задает вектор выборок, чтобы предшествовать x(1)
в перекрывающемся буфере или количеству начальных выборок, чтобы пропустить в буфере underlapping:
Для 0
< p
< n
(перекрытие), opt
задает вектор длины-p
, чтобы вставить перед x(1)
в буфер. Этот вектор может быть рассмотрен начальным условием, которое необходимо, когда текущая операция буферизации один в последовательности последовательных операций буферизации. Чтобы поддержать желаемое перекрытие кадра от одного буфера до следующего, opt
должен содержать итоговые выборки p
предыдущего буфера в последовательности. Смотрите Непрерывную Буферизацию ниже.
По умолчанию opt
является zeros(p,1)
для перекрывающегося буфера. Установите opt
на 'nodelay'
пропускать начальное условие и начинать заполнять буфер сразу с x(1)
. В этом случае L
должен быть length(p)
или дольше. Например, если x
= 1:30
и n
= 7
, буфер с перекрытием p
= 3
выглядит так.
Для p
< 0
(underlap), opt
является целочисленным значением в области значений [0,-p]
, задающий количество начальных входных выборок, x(1:opt)
, чтобы пропустить перед добавляющими выборками к буферу. Первым значением в буфере является поэтому x(opt+1)
. По умолчанию opt
является нулем для буфера underlapping.
Эта опция особенно полезна, когда текущая операция буферизации один в последовательности последовательных операций буферизации. Чтобы поддержать желаемый кадр underlap от одного буфера до следующего, opt
должен равняться различию между общим количеством точек, чтобы пропустить между кадрами (p
) и число точек, которые были доступны, чтобы быть пропущенными в предыдущем входе к buffer
. Если бы предыдущий вход имел меньше, чем точки p
, которые могли бы быть пропущены после заполнения последнего кадра того буфера, остающиеся точки opt
должны быть удалены из первого кадра текущего буфера. Смотрите Непрерывную Буферизацию для примера того, как это работает на практике.
[y,z] = buffer(...)
делит сигнальный вектор длины-L
x
в кадры длины n
и выходные параметры только полные кадры в y
. Если y
является перекрывающимся буфером, он имеет строки n
и столбцы m
, где m = floor(L/(n-p))
когда length(opt) = p
или m = floor((L-n)/(n-p))+1
когда opt = 'nodelay'
.
Если y
является буфером underlapping, он имеет строки n
и столбцы m
, где m = floor((L-opt)/(n-p)) + (rem((L-opt),(n-p)) >= n)
.
Если количество выборок во входном векторе (после соответствующего наложения или underlapping операций) превышает количество мест, доступных в n
-by-m
буфер, остающиеся выборки в x
выводятся в векторном z
, который для перекрывающегося буфера имеет длину L - m*(n-p)
, когда length(opt) = p
или L - ((m-1)*(n-p)+n)
, когда opt = 'nodelay'
, и для буфера underlapping имеет длину (L-opt) - m*(n-p)
.
Выведите доли z
та же ориентация (строка или столбец) как x
. Если нет никаких остающихся выборок во входе после буфера с заданным перекрытием, или underlap заполнен, z
является пустым вектором.
[y,z,opt] = buffer(...)
возвращает последние выборки p
перекрывающегося буфера в выводе opt
. В буфере underlapping opt
является различием между общим количеством точек, чтобы пропустить между кадрами (-p
) и число точек в x
, которые были доступны, чтобы быть пропущенными после заполнения последнего кадра:
Для 0
< p
< n
(перекрытие), opt
(как вывод) содержит итоговые выборки p
в последнем кадре буфера. Этот вектор может использоваться в качестве начального условия для последующей операции буферизации в последовательности последовательных операций буферизации. Это позволяет желаемому перекрытию кадра сохраняться от одного буфера до следующего. Смотрите Непрерывную Буферизацию ниже.
Для p
< 0
(underlap), opt
(как вывод) является различием между общим количеством точек, чтобы пропустить между кадрами (-p
) и число точек в x
, которые были доступны, чтобы быть пропущенными после заполнения последнего кадра: opt = m*(n-p) + opt - L
, где opt
справа является входным параметром к buffer
и opt
слева, является выходным аргументом. z
является пустым вектором. Здесь m
является количеством столбцов в буфере, который является m = floor((L-opt)/(n-p)) + (rem((L-opt),(n-p))>=n)
.
Обратите внимание на то, что для буфера underlapping вывод opt
является всегда нулем, когда вывод z
содержит данные.
Вывод opt
для буфера underlapping особенно полезен, когда текущая операция буферизации один в последовательности последовательных операций буферизации. Вывод opt
от каждой операции буферизации задает количество выборок, которые должны быть пропущены в начале следующей операции буферизации, чтобы поддержать желаемый кадр underlap от одного буфера до следующего. Если бы меньше, чем точки p
были доступны, чтобы быть пропущенными после заполнения последнего кадра текущего буфера, остающиеся точки opt
должны быть удалены из первого кадра следующего буфера.
В последовательности буферизации операций opt
вывод от каждой операции должен использоваться в качестве входа opt
к последующей операции буферизации. Это гарантирует, что желаемое перекрытие кадра или underlap сохраняются с буфера на буфер, а также от кадра до кадра в том же буфере. Смотрите Непрерывную Буферизацию ниже для примера того, как это работает на практике.
Сообщения об ошибке отображены когда p
≥n
или length(opt)
≠length(p)
в перекрывающемся буферном случае:
Frame overlap P must be less than the buffer size N. Initial conditions must be specified as a length-P vector.