Documentation Center

  • Trial Software
  • Product Updates

Contents

Submatrix

Select subset of elements (submatrix) from matrix input

Library

  • Math Functions / Matrices and Linear Algebra / Matrix Operations

    dspmtrx3

  • Signal Management / Indexing

    dspindex

Description

The Submatrix block extracts a contiguous submatrix from the M-by-N input matrix u. The block treats length-M unoriented vector input as an M-by-1 matrix. The Row span parameter provides three options for specifying the range of rows in u to be retained in submatrix output y:

  • All rows

    Specifies that y contains all M rows of u.

  • One row

    Specifies that y contains only one row from u. The Row parameter (described below) is enabled to allow selection of the desired row.

  • Range of rows

    Specifies that y contains one or more rows from u. The Starting row and Ending row parameters (described below) are enabled to allow selection of the desired range of rows.

The Column span parameter contains a corresponding set of three options for specifying the range of columns in u to be retained in submatrix y: All columns, One column, or Range of columns. The One column option enables the Column parameter, and Range of columns options enable the Starting column and Ending column parameters.

Range Specification Options

When you select One row or Range of rows from the Row span parameter, you specify the desired row or range of rows in the Row parameter, or the Starting row and Ending row parameters. Similarly, when you select One column or Range of columns from the Column span parameter, you specify the desired column or range of columns in the Column parameter, or the Starting column and Ending column parameters.

The Row, Column, Starting row or Starting column can be specified in six ways:

  • First

    For rows, this specifies that the first row of u should be used as the first row of y. When all columns are to be included, this is equivalent to y(1,:) = u(1,:).

    For columns, this specifies that the first column of u should be used as the first column of y. When all rows are to be included, this is equivalent to y(:,1) = u(:,1).

  • Index

    For rows, this specifies that the row of u, firstrow, forward-indexed by the Row index parameter or the Starting row index parameter, should be used as the first row of y. When all columns are to be included, this is equivalent to y(1,:) = u(firstrow,:).

    For columns, this specifies that the column of u, forward-indexed by the Column index parameter or the Starting column index parameter, firstcol, should be used as the first column of y. When all rows are to be included, this is equivalent to y(:,1) = u(:,firstcol).

  • Offset from last

    For rows, this specifies that the row of u offset from row M by the Row offset or Starting row offset parameter, firstrow, should be used as the first row of y. When all columns are to be included, this is equivalent to y(1,:) = u(M-firstrow,:).

    For columns, this specifies that the column of u offset from column N by the Column offset or Starting column offset parameter, firstcol, should be used as the first column of y. When all rows are to be included, this is equivalent to y(:,1) = u(:,N-firstcol).

  • Last

    For rows, this specifies that the last row of u should be used as the only row of y. When all columns are to be included, this is equivalent to y = u(M,:).

    For columns, this specifies that the last column of u should be used as the only column of y. When all rows are to be included, this is equivalent to y = u(:,N).

  • Offset from middle

    When you select this option, the block selects the first row or column of the output y by adding the specified offset to the middle row or column of the input u. When the number, X, of input rows or columns is even, the block defines the middle one as X/2 +1. When the number of input rows or columns is odd, the block defines the middle one as ceil(X/2).

    When all columns are to be included, the following code defines the starting row: y(1,:) = u(MiddleRow+Offset,:), where Offset is the value of the Row offset or Starting row offset parameter. When all rows are to be included, the following code defines the starting column: y(1,:) = u(:,MiddleColumn+Offset), where Offset is the value of the Column offset or Starting column offset parameter.

  • Middle

    When you select this option, the block uses the middle row or column of the input u as the first row or column of the output y. When the number, X, of input rows or columns is even, the block defines the middle one as X/2 +1. When the number of input rows or columns is odd, the block defines the middle one as ceil(X/2).

    When all columns are to be included, the following code defines the starting row: y = u(MiddleRow,:). When all rows are to be included, the following code defines the starting column: y = u(:,MiddleColumn).

