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