GNU Scientific Library Reference Manual - Third Edition (v1.12)by M. Galassi, J. Davies, J. Theiler, B. Gough, G. Jungman, P. Alken, M. Booth, F. Rossi Paperback (6"x9"), 592 pages, 60 figures ISBN 0954612078 RRP £24.95 ($39.95) |

### 8.4.5 Matrix views

A matrix view is a temporary object, stored on the stack, which can be
used to operate on a subset of matrix elements. Matrix views can be
defined for both constant and non-constant matrices using separate types
that preserve constness. A matrix view has the type
`gsl_matrix_view`

and a constant matrix view has the type
`gsl_matrix_const_view`

. In both cases the elements of the view
can by accessed using the `matrix`

component of the view object. A
pointer `gsl_matrix *`

or `const gsl_matrix *`

can be obtained
by taking the address of the `matrix`

component with the `&`

operator. In addition to matrix views it is also possible to create
vector views of a matrix, such as row or column views.

__Function:__gsl_matrix_view**gsl_matrix_submatrix***(gsl_matrix **`m`, size_t`k1`, size_t`k2`, size_t`n1`, size_t`n2`)__Function:__gsl_matrix_const_view**gsl_matrix_const_submatrix***(const gsl_matrix **`m`, size_t`k1`, size_t`k2`, size_t`n1`, size_t`n2`)- These functions return a matrix view of a submatrix of the matrix
`m`. The upper-left element of the submatrix is the element (`k1`,`k2`) of the original matrix. The submatrix has`n1`rows and`n2`columns. The physical number of columns in memory given by`tda`is unchanged. Mathematically, the (i,j)-th element of the new matrix is given by,m'(i,j) = m->data[(k1*m->tda + k2) + i*m->tda + j]

where the index

`i`runs from 0 to`n1-1`

and the index`j`runs from 0 to`n2-1`

.The

`data`

pointer of the returned matrix struct is set to null if the combined parameters (`i`,`j`,`n1`,`n2`,`tda`) overrun the ends of the original matrix.The new matrix view is only a view of the block underlying the existing matrix,

`m`. The block containing the elements of`m`is not owned by the new matrix view. When the view goes out of scope the original matrix`m`and its block will continue to exist. The original memory can only be deallocated by freeing the original matrix. Of course, the original matrix should not be deallocated while the view is still in use.The function

`gsl_matrix_const_submatrix`

is equivalent to`gsl_matrix_submatrix`

but can be used for matrices which are declared`const`

.

__Function:__gsl_matrix_view**gsl_matrix_view_array***(double **`base`, size_t`n1`, size_t`n2`)__Function:__gsl_matrix_const_view**gsl_matrix_const_view_array***(const double **`base`, size_t`n1`, size_t`n2`)- These functions return a matrix view of the array
`base`. The matrix has`n1`rows and`n2`columns. The physical number of columns in memory is also given by`n2`. Mathematically, the (i,j)-th element of the new matrix is given by,m'(i,j) = base[i*n2 + j]

where the index

`i`runs from 0 to`n1-1`

and the index`j`runs from 0 to`n2-1`

.The new matrix is only a view of the array

`base`. When the view goes out of scope the original array`base`will continue to exist. The original memory can only be deallocated by freeing the original array. Of course, the original array should not be deallocated while the view is still in use.The function

`gsl_matrix_const_view_array`

is equivalent to`gsl_matrix_view_array`

but can be used for matrices which are declared`const`

.

__Function:__gsl_matrix_view**gsl_matrix_view_array_with_tda***(double **`base`, size_t`n1`, size_t`n2`, size_t`tda`)__Function:__gsl_matrix_const_view**gsl_matrix_const_view_array_with_tda***(const double **`base`, size_t`n1`, size_t`n2`, size_t`tda`)- These functions return a matrix view of the array
`base`with a physical number of columns`tda`which may differ from the corresponding dimension of the matrix. The matrix has`n1`rows and`n2`columns, and the physical number of columns in memory is given by`tda`. Mathematically, the (i,j)-th element of the new matrix is given by,m'(i,j) = base[i*tda + j]

where the index

`i`runs from 0 to`n1-1`

and the index`j`runs from 0 to`n2-1`

.The new matrix is only a view of the array

`base`. When the view goes out of scope the original array`base`will continue to exist. The original memory can only be deallocated by freeing the original array. Of course, the original array should not be deallocated while the view is still in use.The function

`gsl_matrix_const_view_array_with_tda`

is equivalent to`gsl_matrix_view_array_with_tda`

but can be used for matrices which are declared`const`

.

__Function:__gsl_matrix_view**gsl_matrix_view_vector***(gsl_vector **`v`, size_t`n1`, size_t`n2`)__Function:__gsl_matrix_const_view**gsl_matrix_const_view_vector***(const gsl_vector **`v`, size_t`n1`, size_t`n2`)- These functions return a matrix view of the vector
`v`. The matrix has`n1`rows and`n2`columns. The vector must have unit stride. The physical number of columns in memory is also given by`n2`. Mathematically, the (i,j)-th element of the new matrix is given by,m'(i,j) = v->data[i*n2 + j]

where the index

`i`runs from 0 to`n1-1`

and the index`j`runs from 0 to`n2-1`

.The new matrix is only a view of the vector

`v`. When the view goes out of scope the original vector`v`will continue to exist. The original memory can only be deallocated by freeing the original vector. Of course, the original vector should not be deallocated while the view is still in use.The function

`gsl_matrix_const_view_vector`

is equivalent to`gsl_matrix_view_vector`

but can be used for matrices which are declared`const`

.

__Function:__gsl_matrix_view**gsl_matrix_view_vector_with_tda***(gsl_vector **`v`, size_t`n1`, size_t`n2`, size_t`tda`)__Function:__gsl_matrix_const_view**gsl_matrix_const_view_vector_with_tda***(const gsl_vector **`v`, size_t`n1`, size_t`n2`, size_t`tda`)- These functions return a matrix view of the vector
`v`with a physical number of columns`tda`which may differ from the corresponding matrix dimension. The vector must have unit stride. The matrix has`n1`rows and`n2`columns, and the physical number of columns in memory is given by`tda`. Mathematically, the (i,j)-th element of the new matrix is given by,m'(i,j) = v->data[i*tda + j]

where the index

`i`runs from 0 to`n1-1`

and the index`j`runs from 0 to`n2-1`

.The new matrix is only a view of the vector

`v`. When the view goes out of scope the original vector`v`will continue to exist. The original memory can only be deallocated by freeing the original vector. Of course, the original vector should not be deallocated while the view is still in use.The function

`gsl_matrix_const_view_vector_with_tda`

is equivalent to`gsl_matrix_view_vector_with_tda`

but can be used for matrices which are declared`const`

.

ISBN 0954612078 | GNU Scientific Library Reference Manual - Third Edition (v1.12) | See the print edition |