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?