buffer

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

Описание

y = buffer(x,n) делит длину-L сигнальный вектор x в неперекрывающиеся сегменты данных (системы координат) длины n.

y = buffer(x,n,p) перекрытия или underlaps последовательные системы координат в выходной матрице p выборки.

пример

y = buffer(x,n,p,opt) задает вектор из выборок, чтобы предшествовать x(1) в перекрывающемся буфере или количестве начальных выборок, чтобы пропустить в буфере underlapping.

пример

[y,z] = buffer(___) делит длину-L сигнальный вектор x в системы координат длины n, и выходные параметры только полные системы координат в y. Векторный z содержит остающиеся выборки. Этот синтаксис может включать любую комбинацию входных параметров от предыдущих синтаксисов.

[y,z,opt] = buffer(___) возвращает последний p выборки перекрывающегося буфера в выходе opt.

Примеры

свернуть все

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

data = buffer(1:1100,11);

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

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

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

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

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

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

for i = 1:size(data,2)
    x = data(:,i);
    [y,z,oppt] = buffer([z;x],n,p,opt);
    if i <= 4
        disp(' '), i, ifrm = [z;x]', opts = [opt oppt], y, z, disp(' ')
   end
   opt = oppt;
end
 
i = 1
ifrm = 1×13

    10    11     1     2     3     4     5     6     7     8     9    10    11

opts = 1×2

    -5     9

y = 4×3

    -5     3     6
     1     4     7
     2     5     8
     3     6     9

z = 2×1

    10
    11

 
 
i = 2
ifrm = 1×12

    22    12    13    14    15    16    17    18    19    20    21    22

opts = 1×2

     9    21

y = 4×4

     9    12    15    18
    10    13    16    19
    11    14    17    20
    12    15    18    21

z = 22
 
 
i = 3
ifrm = 1×11

    23    24    25    26    27    28    29    30    31    32    33

opts = 1×2

    21    33

y = 4×4

    21    24    27    30
    22    25    28    31
    23    26    29    32
    24    27    30    33

z =

  0x1 empty double column vector

 
 
i = 4
ifrm = 1×13

    43    44    34    35    36    37    38    39    40    41    42    43    44

opts = 1×2

    33    42

y = 4×3

    33    36    39
    34    37    40
    35    38    41
    36    39    42

z = 2×1

    43
    44

 

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

data = buffer(1:1100,11);

Возьмите data(:,1) как первый A/D выход, содержа первые 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.

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

for i = 1:size(data,2)
   x = data(:,i);
   [y,z,oppt] = buffer([z';x],n,p,opt);
   if i <= 3
       disp(' '), i, ifrm = [z';x]', opts = [opt oppt], y, z, disp(' ')
   end
   opt = oppt;
end
 
i = 1
ifrm = 1×11

     1     2     3     4     5     6     7     8     9    10    11

opts = 1×2

     1     2

y = 4×2

     2     8
     3     9
     4    10
     5    11

z =

  1x0 empty double row vector

 
 
i = 2
ifrm = 1×14

    20    21    22    12    13    14    15    16    17    18    19    20    21    22

opts = 1×2

     2     0

y = 4×1

    14
    15
    16
    17

z = 1×3

    20    21    22

 
 
i = 3
ifrm = 1×13

    32    33    23    24    25    26    27    28    29    30    31    32    33

opts = 1×2

     0     0

y = 4×2

    20    26
    21    27
    22    28
    23    29

z = 1×2

    32    33

 

Входные параметры

свернуть все

Входной сигнал в виде вектора.

Структурируйте длину в виде положительного действительного скаляра.

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

  • Для 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)).

Опция в виде вектора или целого числа.

  • Для 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, который имеет n строки и ceil(L/n) столбцы. Если L не является равномерно делимым n, последний столбец дополнен нулем к длине n.

  • Если y перекрывающийся буфер, он имеет n строки и m столбцы, где m = floor(L/(n-p)) когда length(opt) = p или m = ceil((L-p)/(n-p)) когда 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).

  • Если y перекрывающийся буфер или неперекрывающийся буфер, затем z имеет ту же ориентацию (строка или столбец) как x.

  • Если y буфер underlapping, затем z возвращен как вектор-строка.

Если нет никаких остающихся выборок во входе после буфера с заданным перекрытием, или underlap заполнен, z пустой вектор.

Последний p выборки, возвращенные как вектор. В буфере underlapping, opt различие между общим количеством точек, чтобы пропустить между системами координат (-p) и число точек в x это было доступно, чтобы быть пропущенным после заполнения последней системы координат. В последовательности буферизации операций, opt выход от каждой операции должен использоваться в качестве opt введите к последующей операции буферизации. Это гарантирует, что желаемое перекрытие системы координат или underlap обеспечены с буфера на буфер, а также от системы координат до системы координат в том же буфере. Смотрите Непрерывную Буферизацию для примера того, как это работает на практике.

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

Диагностика

Сообщения об ошибке отображены когда 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