Буферизуйте сигнальный вектор в матрицу систем координат данных
Создайте буфер, содержащий 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
x
— Входной сигналВходной сигнал в виде вектора.
n
— Структурируйте длинуСтруктурируйте длину в виде положительного действительного скаляра.
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))
.
opt
— Опцияzeros(p,1)
(значение по умолчанию) | 'nodelay'
| вектор | целое числоОпция в виде вектора или целого числа.
Для 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
— Система координат данныхСистема координат данных, возвращенная как матрица. Каждая система координат данных занимает один столбец 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)
.
z
— Остающиеся выборкиОстающиеся выборки, возвращенные как вектор. Если количество выборок во входном векторе (после соответствующего наложения или 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
пустой вектор.
opt
— Последний p
выборкиПоследний 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
параметр должен использоваться.
Эта функция полностью поддерживает массивы графического процессора. Для получения дополнительной информации смотрите функции MATLAB Запуска на графическом процессоре (Parallel Computing Toolbox).
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.