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 вывод от предыдущего вызова до этой той же функции и не связан с соответствующим interleaver.

Используя пару Interleaver-Deinterleaver

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

Примеры

Пример ниже иллюстрирует, как использовать ввод и вывод состояния при вызове 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, Крис, и Стивен Б. Викер, турбокодирование, Бостон, Kluwer академические издатели, 1999.

Смотрите также

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