Фаза размотки сигнала
Системный тулбокс DSP/сигнальные операции
Блок Unwrap разворачивает каждый канал входа путем сложения или вычитания соответствующих множителей на 2, для каждого элемента канала. Блок распознает разрывы фазы, большие, чем значение параметра Tolerance. Для получения дополнительной информации об отмене переноса фазы смотрите Определение отмены фазы.
Port_1
- Вход сигналаВходной вход сигнала unwrap, заданный как скаляр, вектор или матрица. Входной параметр должен иметь значения фазы радиана.
Типы данных: single
| double
Port_1
- Выход сигналаВыход неотвернутого сигнала, возвращенный как скаляр, вектор или матрица.
Блок сохраняет размер и размерность входа, и скорость выходного порта равна скорости входного порта.
Типы данных: single
| double
Tolerance (radians)
- Размер переходаpi
(по умолчанию) | скалярное значениеРазмер перехода, который блок распознает как истинную разрывность фазы. Значение по умолчанию задано равным и не меньше, чтобы избежать изменения легитимных функций. Чтобы увеличить чувствительность блока, установите Tolerance на значение чуть меньше, чем
Типы данных: single
| double
| int8
| int16
| int32
| uint8
| uint16
| uint32
Input processing
- Метод обработки входовColumns as channels (frame based)
(по умолчанию) | Elements as channels (sample based)
Укажите, как блок должен обрабатывать вход. Можно задать этот параметр в один из опций:
Columns as channels (frame based)
(по умолчанию) - Когда вы выбираете эту опцию, блок обрабатывает каждый столбец входа как отдельный канал.
Elements as channels (sample based)
- Когда вы выбираете эту опцию, блок обрабатывает каждый элемент входа как отдельный канал.
Do not unwrap phase discontinuities between successive frames
- Проверка последующих систем координатoff
(по умолчанию) | on
Когда вы снимаете этот флажок, блок игнорирует контуры между входными кадрами и не сбрасывает начальное значение фазы в нуль каждый раз, когда получен новый вход. В этом режиме блок постоянно разворачивает данные в каждом столбце входа.
Этот рисунок иллюстрирует, как блок разворачивает данные в этом режиме.
Когда вы устанавливаете этот флажок, блок обрабатывает каждую систему координат входных данных независимо и сбрасывает начальное значение фазы для каждого нового входного кадра.
Этот рисунок иллюстрирует, как блок разворачивает данные в этом режиме.
Для получения дополнительной информации см. Раздел «Обработка на основе фреймов».
Чтобы включить этот параметр, установите параметр Input processing равным Columns as channels (frame based)
. В основанном на выборке режиме обработки блок не сбрасывает начальное значение фазы, чтобы нуль для каждого нового входа. Для получения дополнительной информации смотрите Sample-Based Processing.
Типы данных |
|
Прямое сквозное соединение |
|
Многомерные сигналы |
|
Сигналы переменного размера |
|
Обнаружение пересечения нулем |
|
Размотка или размотка фазы - это процесс, часто используемый для восстановления исходной фазы сигнала. Алгоритмы Unwrap добавляют соответствующие множители 2, к каждому входу фазы, чтобы восстановить исходные значения фазы, как показано на схеме. Для получения дополнительной информации об алгоритме размотки, используемом этим блоком, смотрите Unwrap Method.
Алгоритмы, которые вычисляют фазу сигнала, часто только выводят фазы между - Для образца такие алгоритмы вычисляют фазу греха (2, + 3) равной 3, так как sin (3) = sin (2, + 3), а так как фактическая фаза, 2, + 3, не находится между - Такие алгоритмы вычисляют фазы sin (-4, + 3) и sin (16, + 3), которые также будут 3.
Блок Unwrap разворачивает каждый канал своего входа матрицы или вектора входа, добавляя 2, k к каждому последующему элементу канала и обновляя k на каждом переходе фазы. Переход фазы происходит, когда различие между двумя соседними значениями фазы превышает значение параметра Tolerance.
Этот код показывает, как блок разворачивает данные в данном входном канале u.
k=0; % initialize k to 0 i=1; % initialize the counter to 1 alpha=pi; % set alpha to the desired Tolerance. In this case, pi for i = 1:(size(u)-1) yout(i,:)=u(i)+(2*pi*k); % add 2*pi*k to ui if((abs(u(i+1)-u(i)))>(abs(alpha))) %if diff is greater than alpha, increment or decrement k if u(i+1)<u(i) % if the phase jump is negative, increment k k=k+1; else % if the phase jump is positive, decrement k k=k-1; end end end yout((i+1),:)=u(i+1)+(2*pi*k); % add 2*pi*k to the last element of the input
Когда вы конфигурируете блок для выполнения обработки на основе фрейма, путем установки параметра Input processing на Columns as channels (frame based)
блок поддерживает два различных режима размотки. В обоих режимах блок добавляет 2, k к элементам каждого канала входа и обновляет k при каждой разрывности фазы. Различие между двумя режимами заключается в том, как часто блок обнуляет начальное значение фазы (k). Можно выбрать удаление данных через контуры системы координат (по умолчанию) или удаление только внутри входных кадров путем сброса начального значения фазы каждый раз при получении нового входного кадра.
Разворачивание контуров системы координат
В режиме по умолчанию блок игнорирует контуры между входными кадрами и продолжает разматывать данные в каждом канале, не сбрасывая начальное значение фазы в нуль. Чтобы задать этот режим, снимите флажок Do not unwrap phase discontinuities between successive frames. Этот рисунок иллюстрирует, как блок разворачивает данные в этом режиме.
Разворачивание внутри систем координат
Когда вы устанавливаете флажок Do not unwrap phase discontinuities between successive frames, блок обрабатывает каждую систему координат входных данных независимо. В этом режиме блок сбрасывает начальное значение фазы, чтобы нуль каждый раз, когда принимается новый входной кадр. Этот рисунок иллюстрирует, как блок разворачивает данные в этом режиме.
Когда вы конфигурируете блок для выполнения выборочной обработки, путем установки параметра Input processing на Elements as channels (sample based)
блок обрабатывает каждый элемент входа как отдельный канал. Блок разворачивает данные в каждом канале входного сигнала и не сбрасывает начальную фазу, чтобы нуль каждый раз, когда принимается новый вход. Этот рисунок иллюстрирует, как блок разворачивает данные при выполнении обработки на основе выборки.
Сгенерированный код опирается на memcpy
или memset
функции (string.h
) при определенные обстоятельства.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.