Previous Page Next Page Contents

linalg::submatrix -- extract a submatrix or a subvector from a matrix or a vector, respectively

Introduction

linalg::submatrix(A, r1..r2, c1..c2) returns a copy of the submatrix of the matrix A obtained by selecting the rows r1,r1+1,...,r2 and the columns c1,c1+1,...,c2.

linalg::submatrix(v,i1..i2) returns a copy of the subvector of the vector v obtained by selecting the components with indices i1,i1+1,...,i2.

Call(s)

linalg::submatrix(A, r1..r2, c1..c2)
linalg::submatrix(A, rlist, clist)
linalg::submatrix(v, i1..i2)
linalg::submatrix(v, list)

Parameters

A - an m x n matrix of a domain of category Cat::Matrix
v - a vector with k components, i.e., a k x 1 or 1 x k matrix of a domain of category Cat::Matrix
r1..r2, c1..c2 - ranges of row/column indices: positive integers less or equal to m and n, respectively
rlist, clist - lists of row/column indices: positive integers less or equal to m and n, respectively
i1..i2 - a range of vector indices: positive integers less or equal to k
list - a list of vector indices: positive integers less or equal to k

Returns

a matrix of the same domain type as A or a vector of the same domain type as v, respectively.

Related Functions

linalg::col, linalg::row, linalg::substitute

Details

Example 1

We define the following matrix:

>> A := matrix([[1, x, 0], [0, x^2, 1]])
                              +-          -+
                              |  1,  x, 0  |
                              |            |
                              |      2     |
                              |  0, x , 1  |
                              +-          -+

The submatrix A[1..1][1..2] of A is given by:

>> linalg::submatrix(A, 1..1, 1..2)
                                 +-    -+
                                 | 1, x |
                                 +-    -+

Equivalent to the use of the index operator we obtain:

>> A[1..1, 1..2]
                                 +-    -+
                                 | 1, x |
                                 +-    -+

We extract the first and the third column of A and get the 2 x 2 identity matrix:

>> linalg::submatrix(A, [1, 2], [1, 3])
                                +-      -+
                                |  1, 0  |
                                |        |
                                |  0, 1  |
                                +-      -+

Example 2

Vector components can be accessed by a single index or a range of indices. For example, to extract the first two components of the following vector:

>> v := matrix([1, 2, 3])
                                  +-   -+
                                  |  1  |
                                  |     |
                                  |  2  |
                                  |     |
                                  |  3  |
                                  +-   -+

just enter the command:

>> v[1..2]
                                  +-   -+
                                  |  1  |
                                  |     |
                                  |  2  |
                                  +-   -+

Of course, the same subvector can be extracted with the command linalg::submatrix( v,1..2 ).

The following input returns the vector comprising the first and the third component of v:

>> linalg::submatrix(v, [1, 3])
                                  +-   -+
                                  |  1  |
                                  |     |
                                  |  3  |
                                  +-   -+

Changes




Do you have questions or comments?


Copyright © SciFace Software GmbH & Co. KG 2000