MATLAB è Simulink íà ðóññêîì

https://hub.exponenta.ru/
 

Обработка сигналов и изображений\Communications Toolbox

Список функций CommunicationsToolbox: Низкоуровневые функции помехоустойчивого кодирования и декодирования

  В оглавление \ К следующему разделу \ К предыдущему разделу
MUXDEINTRLV
Табличное сверточное деперемежение

Синтаксис:

deintrlved = muxdeintrlv(data,delay)
[deintrlved,state] = muxdeintrlv(data,delay)
[deintrlved,state] = muxdeintrlv(data,delay,init_state)

Описание:

deintrlved = muxdeintrlv(data,delay)
Восстанавливает исходную последовательность элементов входного массива data, используя набор внутренних регистров сдвига. Второй входной параметр delay должен быть вектором, содержащим величину задержки для каждого регистра. Задержка, вносимая k-м регистром, равна delay[k]; таким образом, общее число регистров сдвига равно length(delay). Перед началом обработки данных все регистры сдвига заполняются нулями. Если входной параметр data является матрицей, ее столбцы обрабатываются независимо.

[deintrlved,state] = muxdeintrlv(data,delay)
Дополнительно возвращает структуру state, которая содержит состояния регистров задержки на момент окончания обработки данных. Поле state.value содержит все еще не попавшие на выход символы. Поле state.index содержит номер регистра, в который должен попасть следующий входной символ.

[deintrlved,state] = muxdeintrlv(data,delay,init_state)
В данном варианте синтаксиса дополнительный входной параметр init_state позволяет задать исходное состояние регистров сдвига. Регистры инициализируются значениями из поля init_state.value, а первый входной символ направляется в регистр с номером, определяемым содержимым поля init_state.index. Структура init_state, как правило, получается в качестве выходного параметра при обработке предыдущего блока данных. Она не имеет отношения к соответствующему перемежителю.

Использование пары "перемежитель-деперемежитель"

Чтобы использовать данную функцию для восстановления порядка символов, переставленных с помощью функции muxintrlv, используйте в обеих функциях одинаковый входной параметр delay. В этом случае функции muxintrlv и muxdeintrlv будут взаимно обратными в том смысле, что их последовательное применение сохранит массив данных неизмененным, внося, однако, в него задержку, равную length(delay)*max(delay).

Примеры

Приведенный ниже пример показывает, как можно использовать дополнительные входной и выходной параметры для доступа к внутренним состояниям регистров сдвига и организации блоковой обработки данных.
delay = [0 4 8 12]; % задержки, вносимые регистрами сдвига
symbols = 100; % число обрабатываемых символов
% Производим перемежение случайных данных
intrlved = muxintrlv(randint(symbols,1,2,123),delay);
% Производим деперемежение первой половины массива, сохраняя внутреннее состояние деперемежителя
[deintrlved1,state] = muxdeintrlv(intrlved(1:symbols/2),delay);
% Производим деперемежение второй половины массива, используя сохраненное внутреннее состояние деперемежителя
deintrlved2 = muxdeintrlv(intrlved(symbols/2+1:symbols),delay,state);
% Производим деперемежение всего массмва сразу
deintrlved = muxdeintrlv(intrlved,delay);
isequal(deintrlved,[deintrlved1; deintrlved2]) % сравнение двух вариантов
Результат работы этого кода, приведенный ниже, показывает, что вектор [deintrlved1; deintrlved2], полученный после выполнения операции деперемежения двух половин массива по отдельности с сохранением промежуточного внутреннего состояния, совпадает с вектором deintrlved, полученным в результате выполнения операции деперемежения без разбиения массива на блоки:
ans =
     1

Сопутствующие функции: muxintrlv.

Литература:
1. Heegard, Chris, and Stephen B. Wicker, Turbo Coding, Boston, Kluwer Academic Publishers, 1999.

В оглавление \ К следующему разделу \ К предыдущему разделу

 

Поиск по сайту:


Система Orphus