Note: This page has been translated by MathWorks. Please click here

To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

Reorder symbols using algebraically derived permutation table

`intrlvd = algintrlv(data,num,`

** 'takeshita-costello'**,k,h)

intrlvd = algintrlv(data,num,

`'welch-costas'`

`intrlvd = algintrlv(data,num,`

rearranges
the elements in ** 'takeshita-costello'**,k,h)

`data`

using a permutation table
that is algebraically derived using the Takeshita-Costello method. `num`

is
the number of elements in `data`

if `data`

is
a vector, or the number of rows of `data`

if `data`

is
a matrix with multiple columns. In the Takeshita-Costello method, `num`

must
be a power of 2. The multiplicative factor, `k`

,
must be an odd integer less than `num`

, and the cyclic
shift, `h`

, must be a nonnegative integer less than `num`

.
If `data`

is a matrix with multiple rows and columns,
the function processes the columns independently.`intrlvd = algintrlv(data,num,`

uses
the Welch-Costas method. In the Welch-Costas method, ** 'welch-costas'**,alph)

`num+1`

must
be a prime number. `alph`

is an integer between 1
and `num`

that represents a primitive element of
the finite field GF(`num+1`

). This means that every
nonzero element of GF(`num+1`

) can be expressed as `alph`

raised
to some integer power.This example illustrates how to use the Welch-Costas method of algebraic interleaving.

Define

`num`

and the data to interleave.num = 10; % Integer such that num+1 is prime ncols = 3; % Number of columns of data to interleave data = randi([0 num-1], num, ncols); % Random data to interleave

Find primitive polynomials of the finite field GF(

`num+1`

). The`gfprimfd`

function represents each primitive polynomial as a row containing the coefficients in order of ascending powers.pr = gfprimfd(1,'all',num+1) % Primitive polynomials of GF(num+1) pr = 3 1 4 1 5 1 9 1

Notice from the output that

`pr`

has two columns and that the second column consists solely of 1s. In other words, each primitive polynomial is a monic degree-one polynomial. This is because`num+1`

is prime. As a result, to find the primitive element that is a root of each primitive polynomial, find a root of the polynomial by subtracting the first column of`pr`

from`num+1`

.`primel = (num+1)-pr(:,1) % Primitive elements of GF(num+1) primel = 8 7 6 2`

Now define

`alph`

as one of the elements of`primel`

and use`algintrlv`

.alph = primel(1); % Choose one primitive element. intrlvd = algintrlv(data,num,'Welch-Costas',alph); % Interleave.

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

[2] Takeshita, O. Y., and D. J. Costello,
Jr., "New Classes Of Algebraic Interleavers for Turbo-Codes," *Proc.
1998 IEEE International Symposium on Information Theory*,
Boston, Aug. 16–21, 1998. p. 419.

Was this topic helpful?