MATLAB.Exponenta
MATLAB и Simulink на русском
Технологии разработки и отладки
		сложных технических систем
 

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

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

  В оглавление \ К следующему разделу \ К предыдущему разделу
CONVDEINTRLV
Сверточное деперемежение с линейным изменением задержки

Синтаксис:

deintrlved = convdeintrlv(data,nrows,slope)
[deintrlved,state] = convdeintrlv(data,nrows,slope)
[deintrlved,state] = convdeintrlv(data,nrows,slope,init_state)

Описание:

deintrlved = convdeintrlv(data,nrows,slope)
Восстанавливает исходную последовательность элементов входного массива data, используя набор из nrows внутренних регистров сдвига. Задержка, вносимая k-м регистром, равна (k-1)*slope, где k = 1, 2, 3, …, nrows. Перед началом обработки данных все регистры сдвига заполняются нулями. Если входной параметр data является матрицей, ее столбцы обрабатываются независимо.

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

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

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

Чтобы использовать данную функцию для восстановления порядка символов, переставленных с помощью функции convintrlv, используйте в обеих функциях одинаковые входные параметры nrows и slope. В этом случае функции convintrlv и convdeintrlv будут взаимно обратными в том смысле, что их последовательное применение сохранит массив данных неизмененным, внося, однако, в него задержку, равную nrows*(nrows-1)*slope.

Примеры

Приведенный ниже пример показывает, что функция convdeintrlv восстанавливает исходные данные, лишь внося в них некоторую задержку.

x = randint(1000,1); % исходные данные 
nrows = 5;           % используем 5 регистров сдвига
slope = 3;           % задержки будут равны 0, 3, 6, 9 и 12
y = convintrlv(x,nrows,slope);    % перемежение
x1 = convdeintrlv(y,nrows,slope); % деперемежение
d = nrows*(nrows-1)*slope;        % вносимая задержка 
isequal(x(1:end-d),x1(d+1:end))   % сравниваем исходные и восстановленные данные
Результат работы этого кода, приведенный ниже, показывает, что вектор x1, полученный после выполнения операции деперемежения, после компенсации задержки совпадает с исходным вектором x:
ans =
     1
Пример использования выходного параметра state и входного параметра init_state имеется на странице с описанием функции muxdeintrlv; для функции condevintrlv все делается аналогично.

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

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

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

 

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

Система Orphus

Яндекс.Метрика