muxdeintrlv
R2026b(To be removed) Restore ordering of symbols using specified shift registers
muxdeintrlv will be removed in a future release. Use convdeintrlv instead. (since R2026b) For information
on updating your code, see Version History.
Syntax
deintrlved = muxdeintrlv(data,delay)
[deintrlved,state] = muxdeintrlv(data,delay)
[deintrlved,state] = muxdeintrlv(data,delay,init_state)
Description
deintrlved = muxdeintrlv(data,delay) restores the
ordering of elements in data by using a set of internal shift registers, each
with its own delay value. delay is a vector whose entries indicate how many
symbols each shift register can hold. The length of delay is the number of
shift registers. Before the function begins to process data, it initializes all shift registers
with zeros. If data is a matrix with multiple rows and columns, the function
processes the columns independently.
[deintrlved,state] = muxdeintrlv(data,delay)
returns a structure that holds the final state of the shift registers.
state.value stores any unshifted symbols. state.index is
the index of the next register to be shifted.
[deintrlved,state] = muxdeintrlv(data,delay,init_state)
initializes the shift registers with the symbols contained in init_state.value
and directs the first input symbol to the shift register referenced by
init_state.index. The structure init_state is typically
the state output from a previous call to this same function, and is unrelated
to the corresponding interleaver.
Using an Interleaver-Deinterleaver Pair
To use this function as an inverse of the muxintrlv function, use the same delay input in both functions.
In that case, the two functions are inverses in the sense that applying
muxintrlv followed by muxdeintrlv leaves data
unchanged, after you take their combined delay of length(delay)*max(delay)
into account. To learn more about delays of convolutional interleavers, see Delays of Convolutional Interleavers.
Examples
The example below illustrates how to use the state input and output when invoking
muxdeintrlv repeatedly. Notice that [deintrlved1;
deintrlved2] is the same as 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])
The output is below.
ans =
1
References
[1] Heegard, Chris and Stephen B. Wicker. Turbo Coding. Boston: Kluwer Academic Publishers, 1999.