man pages section 3: Multimedia Library Functions
Updated: July 2014

## mlib_MatrixUnit_S32 (3MLIB)

### Name

mlib_MatrixUnit_U8, mlib_MatrixUnit_U8C, mlib_MatrixUnit_S8, mlib_MatrixUnit_S8C, mlib_MatrixUnit_S16, mlib_MatrixUnit_S16C, mlib_MatrixUnit_S32, mlib_MatrixUnit_S32C - Unit matrix generation

### Synopsis

```cc [ flag... ] file... –lmlib [ library... ]
#include <mlib.h>

mlib_status mlib_MatrixUnit_U8(mlib_u8 *z, mlib_s32 n);```
`mlib_status mlib_MatrixUnit_U8C(mlib_u8 *z, mlib_s32 n);`
`mlib_status mlib_MatrixUnit_S8(mlib_s8 *z, mlib_s32 n);`
`mlib_status mlib_MatrixUnit_S8C(mlib_s8 *z, mlib_s32 n);`
`mlib_status mlib_MatrixUnit_S16(mlib_s16 *z, mlib_s32 n);`
`mlib_status mlib_MatrixUnit_S16C(mlib_s16 *z, mlib_s32 n);`
`mlib_status mlib_MatrixUnit_S32(mlib_s32 *z, mlib_s32 n);`
`mlib_status mlib_MatrixUnit_S32C(mlib_s32 *z, mlib_s32 n);`

### Description

Each of these functions sets the values for a unit matrix.

For real data, the following equation is used:

```z[i*n + j] = 1  if i == j
z[i*n + j] = 0  if i != j
```

where i = 0, 1, ..., (n - 1); j = 0, 1, ..., (n - 1).

For complex data, the following equation is used:

```z[2*(i*n + j)]     = 1  if i == j
z[2*(i*n + j)]     = 0  if i != j

z[2*(i*n + j) + 1] = 0
```

where i = 0, 1, ..., (n - 1); j = 0, 1, ..., (n - 1).

### Parameters

Each of the functions takes the following arguments:

z

Pointer to the destination matrix.

n

Number of rows and columns in the matrix.

### Return Values

Each of the functions returns MLIB_SUCCESS if successful. Otherwise it returns MLIB_FAILURE.

### Attributes

See attributes(5) for descriptions of the following attributes:

ATTRIBUTE TYPE
ATTRIBUTE VALUE
Interface Stability
Committed
MT-Level
MT-Safe