# Permute Matrix

Reorder matrix rows or columns

Libraries:

## Description

The Permute Matrix block reorders the rows or columns of an M-by-N input matrix `A` as specified by indexing input `P`.

## Examples

expand all

This example shows how to use the Permute Block to permute blocks by row or column.

In the model, the top Permute Matrix block places the second row of the input matrix in the first and fifth rows of the output matrix. The block places the third row of the input matrix in the three middle rows of the output matrix. The bottom Permute Matrix block places the second column of the input matrix in the first and fifth columns of the output matrix. It places the third column of the input matrix in the three middle columns of the output matrix.

Rows and columns of A can appear any number of times in the output, or not at all depending on the index vector.

## Ports

### Input

expand all

Input matrix, specified as a scalar, vector, or matrix.

Data Types: `single` | `double` | `int8` | `int16` | `int32` | `int64` | `uint8` | `uint16` | `uint32` | `uint64` | `Boolean` | `fixed point` | `enumerated`

Index matrix, specified as a scalar or vector.

Data Types: `single` | `double` | `int8` | `int16` | `int32` | `int64` | `uint8` | `uint16` | `uint32` | `uint64` | `Boolean` | `enumerated`

### Output

expand all

Output signal, specified as a vector or matrix.

Data Types: `single` | `double` | `int8` | `int16` | `int32` | `int64` | `uint8` | `uint16` | `uint32` | `uint64` | `Boolean` | `fixed point` | `enumerated`

## Parameters

expand all

Method of constructing the output matrix by permuting rows or columns of the input.

When the Permute parameter is set to:

• `Rows` –– The block uses the rows of `A` to create a matrix that has the same column dimension. Input `P` is a length-L vector whose elements determine where each row from `A` must be placed in the L-by-N output matrix.

`y = [A(P(1),:) ; A(P(2),:) ; A(P(3),:) ; ... ; A(P(end),:)] % Equivalent MATLAB code `

For row permutation, the block treats the length-M unoriented vector input at the port `A` as an M-by-1 matrix.

• `Columns` –– The block uses the columns of `A` to create a matrix that has the same row dimension. Input `P` is a length-L vector whose elements determine where each column from `A` must be placed in the M-by-L output matrix.

`% Equivalent MATLAB code y = [A(:,P(1)) A(:,P(2)) A(:,P(3)) ... A(:,P(end))] `

For column permutation, the block treats the length-N unoriented vector input at port `A` as a 1-by-N matrix.

#### Programmatic Use

 Block Parameter: `mode` Type: character vector, string Values:```' Columns'``` | `'Rows'` Default: ```' Columns'```

When set to `One-based`, a value of `1` in the permutation vector `P` refers to the first row or column of the input matrix `A`. When set to `Zero-based`, a value of `0` in `P` refers to the first row or column of `A`.

#### Programmatic Use

 Block Parameter: `ZeroOneIdxMode` Type: character vector, string Values:```' Zero-based'``` | `'One-based'` Default: `'One-based'`

Response to an invalid index value. When an index value in input `P` references a nonexistent row or column of matrix `A`, the block reacts as specified in this parameter. These options are available:

• `Clip index` –– Clip the index to the nearest valid value (1 or M for row permutation and 1 or N for column permutation) and do not issue an alert. Example: For a 3-by-7 input matrix, a column index of 9 is clipped to 7 and a row index of -2 is clipped to 1.

• `Clip and warn` –– Display a warning message in the MATLAB® Command Window and clip the index as described in the preceding bullet.

• `Generate error` –– Display an error dialog box and terminate the simulation.

Tunable: Yes

#### Programmatic Use

 Block Parameter: `errmode` Type: character vector, string Values: ```'Clip index'``` | `'Clip and warn'` | `'Generate error'` Default: ```'Clip index'```

Option to display an error dialog box and terminate the simulation when the length of the permutation vector `P` is not equal to the number of rows or columns of the input matrix `A`.

You can choose to open an error dialog box and terminate the simulation by setting this parameter to `on`.

#### Programmatic Use

 Block Parameter: `checkDims` Type: character vector, string Values: `'off'` | `'on'` Default: `'off'`

## Block Characteristics

 Data Types `Boolean` | `double` | `enumerated` | `fixed point` | `integer` | `single` Direct Feedthrough `no` Multidimensional Signals `no` Variable-Size Signals `no` Zero-Crossing Detection `no`

## Version History

Introduced before R2006a

expand all