The Ending row or Ending column can similarly be specified in five ways:

  • Index

    For rows, this specifies that the row of u forward-indexed by the Ending row index parameter, lastrow, should be used as the last row of y. When all columns are to be included, this is equivalent to y(end,:) = u(lastrow,:).

    For columns, this specifies that the column of u forward-indexed by the Ending column index parameter, lastcol, should be used as the last column of y. When all rows are to be included, this is equivalent to y(:,end) = u(:,lastcol).

  • Offset from last

    For rows, this specifies that the row of u offset from row M by the Ending row offset parameter, lastrow, should be used as the last row of y. When all columns are to be included, this is equivalent to y(end,:) = u(M-lastrow,:).

    For columns, this specifies that the column of u offset from column N by the Ending column offset parameter, lastcol, should be used as the last column of y. When all rows are to be included, this is equivalent to y(:,end) = u(:,N-lastcol).

  • Last

    For rows, this specifies that the last row of u should be used as the last row of y. When all columns are to be included, this is equivalent to y(end,:) = u(M,:).

    For columns, this specifies that the last column of u should be used as the last column of y. When all rows are to be included, this is equivalent to y(:,end) = u(:,N).

  • Offset from middle

    When you select this option, the block selects the last row or column of the output y by adding the specified offset to the middle row or column of the input u. When the number, X, of input rows or columns is even, the block defines the middle one as X/2 +1. When the number of input rows or columns is odd, the block defines the middle one as ceil(X/2).

    When all columns are to be included, the following code defines the ending row: y(end,:) = u(MiddleRow+Offset,:), where Offset is the value of the Ending row offset parameter. When all rows are to be included, the following code defines the ending column: y(:,end) = u(:,MiddleColumn+Offset), where Offset is the value of the Ending column offset parameter.

  • Middle

    When you select this option, the block uses the middle row or column of the input u as the last row or column of the output y. When the number, X, of input rows or columns is even, the block defines the middle one as X/2 +1. When the number of input rows or columns is odd, the block defines the middle one as ceil(X/2).

    When all columns are to be included, the following code defines the ending row: y(end,:) = u(MiddleRow,:). When all rows are to be included, the following code defines the ending column: y(:,end) = u(:,MiddleColumn).

This block supports Simulink® virtual buses.

Examples

The ex_submatrix_refex_submatrix_ref model uses a Submatrix block to extract a 3-by-2 submatrix from the lower-right corner of a 5-by-7 input matrix.

The following figure shows the operation of the Submatrix block with a 5-by-7 input matrix of random integer elements, randi([0 9],5,7).

There are often several possible parameter combinations that you can use to select the same submatrix from the input. For example, in the case of a 5-by-7 input matrix, instead of specifying Last for Ending column, you could select the same submatrix by specifying

  • Ending column = Index

  • Ending column index = 7

Dialog Box

The parameters displayed in the dialog box vary for different menu combinations. Only some of the parameters listed below are visible in the dialog box at any one time.

Row span

The range of input rows to be retained in the output. Options are All rows, One row, or Range of rows.

Row/Starting row

The input row to be used as the first row of the output. Row is enabled when you select One row from Row span, and Starting row when you select Range of rows from Row span.

Row index/Starting row index

The index of the input row to be used as the first row of the output. Row index is enabled when you select Index from Row, and Starting row index when you select Index from Starting row.

Row offset/Starting row offset

The offset of the input row to be used as the first row of the output. Row offset is enabled when you select Offset from middle or Offset from last from Row, and Starting row offset is enabled when you select Offset from middle or Offset from last from Starting row.

Ending row

The input row to be used as the last row of the output. This parameter is enabled when you select Range of rows from Row span and you select any option but Last from Starting row.

Ending row index

The index of the input row to be used as the last row of the output. This parameter is enabled when you select Index from Ending row.

Ending row offset

The offset of the input row to be used as the last row of the output. This parameter is enabled when you select Offset from middle or Offset from last from Ending row.

Column span

The range of input columns to be retained in the output. Options are All columns, One column, or Range of columns.

Column/Starting column

The input column to be used as the first column of the output. Column is enabled when you select One column from Column span, and Starting column is enabled when you select Range of columns from Column span.

Column index/Starting column index

The index of the input column to be used as the first column of the output. Column index is enabled when you select Index from Column, and Starting column index is enabled when you select Index from Starting column.

Column offset/Starting column offset

The offset of the input column to be used as the first column of the output. Column offset is enabled when you select Offset from middle or Offset from last from Column. Starting column offset is enabled when you select Offset from middle or Offset from last from Starting column.

Ending column

The input column to be used as the last column of the output. This parameter is enabled when you select Range of columns from Column span and you select any option but Last from Starting column.

Ending column index

The index of the input column to be used as the last column of the output. This parameter is enabled when you select Index from Ending column.

Ending column offset

The offset of the input column to be used as the last column of the output. This parameter is enabled when you select Offset from middle or Offset from last from Ending column.

Supported Data Types

PortSupported Data Types

Input

  • Double-precision floating point

  • Single-precision floating point

  • Fixed point (signed and unsigned)

  • Boolean

  • 8-, 16-, and 32-bit signed integers

  • 8-, 16-, and 32-bit unsigned integers

  • Enumerated

Output

  • Double-precision floating point

  • Single-precision floating point

  • Fixed point (signed and unsigned)

  • Boolean

  • 8-, 16-, and 32-bit signed integers

  • 8-, 16-, and 32-bit unsigned integers

  • Enumerated

See Also

ReshapeSimulink
SelectorSimulink
Variable SelectorDSP System Toolbox
reshapeMATLAB

See Split Multichannel Signals into Several Multichannel Signals for related information.

Was this topic helpful?