muxdeintrlv

Восстановите упорядоченное расположение символов, используя указанные регистры сдвига

Синтаксис

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

Описание

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

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

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

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

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

Примеры

Приведенный ниже пример иллюстрирует, как использовать вход и вывод состояния при вызове muxdeintrlv неоднократно. Заметьте, что [deintrlved1; deintrlved2] то же, что и deintrlved.

delay = [0 4 8 12]; % Delays in shift registers
symbols = 100; % Number of symbols to process
% Interleave random data.
intrlved = muxintrlv(randi([0 1],symbols,1),delay);

% Deinterleave some of the data, recording state for later use.
[deintrlved1,state] = muxdeintrlv(intrlved(1:symbols/2),delay);
% Deinterleave the rest of the data, using state as an input argument.
deintrlved2 = muxdeintrlv(intrlved(symbols/2+1:symbols),delay,state);

% Deinterleave all data in one step.
deintrlved = muxdeintrlv(intrlved,delay);

isequal(deintrlved,[deintrlved1; deintrlved2])

Ниже приведен выход.

ans =

     1

Другой пример, использующий эту функцию, - в сверточном перемежении и обращенном перемежении с использованием последовательности последовательных целых чисел в MATLAB.

Ссылки

[1] Heegard, Chris, and Stephen B. Wicker, Turbo Coding, Boston, Kluwer Academic Publishers, 1999.

См. также

Представлено до R2006a