File: Matrix-views.html

package info (click to toggle)
gsl-ref-html 2.3-1
  • links: PTS
  • area: non-free
  • in suites: bookworm, bullseye, buster, sid, trixie
  • size: 6,876 kB
  • ctags: 4,574
  • sloc: makefile: 35
file content (244 lines) | stat: -rw-r--r-- 13,598 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 The GSL Team.

Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with the
Invariant Sections being "GNU General Public License" and "Free Software
Needs Free Documentation", the Front-Cover text being "A GNU Manual",
and with the Back-Cover Text being (a) (see below). A copy of the
license is included in the section entitled "GNU Free Documentation
License".

(a) The Back-Cover Text is: "You have the freedom to copy and modify this
GNU Manual." -->
<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
<head>
<title>GNU Scientific Library &ndash; Reference Manual: Matrix views</title>

<meta name="description" content="GNU Scientific Library &ndash; Reference Manual: Matrix views">
<meta name="keywords" content="GNU Scientific Library &ndash; Reference Manual: Matrix views">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="index.html#Top" rel="start" title="Top">
<link href="Function-Index.html#Function-Index" rel="index" title="Function Index">
<link href="Matrices.html#Matrices" rel="up" title="Matrices">
<link href="Creating-row-and-column-views.html#Creating-row-and-column-views" rel="next" title="Creating row and column views">
<link href="Reading-and-writing-matrices.html#Reading-and-writing-matrices" rel="previous" title="Reading and writing matrices">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.indentedblock {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
div.smalldisplay {margin-left: 3.2em}
div.smallexample {margin-left: 3.2em}
div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
div.smalllisp {margin-left: 3.2em}
kbd {font-style:oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
pre.smalldisplay {font-family: inherit; font-size: smaller}
pre.smallexample {font-size: smaller}
pre.smallformat {font-family: inherit; font-size: smaller}
pre.smalllisp {font-size: smaller}
span.nocodebreak {white-space:nowrap}
span.nolinebreak {white-space:nowrap}
span.roman {font-family:serif; font-weight:normal}
span.sansserif {font-family:sans-serif; font-weight:normal}
ul.no-bullet {list-style: none}
-->
</style>


</head>

<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
<a name="Matrix-views"></a>
<div class="header">
<p>
Next: <a href="Creating-row-and-column-views.html#Creating-row-and-column-views" accesskey="n" rel="next">Creating row and column views</a>, Previous: <a href="Reading-and-writing-matrices.html#Reading-and-writing-matrices" accesskey="p" rel="previous">Reading and writing matrices</a>, Up: <a href="Matrices.html#Matrices" accesskey="u" rel="up">Matrices</a> &nbsp; [<a href="Function-Index.html#Function-Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<a name="Matrix-views-1"></a>
<h4 class="subsection">8.4.5 Matrix views</h4>
<a name="index-gsl_005fmatrix_005fview"></a>
<a name="index-gsl_005fmatrix_005fconst_005fview"></a>

<p>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
<code>gsl_matrix_view</code> and a constant matrix view has the type
<code>gsl_matrix_const_view</code>.  In both cases the elements of the view
can by accessed using the <code>matrix</code> component of the view object.  A
pointer <code>gsl_matrix *</code> or <code>const gsl_matrix *</code> can be obtained
by taking the address of the <code>matrix</code> component with the <code>&amp;</code>
operator.  In addition to matrix views it is also possible to create
vector views of a matrix, such as row or column views.
</p>
<dl>
<dt><a name="index-gsl_005fmatrix_005fsubmatrix"></a>Function: <em>gsl_matrix_view</em> <strong>gsl_matrix_submatrix</strong> <em>(gsl_matrix * <var>m</var>, size_t <var>k1</var>, size_t <var>k2</var>, size_t <var>n1</var>, size_t <var>n2</var>)</em></dt>
<dt><a name="index-gsl_005fmatrix_005fconst_005fsubmatrix"></a>Function: <em>gsl_matrix_const_view</em> <strong>gsl_matrix_const_submatrix</strong> <em>(const gsl_matrix * <var>m</var>, size_t <var>k1</var>, size_t <var>k2</var>, size_t <var>n1</var>, size_t <var>n2</var>)</em></dt>
<dd><p>These functions return a matrix view of a submatrix of the matrix
<var>m</var>.  The upper-left element of the submatrix is the element
(<var>k1</var>,<var>k2</var>) of the original matrix.  The submatrix has <var>n1</var>
rows and <var>n2</var> columns.  The physical number of columns in memory
given by <var>tda</var> is unchanged.  Mathematically, the
<em>(i,j)</em>-th element of the new matrix is given by,
</p>
<div class="example">
<pre class="example">m'(i,j) = m-&gt;data[(k1*m-&gt;tda + k2) + i*m-&gt;tda + j]
</pre></div>

<p>where the index <var>i</var> runs from 0 to <code>n1-1</code> and the index <var>j</var>
runs from 0 to <code>n2-1</code>.
</p>
<p>The <code>data</code> pointer of the returned matrix struct is set to null if
the combined parameters (<var>i</var>,<var>j</var>,<var>n1</var>,<var>n2</var>,<var>tda</var>)
overrun the ends of the original matrix.
</p>
<p>The new matrix view is only a view of the block underlying the existing
matrix, <var>m</var>.  The block containing the elements of <var>m</var> is not
owned by the new matrix view.  When the view goes out of scope the
original matrix <var>m</var> 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.
</p>
<p>The function <code>gsl_matrix_const_submatrix</code> is equivalent to
<code>gsl_matrix_submatrix</code> but can be used for matrices which are
declared <code>const</code>.
</p></dd></dl>


<dl>
<dt><a name="index-gsl_005fmatrix_005fview_005farray"></a>Function: <em>gsl_matrix_view</em> <strong>gsl_matrix_view_array</strong> <em>(double * <var>base</var>, size_t <var>n1</var>, size_t <var>n2</var>)</em></dt>
<dt><a name="index-gsl_005fmatrix_005fconst_005fview_005farray"></a>Function: <em>gsl_matrix_const_view</em> <strong>gsl_matrix_const_view_array</strong> <em>(const double * <var>base</var>, size_t <var>n1</var>, size_t <var>n2</var>)</em></dt>
<dd><p>These functions return a matrix view of the array <var>base</var>.  The
matrix has <var>n1</var> rows and <var>n2</var> columns.  The physical number of
columns in memory is also given by <var>n2</var>.  Mathematically, the
<em>(i,j)</em>-th element of the new matrix is given by,
</p>
<div class="example">
<pre class="example">m'(i,j) = base[i*n2 + j]
</pre></div>

<p>where the index <var>i</var> runs from 0 to <code>n1-1</code> and the index <var>j</var>
runs from 0 to <code>n2-1</code>.
</p>
<p>The new matrix is only a view of the array <var>base</var>.  When the view
goes out of scope the original array <var>base</var> 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.
</p>
<p>The function <code>gsl_matrix_const_view_array</code> is equivalent to
<code>gsl_matrix_view_array</code> but can be used for matrices which are
declared <code>const</code>.
</p></dd></dl>


<dl>
<dt><a name="index-gsl_005fmatrix_005fview_005farray_005fwith_005ftda"></a>Function: <em>gsl_matrix_view</em> <strong>gsl_matrix_view_array_with_tda</strong> <em>(double * <var>base</var>, size_t <var>n1</var>, size_t <var>n2</var>, size_t <var>tda</var>)</em></dt>
<dt><a name="index-gsl_005fmatrix_005fconst_005fview_005farray_005fwith_005ftda"></a>Function: <em>gsl_matrix_const_view</em> <strong>gsl_matrix_const_view_array_with_tda</strong> <em>(const double * <var>base</var>, size_t <var>n1</var>, size_t <var>n2</var>, size_t <var>tda</var>)</em></dt>
<dd><p>These functions return a matrix view of the array <var>base</var> with a
physical number of columns <var>tda</var> which may differ from the corresponding
dimension of the matrix.  The matrix has <var>n1</var> rows and <var>n2</var>
columns, and the physical number of columns in memory is given by
<var>tda</var>.  Mathematically, the <em>(i,j)</em>-th element of the new
matrix is given by,
</p>
<div class="example">
<pre class="example">m'(i,j) = base[i*tda + j]
</pre></div>

<p>where the index <var>i</var> runs from 0 to <code>n1-1</code> and the index <var>j</var>
runs from 0 to <code>n2-1</code>.
</p>
<p>The new matrix is only a view of the array <var>base</var>.  When the view
goes out of scope the original array <var>base</var> 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.
</p>
<p>The function <code>gsl_matrix_const_view_array_with_tda</code> is equivalent
to <code>gsl_matrix_view_array_with_tda</code> but can be used for matrices
which are declared <code>const</code>.
</p></dd></dl>

<dl>
<dt><a name="index-gsl_005fmatrix_005fview_005fvector"></a>Function: <em>gsl_matrix_view</em> <strong>gsl_matrix_view_vector</strong> <em>(gsl_vector * <var>v</var>, size_t <var>n1</var>, size_t <var>n2</var>)</em></dt>
<dt><a name="index-gsl_005fmatrix_005fconst_005fview_005fvector"></a>Function: <em>gsl_matrix_const_view</em> <strong>gsl_matrix_const_view_vector</strong> <em>(const gsl_vector * <var>v</var>, size_t <var>n1</var>, size_t <var>n2</var>)</em></dt>
<dd><p>These functions return a matrix view of the vector <var>v</var>.  The matrix
has <var>n1</var> rows and <var>n2</var> columns. The vector must have unit
stride. The physical number of columns in memory is also given by
<var>n2</var>.  Mathematically, the <em>(i,j)</em>-th element of the new
matrix is given by,
</p>
<div class="example">
<pre class="example">m'(i,j) = v-&gt;data[i*n2 + j]
</pre></div>

<p>where the index <var>i</var> runs from 0 to <code>n1-1</code> and the index <var>j</var>
runs from 0 to <code>n2-1</code>.
</p>
<p>The new matrix is only a view of the vector <var>v</var>.  When the view
goes out of scope the original vector <var>v</var> 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.
</p>
<p>The function <code>gsl_matrix_const_view_vector</code> is equivalent to
<code>gsl_matrix_view_vector</code> but can be used for matrices which are
declared <code>const</code>.
</p></dd></dl>


<dl>
<dt><a name="index-gsl_005fmatrix_005fview_005fvector_005fwith_005ftda"></a>Function: <em>gsl_matrix_view</em> <strong>gsl_matrix_view_vector_with_tda</strong> <em>(gsl_vector * <var>v</var>, size_t <var>n1</var>, size_t <var>n2</var>, size_t <var>tda</var>)</em></dt>
<dt><a name="index-gsl_005fmatrix_005fconst_005fview_005fvector_005fwith_005ftda"></a>Function: <em>gsl_matrix_const_view</em> <strong>gsl_matrix_const_view_vector_with_tda</strong> <em>(const gsl_vector * <var>v</var>, size_t <var>n1</var>, size_t <var>n2</var>, size_t <var>tda</var>)</em></dt>
<dd><p>These functions return a matrix view of the vector <var>v</var> with a
physical number of columns <var>tda</var> which may differ from the
corresponding matrix dimension.  The vector must have unit stride. The
matrix has <var>n1</var> rows and <var>n2</var> columns, and the physical number
of columns in memory is given by <var>tda</var>.  Mathematically, the
<em>(i,j)</em>-th element of the new matrix is given by,
</p>
<div class="example">
<pre class="example">m'(i,j) = v-&gt;data[i*tda + j]
</pre></div>

<p>where the index <var>i</var> runs from 0 to <code>n1-1</code> and the index <var>j</var>
runs from 0 to <code>n2-1</code>.
</p>
<p>The new matrix is only a view of the vector <var>v</var>.  When the view
goes out of scope the original vector <var>v</var> 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.
</p>
<p>The function <code>gsl_matrix_const_view_vector_with_tda</code> is equivalent
to <code>gsl_matrix_view_vector_with_tda</code> but can be used for matrices
which are declared <code>const</code>.
</p></dd></dl>



<hr>
<div class="header">
<p>
Next: <a href="Creating-row-and-column-views.html#Creating-row-and-column-views" accesskey="n" rel="next">Creating row and column views</a>, Previous: <a href="Reading-and-writing-matrices.html#Reading-and-writing-matrices" accesskey="p" rel="previous">Reading and writing matrices</a>, Up: <a href="Matrices.html#Matrices" accesskey="u" rel="up">Matrices</a> &nbsp; [<a href="Function-Index.html#Function-Index" title="Index" rel="index">Index</a>]</p>
</div>



</body>
</html>