buffer

Буферизуйте сигнальный вектор в матрицу систем координат данных

Синтаксис

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- 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 обеспечены с буфера на буфер, а также от системы координат до системы координат в том же буфере. Смотрите Непрерывную Буферизацию ниже для примера того, как это работает на практике.

Примеры

свернуть все

Создайте буфер, содержащий 100 систем координат, каждого с 11 выборками.

data = buffer(1:1100,11);

Возьмите системы координат (столбцы) в матричном data быть последовательными выходными параметрами платы сбора данных, производящей физический сигнал: data(:,1) первый D/A выход, содержа первые 11 выборок сигнала; data(:,2) второй выход, содержа следующие 11 выборок сигнала, и так далее.

Вы хотите повторно буферизовать этот сигнал от полученного формата кадра 11 к формату кадра 4 с перекрытием 1. Вызовите buffer работать с каждым последовательным входным кадром, с помощью opt параметр, чтобы обеспечить непротиворечивость в перекрытии от одного буфера до следующего.

Установите буферные параметры. Задайте значение-5 для y(1). Вектор переноса пуст первоначально.

n = 4;
p = 1;
opt = -5;
z = [];

Теперь неоднократно вызывайте buffer, каждый раз передавая в новой системе координат сигнала (столбец) от data. Выборки переполнения (возвратился в z) переносятся и предварительно ожидаются к входу в последующем вызове buffer.

for i = 1:size(data,2)
   x = data(:,i);
   [y,z,opt] = buffer([z;x],n,p,opt);
end

Вот то, что происходит во время первых четырех итераций.

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

Создайте буфер, содержащий 100 систем координат, каждого с 11 выборками.

data = buffer(1:1100,11);

Возьмите data(:,1) как первый D/A выход, содержа первые 11 выборок сигнала, data(:,2) как второй выход, содержа следующие 11 выборок сигнала, и так далее.

Вы хотите повторно буферизовать этот сигнал от полученного формата кадра 11 к формату кадра 4 с underlap 2. Для этого вы будете неоднократно вызывать buffer работать с каждым последовательным входным кадром, с помощью opt параметр, чтобы обеспечить непротиворечивость в underlap от одного буфера до следующего.

Установите буферные параметры. Задайте новый формат кадра 4 и underlap-2. Пропустите первый входной элемент, x(1), установкой opt к 1. Вектор переноса пуст первоначально.

n = 4;
p = -2;
opt = 1;
z = [];

Теперь неоднократно вызывайте buffer, каждый раз передавая в новой системе координат сигнала (столбец) от data. Выборки переполнения (возвратился в z) переносятся и предварительно ожидаются к входу в последующем вызове buffer.

for i = 1:size(data,2)
   x = data(:,i);
   [y,z,opt] = buffer([z';x],n,p,opt);
end

Вот то, что происходит во время первых трех итераций.

Размер выходной матрицы, y, может варьироваться отдельным столбцом от одной итерации до следующего. Это типично для буферизации операций с перекрытием или 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.

Больше о

свернуть все

Непрерывная буферизация

В непрерывной операции буферизации, векторном входе к buffer функция представляет одну систему координат в последовательности систем координат, которые составляют дискретный сигнал. Эти системы координат сигнала могут произойти в основанном на системе координат процессе сбора данных, или в рамках основанного на системе координат алгоритма как БПФ.

Как пример, вы можете получить данные из карты A/D в системах координат 64 выборок. В самом простом случае вы могли повторно буферизовать данные в системы координат 16 выборок; buffer с n= 16  создает буфер четырех систем координат от каждого входного кадра с 64 элементами. Результат состоит в том, что сигнал формата кадра 64 был преобразован в сигнал формата кадра 16; никакие выборки не были добавлены или удалены.

В общем случае, где исходный формат кадра сигнала, L, не является одинаково делимым новым форматом кадра, n, переполнение от последней системы координат должно быть получено и переработано в следующий буфер. Можно сделать это путем итеративного вызова buffer на входе x с синтаксисом 2D выходного аргумента:

[y,z] = buffer([z;x],n)     % x is a column vector.
[y,z] = buffer([z,x],n)     % x is a row vector.

Это просто получает любое переполнение буфера в z, и предварительно ожидает данные к последующему входу в следующем вызове buffer. Снова, входной сигнал, x, из формата кадра L, был преобразован в сигнал формата кадра n без любой вставки или удаления выборок.

Обратите внимание на то, что непрерывная буферизация не может быть сделана с синтаксисом одно выхода   y = buffer(...), потому что последняя система координат y в этом случае дополненный нуль, который добавляет новые выборки в сигнал.

Непрерывная буферизация в присутствии перекрытия и underlap обработана с opt параметр, который используется в качестве обоих ввод и вывод к buffer. Эти два примера на этой странице демонстрируют как opt параметр должен использоваться.

Смотрите также

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