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.

Generate Walsh code from orthogonal set of codes

Sequence Generators sublibrary of Comm Sources

Walsh codes are defined as a set of *N* codes,
denoted *W*_{j}, for *j* =
0, 1, ... , *N* - 1, which have the following properties:

*W*_{j}takes on the values +1 and -1.*W*_{j}[0] = 1 for all*j*.*W*_{j}has exactly*j*zero crossings, for*j*= 0, 1, ... ,*N*- 1.$${W}_{j}{W}_{k}^{T}=\{\begin{array}{cc}0& j\ne k\\ N& j=k\end{array}$$

Each code W

*j*is either even or odd with respect to its midpoint.

Walsh codes are defined using a Hadamard matrix of order *N*.
The Walsh Code Generator block outputs a row of the Hadamard matrix
specified by the **Walsh code index**, which must
be an integer in the range [0, ..., *N* - 1]. If
you set **Walsh code index** equal to an integer *j*,
the output code has exactly *j* zero crossings,
for *j* = 0, 1, ... , *N* -
1.

Note, however, that the indexing in the Walsh Code Generator
block is different than the indexing in the Hadamard Code Generator
block. If you set the **Walsh code index** in the
Walsh Code Generator block and the **Code index parameter** in
the Hadamard Code Generator block, the two blocks output different
codes.

**Code length**Integer scalar that is a power of 2 specifying the length of the output code.

**Code index**Integer scalar in the range [0, 1, ... , N - 1], where N is the

**Code length**, specifying the number of zero crossings in the output code.**Sample time**The time between each sample of the output signal. Specify as a nonnegative real scalar.

**Samples per frame**The number of samples in one column of the output signal. If

**Samples per frame**is greater than the**Code length**, the code is cyclically repeated. Specify as a positive integer scalar.### Note

The time between output updates is equal to the product of

**Samples per frame**and**Sample time**. For example, if**Sample time**and**Samples per frame**equal one, the block outputs a sample every second. If**Samples per frame**is increased to 10, then a 10-by-1 vector is output every 10 seconds. This ensures that the equivalent output rate is not dependent on the**Samples per frame**parameter.**Output data type**The output type of the block can be specified as an

`int8`

or`double`

. By default, the block sets this to`double`

.

Was this topic helpful?