buffer

Вектор буферного сигнала в матрицу систем координат данных

Описание

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

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

пример

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

пример

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

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 с подстилающим узлом 2. Для этого вы будете неоднократно звонить buffer для работы с каждым последующим входным кадром, используя opt параметр для поддержания согласованности в подстановке от одного буфера к следующему.

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

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

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

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

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 (подстановка), buffer пропускает p выборки между последовательными системами координат. Для примера, если x = 1:30 и n = 7, буфер с подстановкой 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 (подстановка), opt - целое число, значение в область значений [0,-p] определение количества исходных входных выборок, x(1:opt), чтобы пропустить перед добавлением выборок в буфер. Поэтому первое значение в буфере x(opt+1). По умолчанию opt равен нулю для буфера подстановки.

    Эта опция особенно полезна, когда текущая операция буферизации является одной в последовательности последовательных операций буферизации. Чтобы сохранить требуемое подзвено системы координат от одного буфера к следующему, 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 является буфером подстановки, имеет n строки и m столбцы, где m = floor((L-opt)/(n-p)) + (rem((L-opt),(n-p)) >= n).

Оставшиеся выборки, возвращенные как вектор. Если количество выборок в векторе входа (после соответствующих операций перекрытия или подстановки) превышает количество доступных мест в n-by- m буфер, оставшиеся выборки в x выводятся в векторных z, который для перекрывающегося буфера имеет длину L - m*(n-p) когда length(opt) = p или L - ((m-1)*(n-p)+n) когда opt = 'nodelay', и для буфера подстановки имеет длину (L-opt) - m*(n-p).

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

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

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

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

  • Для 0 < p < n (перекрытие), opt (как выход) содержит окончательную p выборки в последней системе координат буфера. Этот вектор может использоваться в качестве начального условия для последующей операции буферизации в последовательности последовательных операций буферизации. Это позволяет поддерживать требуемое перекрытие системы координат от одного буфера к следующему.

  • Для p < 0 (подстановка), 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).

    Обратите внимание, что для выхода буфера подстановки, opt всегда равен нулю при выводе z содержит данные.

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

[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 в этом случае заполнен нуль, что добавляет новые выборки в сигнал.

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

Расширенные возможности

См. также

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