Mercurial > hg > octave-nkf
annotate doc/interpreter/matrix.txi @ 20279:db30302bedc3
Added tag rc-4-0-0-3 for changeset 065f933ef083
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Fri, 10 Apr 2015 14:41:21 -0400 |
parents | 4197fc428c7d |
children |
rev | line source |
---|---|
19898
4197fc428c7d
maint: Update copyright notices for 2015.
John W. Eaton <jwe@octave.org>
parents:
19793
diff
changeset
|
1 @c Copyright (C) 1996-2015 John W. Eaton |
7018 | 2 @c |
3 @c This file is part of Octave. | |
4 @c | |
5 @c Octave is free software; you can redistribute it and/or modify it | |
6 @c under the terms of the GNU General Public License as published by the | |
7 @c Free Software Foundation; either version 3 of the License, or (at | |
8 @c your option) any later version. | |
19790
446c46af4b42
strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents:
17744
diff
changeset
|
9 @c |
7018 | 10 @c Octave is distributed in the hope that it will be useful, but WITHOUT |
11 @c ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
12 @c FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
13 @c for more details. | |
19790
446c46af4b42
strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents:
17744
diff
changeset
|
14 @c |
7018 | 15 @c You should have received a copy of the GNU General Public License |
16 @c along with Octave; see the file COPYING. If not, see | |
17 @c <http://www.gnu.org/licenses/>. | |
3294 | 18 |
4167 | 19 @node Matrix Manipulation |
3294 | 20 @chapter Matrix Manipulation |
21 | |
22 There are a number of functions available for checking to see if the | |
23 elements of a matrix meet some condition, and for rearranging the | |
24 elements of a matrix. For example, Octave can easily tell you if all | |
25 the elements of a matrix are finite, or are less than some specified | |
26 value. Octave can also rotate the elements, extract the upper- or | |
27 lower-triangular parts, or sort the columns of a matrix. | |
28 | |
29 @menu | |
17152
f2a8592b8fbd
doc: Shorten some long subsection names in Manual.
Rik <rik@octave.org>
parents:
17097
diff
changeset
|
30 * Finding Elements and Checking Conditions:: |
f2a8592b8fbd
doc: Shorten some long subsection names in Manual.
Rik <rik@octave.org>
parents:
17097
diff
changeset
|
31 * Rearranging Matrices:: |
f2a8592b8fbd
doc: Shorten some long subsection names in Manual.
Rik <rik@octave.org>
parents:
17097
diff
changeset
|
32 * Special Utility Matrices:: |
f2a8592b8fbd
doc: Shorten some long subsection names in Manual.
Rik <rik@octave.org>
parents:
17097
diff
changeset
|
33 * Famous Matrices:: |
3294 | 34 @end menu |
35 | |
4167 | 36 @node Finding Elements and Checking Conditions |
3294 | 37 @section Finding Elements and Checking Conditions |
38 | |
39 The functions @code{any} and @code{all} are useful for determining | |
40 whether any or all of the elements of a matrix satisfy some condition. | |
41 The @code{find} function is also useful in determining which elements of | |
42 a matrix meet a specified condition. | |
43 | |
3369 | 44 @DOCSTRING(any) |
3294 | 45 |
3369 | 46 @DOCSTRING(all) |
3294 | 47 |
48 Since the comparison operators (@pxref{Comparison Ops}) return matrices | |
49 of ones and zeros, it is easy to test a matrix for many things, not just | |
10846
a4f482e66b65
Grammarcheck more of the documentation.
Rik <octave@nomad.inbox5.com>
parents:
10828
diff
changeset
|
50 whether the elements are nonzero. For example, |
3294 | 51 |
52 @example | |
53 @group | |
54 all (all (rand (5) < 0.9)) | |
55 @result{} 0 | |
56 @end group | |
57 @end example | |
58 | |
59 @noindent | |
60 tests a random 5 by 5 matrix to see if all of its elements are less | |
61 than 0.9. | |
62 | |
63 Note that in conditional contexts (like the test clause of @code{if} and | |
64 @code{while} statements) Octave treats the test as if you had typed | |
65 @code{all (all (condition))}. | |
66 | |
3428 | 67 @DOCSTRING(xor) |
68 | |
3369 | 69 @DOCSTRING(diff) |
3294 | 70 |
3369 | 71 @DOCSTRING(isinf) |
3294 | 72 |
3369 | 73 @DOCSTRING(isnan) |
3294 | 74 |
11431
0d9640d755b1
Improve docstrings for all isXXX functions.
Rik <octave@nomad.inbox5.com>
parents:
10892
diff
changeset
|
75 @DOCSTRING(isfinite) |
3294 | 76 |
12639
4d777e05d47c
doc: Review and update documentation for "Matrix Manipulation" chapter.
Rik <octave@nomad.inbox5.com>
parents:
12523
diff
changeset
|
77 @DOCSTRING(common_size) |
4d777e05d47c
doc: Review and update documentation for "Matrix Manipulation" chapter.
Rik <octave@nomad.inbox5.com>
parents:
12523
diff
changeset
|
78 |
3369 | 79 @DOCSTRING(find) |
17281
bc924baa2c4e
doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents:
17152
diff
changeset
|
80 |
9367 | 81 @DOCSTRING(lookup) |
3428 | 82 |
13017
aaf6fbb2512f
doc: Add cross references to "status of variables" in sections for predicates
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
12639
diff
changeset
|
83 If you wish to check if a variable exists at all, instead of properties |
13019
1653d3a86fca
doc: Fix warnings and errors in Texinfo required for building docs on stable branch.
Rik <octave@nomad.inbox5.com>
parents:
13017
diff
changeset
|
84 its elements may have, consult @ref{Status of Variables}. |
13017
aaf6fbb2512f
doc: Add cross references to "status of variables" in sections for predicates
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
12639
diff
changeset
|
85 |
4167 | 86 @node Rearranging Matrices |
3294 | 87 @section Rearranging Matrices |
88 | |
3369 | 89 @DOCSTRING(fliplr) |
3294 | 90 |
3369 | 91 @DOCSTRING(flipud) |
3294 | 92 |
19318
995df67fc912
Flip arrays - ND support for fliplr and flipud, and replace flipdim with flip.
Carnë Draug <carandraug+dev@gmail.com>
parents:
17744
diff
changeset
|
93 @DOCSTRING(flip) |
4869 | 94 |
3369 | 95 @DOCSTRING(rot90) |
3294 | 96 |
4869 | 97 @DOCSTRING(rotdim) |
98 | |
4845 | 99 @DOCSTRING(cat) |
100 | |
101 @DOCSTRING(horzcat) | |
102 | |
103 @DOCSTRING(vertcat) | |
104 | |
105 @DOCSTRING(permute) | |
106 | |
107 @DOCSTRING(ipermute) | |
108 | |
3369 | 109 @DOCSTRING(reshape) |
3294 | 110 |
8432
c9cb8f0b8b4f
add reference to resize function in the manual
Francesco Potortì <pot@gnu.org>
parents:
8286
diff
changeset
|
111 @DOCSTRING(resize) |
c9cb8f0b8b4f
add reference to resize function in the manual
Francesco Potortì <pot@gnu.org>
parents:
8286
diff
changeset
|
112 |
4894 | 113 @DOCSTRING(circshift) |
114 | |
12639
4d777e05d47c
doc: Review and update documentation for "Matrix Manipulation" chapter.
Rik <octave@nomad.inbox5.com>
parents:
12523
diff
changeset
|
115 @DOCSTRING(shift) |
4894 | 116 |
12639
4d777e05d47c
doc: Review and update documentation for "Matrix Manipulation" chapter.
Rik <octave@nomad.inbox5.com>
parents:
12523
diff
changeset
|
117 @DOCSTRING(shiftdim) |
3294 | 118 |
3369 | 119 @DOCSTRING(sort) |
3294 | 120 |
6550 | 121 @DOCSTRING(sortrows) |
122 | |
8817
03b7f618ab3d
include docstrings for new functions in the manual
John W. Eaton <jwe@octave.org>
parents:
8519
diff
changeset
|
123 @DOCSTRING(issorted) |
03b7f618ab3d
include docstrings for new functions in the manual
John W. Eaton <jwe@octave.org>
parents:
8519
diff
changeset
|
124 |
12523
33f7d8f95f5b
Add nth_element function to documentation.
Rik <octave@nomad.inbox5.com>
parents:
12498
diff
changeset
|
125 @DOCSTRING(nth_element) |
33f7d8f95f5b
Add nth_element function to documentation.
Rik <octave@nomad.inbox5.com>
parents:
12498
diff
changeset
|
126 |
17097
e7a059a9a644
doc: Use XREF as anchor prefix in documentation for clearer results in Info viewer.
Rik <rik@octave.org>
parents:
16772
diff
changeset
|
127 @anchor{XREFtriu} |
3369 | 128 @DOCSTRING(tril) |
3294 | 129 |
3369 | 130 @DOCSTRING(vec) |
3294 | 131 |
3369 | 132 @DOCSTRING(vech) |
3294 | 133 |
3428 | 134 @DOCSTRING(prepad) |
135 | |
11539
6bac61388876
Add undocumented postpad function to documentation.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
136 @DOCSTRING(postpad) |
6bac61388876
Add undocumented postpad function to documentation.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
137 |
8851
d6de39523f03
improve the diag & perm matrices text
Jaroslav Hajek <highegg@gmail.com>
parents:
8839
diff
changeset
|
138 @DOCSTRING(diag) |
d6de39523f03
improve the diag & perm matrices text
Jaroslav Hajek <highegg@gmail.com>
parents:
8839
diff
changeset
|
139 |
6550 | 140 @DOCSTRING(blkdiag) |
141 | |
4167 | 142 @node Special Utility Matrices |
3294 | 143 @section Special Utility Matrices |
144 | |
3369 | 145 @DOCSTRING(eye) |
3294 | 146 |
3369 | 147 @DOCSTRING(ones) |
3294 | 148 |
3369 | 149 @DOCSTRING(zeros) |
3294 | 150 |
3920 | 151 @DOCSTRING(repmat) |
152 | |
10801
a40e32927b3a
Improve documentation for new repelems function.
Rik <octave@nomad.inbox5.com>
parents:
10791
diff
changeset
|
153 @DOCSTRING(repelems) |
a40e32927b3a
Improve documentation for new repelems function.
Rik <octave@nomad.inbox5.com>
parents:
10791
diff
changeset
|
154 |
12639
4d777e05d47c
doc: Review and update documentation for "Matrix Manipulation" chapter.
Rik <octave@nomad.inbox5.com>
parents:
12523
diff
changeset
|
155 The functions @code{linspace} and @code{logspace} make it very easy to |
4d777e05d47c
doc: Review and update documentation for "Matrix Manipulation" chapter.
Rik <octave@nomad.inbox5.com>
parents:
12523
diff
changeset
|
156 create vectors with evenly or logarithmically spaced elements. |
4d777e05d47c
doc: Review and update documentation for "Matrix Manipulation" chapter.
Rik <octave@nomad.inbox5.com>
parents:
12523
diff
changeset
|
157 @xref{Ranges}. |
4d777e05d47c
doc: Review and update documentation for "Matrix Manipulation" chapter.
Rik <octave@nomad.inbox5.com>
parents:
12523
diff
changeset
|
158 |
4d777e05d47c
doc: Review and update documentation for "Matrix Manipulation" chapter.
Rik <octave@nomad.inbox5.com>
parents:
12523
diff
changeset
|
159 @DOCSTRING(linspace) |
4d777e05d47c
doc: Review and update documentation for "Matrix Manipulation" chapter.
Rik <octave@nomad.inbox5.com>
parents:
12523
diff
changeset
|
160 |
4d777e05d47c
doc: Review and update documentation for "Matrix Manipulation" chapter.
Rik <octave@nomad.inbox5.com>
parents:
12523
diff
changeset
|
161 @DOCSTRING(logspace) |
4d777e05d47c
doc: Review and update documentation for "Matrix Manipulation" chapter.
Rik <octave@nomad.inbox5.com>
parents:
12523
diff
changeset
|
162 |
3369 | 163 @DOCSTRING(rand) |
3294 | 164 |
10892
20ce631f0f12
Add new randi function for random integers.
Rik <octave@nomad.inbox5.com>
parents:
10846
diff
changeset
|
165 @DOCSTRING(randi) |
20ce631f0f12
Add new randi function for random integers.
Rik <octave@nomad.inbox5.com>
parents:
10846
diff
changeset
|
166 |
3369 | 167 @DOCSTRING(randn) |
3294 | 168 |
5730 | 169 @DOCSTRING(rande) |
170 | |
171 @DOCSTRING(randp) | |
172 | |
173 @DOCSTRING(randg) | |
174 | |
8133
f38997cf9e5b
matrix.txi: update docs for random number generators
Brian Gough
parents:
7018
diff
changeset
|
175 The generators operate in the new or old style together, it is not |
f38997cf9e5b
matrix.txi: update docs for random number generators
Brian Gough
parents:
7018
diff
changeset
|
176 possible to mix the two. Initializing any generator with |
17281
bc924baa2c4e
doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents:
17152
diff
changeset
|
177 @qcode{"state"} or @qcode{"seed"} causes the others to switch to the |
8133
f38997cf9e5b
matrix.txi: update docs for random number generators
Brian Gough
parents:
7018
diff
changeset
|
178 same style for future calls. |
f38997cf9e5b
matrix.txi: update docs for random number generators
Brian Gough
parents:
7018
diff
changeset
|
179 |
f38997cf9e5b
matrix.txi: update docs for random number generators
Brian Gough
parents:
7018
diff
changeset
|
180 The state of each generator is independent and calls to different |
f38997cf9e5b
matrix.txi: update docs for random number generators
Brian Gough
parents:
7018
diff
changeset
|
181 generators can be interleaved without affecting the final result. For |
f38997cf9e5b
matrix.txi: update docs for random number generators
Brian Gough
parents:
7018
diff
changeset
|
182 example, |
3294 | 183 |
184 @example | |
185 @group | |
8133
f38997cf9e5b
matrix.txi: update docs for random number generators
Brian Gough
parents:
7018
diff
changeset
|
186 rand ("state", [11, 22, 33]); |
f38997cf9e5b
matrix.txi: update docs for random number generators
Brian Gough
parents:
7018
diff
changeset
|
187 randn ("state", [44, 55, 66]); |
3294 | 188 u = rand (100, 1); |
189 n = randn (100, 1); | |
190 @end group | |
191 @end example | |
192 | |
193 @noindent | |
194 and | |
195 | |
196 @example | |
197 @group | |
8133
f38997cf9e5b
matrix.txi: update docs for random number generators
Brian Gough
parents:
7018
diff
changeset
|
198 rand ("state", [11, 22, 33]); |
f38997cf9e5b
matrix.txi: update docs for random number generators
Brian Gough
parents:
7018
diff
changeset
|
199 randn ("state", [44, 55, 66]); |
3294 | 200 u = zeros (100, 1); |
201 n = zeros (100, 1); | |
202 for i = 1:100 | |
203 u(i) = rand (); | |
204 n(i) = randn (); | |
205 end | |
206 @end group | |
207 @end example | |
208 | |
209 @noindent | |
8133
f38997cf9e5b
matrix.txi: update docs for random number generators
Brian Gough
parents:
7018
diff
changeset
|
210 produce equivalent results. When the generators are initialized in |
17281
bc924baa2c4e
doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents:
17152
diff
changeset
|
211 the old style with @qcode{"seed"} only @code{rand} and @code{randn} are |
8133
f38997cf9e5b
matrix.txi: update docs for random number generators
Brian Gough
parents:
7018
diff
changeset
|
212 independent, because the old @code{rande}, @code{randg} and |
f38997cf9e5b
matrix.txi: update docs for random number generators
Brian Gough
parents:
7018
diff
changeset
|
213 @code{randp} generators make calls to @code{rand} and @code{randn}. |
3294 | 214 |
8133
f38997cf9e5b
matrix.txi: update docs for random number generators
Brian Gough
parents:
7018
diff
changeset
|
215 The generators are initialized with random states at start-up, so |
f38997cf9e5b
matrix.txi: update docs for random number generators
Brian Gough
parents:
7018
diff
changeset
|
216 that the sequences of random numbers are not the same each time you run |
f38997cf9e5b
matrix.txi: update docs for random number generators
Brian Gough
parents:
7018
diff
changeset
|
217 Octave.@footnote{The old versions of @code{rand} and @code{randn} |
f38997cf9e5b
matrix.txi: update docs for random number generators
Brian Gough
parents:
7018
diff
changeset
|
218 obtain their initial seeds from the system clock.} If you really do |
f38997cf9e5b
matrix.txi: update docs for random number generators
Brian Gough
parents:
7018
diff
changeset
|
219 need to reproduce a sequence of numbers exactly, you can set the state |
f38997cf9e5b
matrix.txi: update docs for random number generators
Brian Gough
parents:
7018
diff
changeset
|
220 or seed to a specific value. |
3294 | 221 |
8133
f38997cf9e5b
matrix.txi: update docs for random number generators
Brian Gough
parents:
7018
diff
changeset
|
222 If invoked without arguments, @code{rand} and @code{randn} return a |
3294 | 223 single element of a random sequence. |
224 | |
8133
f38997cf9e5b
matrix.txi: update docs for random number generators
Brian Gough
parents:
7018
diff
changeset
|
225 The original @code{rand} and @code{randn} functions use Fortran code from |
10828
322f43e0e170
Grammarcheck .txi documentation files.
Rik <octave@nomad.inbox5.com>
parents:
10801
diff
changeset
|
226 @sc{ranlib}, a library of Fortran routines for random number generation, |
3294 | 227 compiled by Barry W. Brown and James Lovato of the Department of |
228 Biomathematics at The University of Texas, M.D. Anderson Cancer Center, | |
229 Houston, TX 77030. | |
230 | |
3428 | 231 @DOCSTRING(randperm) |
232 | |
4167 | 233 @node Famous Matrices |
3294 | 234 @section Famous Matrices |
235 | |
236 The following functions return famous matrix forms. | |
237 | |
16634
2510fffc05e1
gallery: new function
Carnë Draug <carandraug@octave.org>
parents:
14138
diff
changeset
|
238 @DOCSTRING(gallery) |
2510fffc05e1
gallery: new function
Carnë Draug <carandraug@octave.org>
parents:
14138
diff
changeset
|
239 |
6502 | 240 @DOCSTRING(hadamard) |
241 | |
3369 | 242 @DOCSTRING(hankel) |
3294 | 243 |
3369 | 244 @DOCSTRING(hilb) |
3294 | 245 |
3369 | 246 @DOCSTRING(invhilb) |
3294 | 247 |
6502 | 248 @DOCSTRING(magic) |
249 | |
250 @DOCSTRING(pascal) | |
251 | |
252 @DOCSTRING(rosser) | |
253 | |
3369 | 254 @DOCSTRING(toeplitz) |
3294 | 255 |
3369 | 256 @DOCSTRING(vander) |
6502 | 257 |
258 @DOCSTRING(wilkinson) |