annotate doc/faq/OctaveFAQ.texi @ 12479:c741c1f2789e

Minor proofreading in FAQ
author Jordi Gutiérrez Hermoso <jordigh@gmail.com>
date Fri, 25 Feb 2011 15:11:26 -0600
parents b4138a75eecc
children 30f2a3b1d236
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
11523
fd0a3ac60b0e update copyright notices
John W. Eaton <jwe@octave.org>
parents: 9794
diff changeset
1 % Copyright (C) 1997-2011 John W. Eaton
7018
fd42779a8428 [project @ 2007-10-13 00:52:12 by jwe]
jwe
parents: 6900
diff changeset
2 %
fd42779a8428 [project @ 2007-10-13 00:52:12 by jwe]
jwe
parents: 6900
diff changeset
3 % This file is part of Octave.
fd42779a8428 [project @ 2007-10-13 00:52:12 by jwe]
jwe
parents: 6900
diff changeset
4 %
fd42779a8428 [project @ 2007-10-13 00:52:12 by jwe]
jwe
parents: 6900
diff changeset
5 % Octave is free software; you can redistribute it and/or modify it
fd42779a8428 [project @ 2007-10-13 00:52:12 by jwe]
jwe
parents: 6900
diff changeset
6 % under the terms of the GNU General Public License as published by the
fd42779a8428 [project @ 2007-10-13 00:52:12 by jwe]
jwe
parents: 6900
diff changeset
7 % Free Software Foundation; either version 3 of the License, or (at
fd42779a8428 [project @ 2007-10-13 00:52:12 by jwe]
jwe
parents: 6900
diff changeset
8 % your option) any later version.
fd42779a8428 [project @ 2007-10-13 00:52:12 by jwe]
jwe
parents: 6900
diff changeset
9 %
fd42779a8428 [project @ 2007-10-13 00:52:12 by jwe]
jwe
parents: 6900
diff changeset
10 % Octave is distributed in the hope that it will be useful, but WITHOUT
fd42779a8428 [project @ 2007-10-13 00:52:12 by jwe]
jwe
parents: 6900
diff changeset
11 % ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
fd42779a8428 [project @ 2007-10-13 00:52:12 by jwe]
jwe
parents: 6900
diff changeset
12 % FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
fd42779a8428 [project @ 2007-10-13 00:52:12 by jwe]
jwe
parents: 6900
diff changeset
13 % for more details.
fd42779a8428 [project @ 2007-10-13 00:52:12 by jwe]
jwe
parents: 6900
diff changeset
14 %
fd42779a8428 [project @ 2007-10-13 00:52:12 by jwe]
jwe
parents: 6900
diff changeset
15 % You should have received a copy of the GNU General Public License
fd42779a8428 [project @ 2007-10-13 00:52:12 by jwe]
jwe
parents: 6900
diff changeset
16 % along with Octave; see the file COPYING. If not, see
fd42779a8428 [project @ 2007-10-13 00:52:12 by jwe]
jwe
parents: 6900
diff changeset
17 % <http://www.gnu.org/licenses/>.
fd42779a8428 [project @ 2007-10-13 00:52:12 by jwe]
jwe
parents: 6900
diff changeset
18
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
19 \input texinfo.tex @c -*-texinfo-*-
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
20
9794
0d4613a736e9 convert build system to use automake and libtool
John W. Eaton <jwe@octave.org>
parents: 9245
diff changeset
21 @setfilename OctaveFAQ.info
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
22 @settitle Frequently asked questions about Octave (with answers)
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
23
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
24 @setchapternewpage off
5099
f7e39f977fe8 [project @ 2004-12-24 19:06:01 by jwe]
jwe
parents: 5041
diff changeset
25 @direntry
9794
0d4613a736e9 convert build system to use automake and libtool
John W. Eaton <jwe@octave.org>
parents: 9245
diff changeset
26 * OctaveFAQ: (OctaveFAQ). Frequently asked questions about Octave
5099
f7e39f977fe8 [project @ 2004-12-24 19:06:01 by jwe]
jwe
parents: 5041
diff changeset
27 @end direntry
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
28 @titlepage
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
29 @title Octave FAQ
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
30 @subtitle Frequently asked questions about Octave
12479
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
31 @subtitle @today{}
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
32 @sp 1
6900
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
33 @author John W. Eaton and David Bateman
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
34 @page
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
35 @end titlepage
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
36
5423
6cd1c2fc4dab [project @ 2005-07-28 19:27:57 by jwe]
jwe
parents: 5099
diff changeset
37 @ifnottex
4830
a3dd9369a1d4 [project @ 2004-03-10 06:10:19 by jwe]
jwe
parents: 4476
diff changeset
38 @node Top
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
39 @top
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
40 @unnumbered Preface
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
41 @cindex FAQ for Octave, latest version
5423
6cd1c2fc4dab [project @ 2005-07-28 19:27:57 by jwe]
jwe
parents: 5099
diff changeset
42 @end ifnottex
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
43
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
44 This is a list of frequently asked questions (FAQ) for Octave users.
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
45
6584
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
46 We are always looking for new questions (@emph{with} answers), better
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
47 answers, or both. Please send suggestions to @email{bug@@octave.org}.
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
48 If you have general questions about Octave, or need help for something
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
49 that is not covered by the Octave manual or the FAQ, please use the
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
50 @email{help@@octave.org} mailing list.
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
51
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
52 This FAQ is intended to supplement, not replace, the Octave manual.
6584
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
53 Before posting a question to the @email{help@@octave.org} mailing list,
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
54 you should first check to see if the topic is covered in the manual.
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
55
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
56 @menu
12479
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
57 * What is Octave?::
9076
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
58 * Licensing Issues::
12479
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
59 * How can I cite Octave?::
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
60 * Series 3.0.N::
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
61 * Octave Features::
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
62 * Learning more about Octave::
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
63 * Getting Octave::
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
64 * Installation::
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
65 * Common problems::
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
66 * How do I ...?::
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
67 * @sc{Matlab} compatibility::
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
68 * Index::
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
69 @end menu
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
70
4830
a3dd9369a1d4 [project @ 2004-03-10 06:10:19 by jwe]
jwe
parents: 4476
diff changeset
71 @node What is Octave?
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
72 @chapter What is Octave?
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
73
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
74 Octave is a high-level interactive language, primarily intended for
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
75 numerical computations that is mostly compatible with
12479
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
76 @sc{Matlab}.@footnote{@sc{Matlab} is a registered trademark of The
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
77 MathWorks, Inc.}
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
78
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
79 Octave can do arithmetic for real, complex or integer-valued scalars
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
80 and matrices, solve sets of nonlinear algebraic equations, integrate
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
81 functions over finite and infinite intervals, and integrate systems of
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
82 ordinary differential and differential-algebraic equations.
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
83
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
84 Octave uses the GNU readline library to handle reading and editing
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
85 input. By default, the line editing commands are similar to the
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
86 cursor movement commands used by GNU Emacs, and a vi-style line
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
87 editing interface is also available. At the end of each session, the
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
88 command history is saved, so that commands entered during previous
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
89 sessions are not lost.
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
90
12479
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
91 The Octave distribution includes a 590+ page Texinfo manual. Access to
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
92 the complete text of the manual is available via the @code{doc} command
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
93 at the Octave prompt.
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
94
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
95 @menu
12479
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
96 * Who develops Octave?::
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
97 * Why GNU Octave?::
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
98 * What version should I use?::
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
99 * On what platforms does Octave run?::
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
100 @end menu
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
101
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
102 @node Who develops Octave?
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
103 @section Who develops Octave?
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
104
6584
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
105 Discussions about writing the software that would eventually become
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
106 Octave started in about 1988 with James B. Rawlings and John W. Eaton at
12479
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
107 the University of Texas. John W. Eaton was the original author of
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
108 Octave, starting full-time development in February 1992. He is still the
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
109 primary maintainer. The community of users/developers has in addition
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
110 contributed some code and fuels the discussion on the mailing lists
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
111 @email{help@@octave.org} (user forum), @email{maintainers@@octave.org}
6584
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
112 (development issues), and @email{octave-dev@@lists.sourceforge.net} (all
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
113 things related to the Octave Forge repository of user-contributed
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
114 functions).
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
115
6584
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
116 @node Why GNU Octave?
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
117 @section Why GNU Octave?
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
118
6584
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
119 The GNU Project was launched in 1984 to develop a complete Unix-like
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
120 operating system which is free software: the GNU system.
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
121
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
122 GNU is a recursive acronym for ``GNU's Not Unix''; it is pronounced
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
123 guh-noo, approximately like canoe.
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
124
6584
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
125 The Free Software Foundation (FSF) is the principal organizational
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
126 sponsor of the GNU Project.
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
127
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
128 Octave became GNU Octave in 1997 (beginning with version 2.0.6). This
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
129 meant agreeing to consider Octave a part of the GNU Project and support
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
130 the efforts of the FSF. However, Octave is not and has never been
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
131 developed by the FSF.
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
132
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
133 For more information about the GNU project, see @url{www.gnu.org}.
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
134
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
135 @cindex FSF [Free Software Foundation]
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
136 @cindex GNU [GNU's not unix]
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
137
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
138 @node What version should I use?
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
139 @section What version should I use?
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
140
12479
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
141 In general, you will find the latest version on
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
142 @url{http://www.octave.org/download.html}. It is recommended to use the
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
143 ``testing'' version of octave for general use, and the ``development''
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
144 version if you want the latest features.
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
145
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
146 A list of user-visible changes since the last release is available in
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
147 the file @file{NEWS}. The file @file{ChangeLog} in the source
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
148 distribution contains a more detailed record of changes made since the
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
149 last release.
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
150
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
151 @node On what platforms does Octave run?
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
152 @section On what platforms does Octave run?
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
153
6584
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
154 Octave runs on various Unices---at least Linux and Solaris, Mac OS X,
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
155 Windows and anything you can compile it on. Binary distributions exist
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
156 at least for Debian, Suse, Fedora and RedHat Linuxes (Intel and AMD
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
157 CPUs, at least), for Mac Os X and Windows' 98, 2000 and XP.
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
158
12479
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
159 Two and three dimensional plotting is fully supported using gnuplot and
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
160 an experimental OpenGL backend.
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
161
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
162 The underlying numerical solvers are currently standard Fortran ones
12479
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
163 like LAPACK, LINPACK, ODEPACK, the BLAS, etc., packaged in a library
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
164 of C++ classes. If possible, the Fortran subroutines are compiled
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
165 with the system's Fortran compiler, and called directly from the C++
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
166 functions. If that's not possible, you can still compile Octave if
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
167 you have the free Fortran to C translator f2c.
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
168
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
169 Octave is also free software; you can redistribute it and/or modify it
12479
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
170 under the terms of the GNU General Public License, version 3, as
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
171 published by the Free Software Foundation, or at your option any later
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
172 version.
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
173
9076
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
174 @node Licensing Issues
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
175 @chapter Licensing Issues
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
176
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
177 @menu
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
178 * If I write code using Octave do I have to release it under the GPL?: GPL
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
179 * Since the MEX interface allows plugins to be distributed under terms that are incompatible with the GPL, does this mean that you are encouraging people to to write non-free software for Octave?: Licensing MEX Files
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
180 * I wrote a program that links with Octave libraries and I don't want to release it under the terms of the GPL. Will you change the license of the Octave libraries for me?: Requesting License Changes
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
181 @end menu
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
182
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
183 @node GPL
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
184 @section If I write code using Octave do I have to release it under the GPL?
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
185
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
186 The answer depends on precisely how the code is written and how it works.
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
187
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
188 Code written entirely in the scripting language of Octave
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
189 (interpreted code in .m files) may be released under the terms of
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
190 whatever license you choose.
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
191
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
192 Code written using Octave's native plug-in interface (also known
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
193 as a .oct file) necessarily links with Octave internals and is
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
194 considered a derivative work of Octave and therefore must be
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
195 released under terms that are compatible with the GPL.
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
196
12478
b4138a75eecc Uniformise "Matlab" typesetting in FAQ.
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 11576
diff changeset
197 Code written using Octave's implementation of the @sc{Matlab} MEX
9076
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
198 interface may be released under the terms of whatever license you
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
199 choose, provided that the following conditions are met:
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
200
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
201 @enumerate
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
202 @item
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
203 The plugin should not use any bindings that are specific to Octave. In
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
204 other words, the MEX file must use the MEX interface only, and not also
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
205 call on other Octave internals. It should be possible in principle to
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
206 use the MEX file with other programs that implement the MEX interface
12478
b4138a75eecc Uniformise "Matlab" typesetting in FAQ.
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 11576
diff changeset
207 (e.g., @sc{Matlab}).
9076
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
208
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
209 @item
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
210 The MEX file should not be distributed together with Octave in such a
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
211 way that they effectively create a single work. For example, you should
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
212 not distribute the MEX file and Octave together in a single package such
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
213 that Octave automatically loads and runs the MEX file when it starts up.
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
214 There are other possible ways that you might effectively create a single
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
215 work; this is just one example.
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
216 @end enumerate
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
217
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
218 A program that embeds the Octave interpreter (e.g., by calling the
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
219 "octave_main" function), or that calls functions from Octave's
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
220 libraries (e.g., liboctinterp, liboctave, or libcruft) is
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
221 considered a derivative work of Octave and therefore must be
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
222 released under terms that are compatible with the GPL.
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
223
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
224 @node Licensing MEX Files
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
225 @section Since the MEX interface allows plugins to be distributed under terms that are incompatible with the GPL, does this mean that you are encouraging people to to write non-free software for Octave?
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
226
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
227 No. The original reason for implementing the MEX interface for Octave
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
228 was to allow Octave to run free software that uses MEX files (the
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
229 particular goal was to run SundialsTB in Octave). The intent was to
12478
b4138a75eecc Uniformise "Matlab" typesetting in FAQ.
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 11576
diff changeset
230 liberate that software from @sc{Matlab} and increase the amount of free
9076
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
231 software available to Octave users, not to enable people to write
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
232 proprietary code for Octave. For the good of the community, we strongly
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
233 encourage users of Octave to release the code they write for Octave
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
234 under terms that are compatible with the GPL.
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
235
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
236 @node Requesting License Changes
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
237 @section I wrote a program that links with Octave libraries and I don't want to release it under the terms of the GPL. Will you change the license of the Octave libraries for me?
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
238
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
239 No. Instead of asking us to change the licensing terms for Octave, we
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
240 recommend that you release your program under terms that are compatible
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
241 with the GPL so that the free software community can benefit from your
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
242 work the same as you have benefitted from the work of all the people who
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
243 have contributed to Octave.
d5a4aa53f03a FAQ additions
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
244
4830
a3dd9369a1d4 [project @ 2004-03-10 06:10:19 by jwe]
jwe
parents: 4476
diff changeset
245 @node How can I cite Octave?
a3dd9369a1d4 [project @ 2004-03-10 06:10:19 by jwe]
jwe
parents: 4476
diff changeset
246 @chapter How can I cite Octave?
4831
4ec7d24b4943 [project @ 2004-03-10 06:14:52 by jwe]
jwe
parents: 4830
diff changeset
247
4ec7d24b4943 [project @ 2004-03-10 06:14:52 by jwe]
jwe
parents: 4830
diff changeset
248 Pointing to @url{http://www.octave.org} is good, because that gives
4ec7d24b4943 [project @ 2004-03-10 06:14:52 by jwe]
jwe
parents: 4830
diff changeset
249 people a direct way to find out more. If citation of a URL is not
4ec7d24b4943 [project @ 2004-03-10 06:14:52 by jwe]
jwe
parents: 4830
diff changeset
250 allowed by a publisher, or if you also want to point to a traditional
4ec7d24b4943 [project @ 2004-03-10 06:14:52 by jwe]
jwe
parents: 4830
diff changeset
251 reference, then you can cite the Octave manual:
4830
a3dd9369a1d4 [project @ 2004-03-10 06:10:19 by jwe]
jwe
parents: 4476
diff changeset
252
a3dd9369a1d4 [project @ 2004-03-10 06:10:19 by jwe]
jwe
parents: 4476
diff changeset
253 @example
a3dd9369a1d4 [project @ 2004-03-10 06:10:19 by jwe]
jwe
parents: 4476
diff changeset
254 @group
8334
70dd33450061 Update manual citation
David Bateman <dbateman@free.fr>
parents: 8325
diff changeset
255 @@BOOK@{eaton:2008,
70dd33450061 Update manual citation
David Bateman <dbateman@free.fr>
parents: 8325
diff changeset
256 author = "John W. Eaton and David Bateman and Søren Hauberg",
70dd33450061 Update manual citation
David Bateman <dbateman@free.fr>
parents: 8325
diff changeset
257 title = "GNU Octave Manual Version 3",
6584
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
258 publisher = "Network Theory Limited",
8334
70dd33450061 Update manual citation
David Bateman <dbateman@free.fr>
parents: 8325
diff changeset
259 year = "2008",
70dd33450061 Update manual citation
David Bateman <dbateman@free.fr>
parents: 8325
diff changeset
260 isbn = "0-9546120-6-X"
6584
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
261 @}
4830
a3dd9369a1d4 [project @ 2004-03-10 06:10:19 by jwe]
jwe
parents: 4476
diff changeset
262 @end group
a3dd9369a1d4 [project @ 2004-03-10 06:10:19 by jwe]
jwe
parents: 4476
diff changeset
263 @end example
a3dd9369a1d4 [project @ 2004-03-10 06:10:19 by jwe]
jwe
parents: 4476
diff changeset
264
8128
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
265 @node Series 3.0.N
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
266 @chapter What's new in version series 3.0.N and 3.1.N of Octave
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
267
8128
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
268 The 3.0.N series has enough new features to justify a major version
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
269 number change. The 3.0.N series brings
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
270
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
271 @itemize @bullet
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
272
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
273 @item integer types
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
274
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
275 @item fixed point arithmetic
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
276
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
277 @item sparse matrices
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
278
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
279 @item Linear programming code based on GLPK
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
280
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
281 @item 64-bit compilation support
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
282
12478
b4138a75eecc Uniformise "Matlab" typesetting in FAQ.
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 11576
diff changeset
283 @item gzipped files and stream and consequently support of @sc{Matlab} v7 files
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
284
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
285 @item better support for both msvc and mingw
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
286
7116
c7992b210874 [project @ 2007-11-07 15:49:37 by jwe]
jwe
parents: 7018
diff changeset
287 @item a fully compatible MEX interface
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
288
6606
2c19eaa2c6f7 [project @ 2007-05-07 17:09:38 by jwe]
jwe
parents: 6584
diff changeset
289 @item many many other minor features and compatibility changes
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
290
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
291 @end itemize
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
292
12479
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
293 Here are some features that have been around since 2.1.N:
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
294
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
295 @itemize @bullet
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
296
12479
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
297 @item NDarrays
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
298
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
299 @item cells
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
300
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
301 @end itemize
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
302
8128
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
303 The 3.1.N series is the current development release and will become a
12479
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
304 3.2.N release in the future. This series brings the following new
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
305 features:
8128
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
306
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
307 @itemize
11576
8ac9687dbe9f rename backend to graphics_toolkit
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
308 @item OpenGL graphics toolkit
8128
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
309
12479
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
310 An experimental OpenGL graphics toolkit to replace gnuplot.
8128
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
311
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
312 @item Object Orient Programming
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
313
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
314 @item Block comments
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
315
12479
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
316 @item imwrite and imread
8128
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
317
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
318 The functions are based on the GraphicsMagick library.
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
319
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
320 @item Lazy transpose
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
321
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
322 Special treatment in the parser of things like "a' * b", where the
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
323 transpose is never explicitly formed but a flag is rather passed to the
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
324 underlying LAPACK code.
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
325
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
326 @item Single precision type
8292
242756f065f0 Minor NEWS/FAQ update
David Bateman <dbateman@free.fr>
parents: 8215
diff changeset
327
242756f065f0 Minor NEWS/FAQ update
David Bateman <dbateman@free.fr>
parents: 8215
diff changeset
328 @item Improved array indexing
242756f065f0 Minor NEWS/FAQ update
David Bateman <dbateman@free.fr>
parents: 8215
diff changeset
329 The underlying code used for indexing of arrays has been completely
242756f065f0 Minor NEWS/FAQ update
David Bateman <dbateman@free.fr>
parents: 8215
diff changeset
330 rewritten and so the indexing of arrays is now significantly faster.
8128
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
331 @end itemize
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
332
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
333
4830
a3dd9369a1d4 [project @ 2004-03-10 06:10:19 by jwe]
jwe
parents: 4476
diff changeset
334 @node Octave Features
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
335 @chapter What features are unique to Octave?
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
336
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
337 @menu
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
338 * Functions defined on the command-line::
12479
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
339 * Comments with #::
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
340 * Strings delimitted by double quotes "::
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
341 * Line continuation by backslash::
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
342 * Informative block closing::
12479
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
343 * Coherent syntax::
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
344 * Exclamation mark as not operator::
12479
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
345 * Increment and decrement operators::
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
346 * Unwind-protect::
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
347 * Built-in ODE and DAE solvers::
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
348 @end menu
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
349
12478
b4138a75eecc Uniformise "Matlab" typesetting in FAQ.
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 11576
diff changeset
350 This section refers to @sc{Matlab} R2008b and Octave 2.1.51.
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
351
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
352 @node Functions defined on the command-line
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
353 @section Functions defined on the command-line
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
354
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
355 Functions can be defined by entering code on the command line, a
6584
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
356 feature not supported by the other leading brand. For example, you may
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
357 type:
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
358
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
359 @example
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
360 @group
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
361 octave:1> function s = hello_string (to_who)
12479
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
362 > ## Say hello
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
363 > if nargin<1, to_who = "World"; end
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
364 > s = ["Hello ",\
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
365 > to_who];
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
366 > endfunction
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
367 octave:2> hello_string ("Moon")
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
368 ans = Hello Moon
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
369 @end group
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
370 @end example
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
371
12479
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
372 @node Comments with #
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
373 @section Comments with #
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
374
6584
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
375 The pound character, @samp{#}, may be used to start comments, in addition
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
376 to @samp{%}. See the previous example. The major advantage of this is
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
377 that as @samp{#} is also a comment character for unix script files, any
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
378 file that starts with a string like @samp{#! /usr/bin/octave -q} will be
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
379 treated as an octave script and be executed by octave.
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
380
12479
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
381 @node Strings delimitted by double quotes "
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
382 @section Strings delimitted by double quotes "
6584
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
383 The double quote, @samp{"}, may be used to delimit strings, in addition to
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
384 the single quote @samp{'}. See the previous example. Also, double-quoted
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
385 strings include backslash interpretation (like C++, C, and Perl) while
12478
b4138a75eecc Uniformise "Matlab" typesetting in FAQ.
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 11576
diff changeset
386 single quoted are uninterpreted (like @sc{Matlab} and Perl).
12479
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
387
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
388 @node Line continuation by backslash
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
389 @section Line continuation by backslash
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
390
6584
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
391 Lines can be continued with a backslash, @samp{\}, in addition to three
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
392 points @samp{@dots{}}. See the previous example.
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
393
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
394 @node Informative block closing
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
395 @section Informative block closing
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
396
6584
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
397 You may close @code{function}, @code{for}, @code{while}, @code{if},
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
398 @dots{} blocks with @code{endfunction}, @code{endfor}, @code{endwhile},
12478
b4138a75eecc Uniformise "Matlab" typesetting in FAQ.
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 11576
diff changeset
399 @dots{} keywords in addition to using @code{end}. As with @sc{Matlab}, the
6584
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
400 @code{end} (or @code{endfunction}) keyword that marks the end of a
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
401 function defined in a @file{.m} file is optional.
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
402
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
403 @node Coherent syntax
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
404 @section Coherent syntax
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
405
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
406 Indexing other things than variables is possible, as in:
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
407 @example
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
408 @group
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
409 octave:1> [3 1 4 1 5 9](3)
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
410 ans = 4
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
411 octave:2> cos([0 pi pi/4 7])(3)
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
412 ans = 0.70711
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
413 @end group
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
414 @end example
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
415
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
416 @node Exclamation mark as not operator
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
417 @section Exclamation mark as not operator
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
418
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
419 The exclamation mark '!' (aka ``Bang!'') is a negation operator, just
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
420 like the tilde '~':
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
421
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
422 @example
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
423 @group
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
424 octave:1> if ! strcmp (program_name, "octave"),
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
425 > "It's an error"
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
426 > else
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
427 > "It works!"
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
428 > end
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
429 ans = It works!
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
430 @end group
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
431 @end example
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
432
4830
a3dd9369a1d4 [project @ 2004-03-10 06:10:19 by jwe]
jwe
parents: 4476
diff changeset
433 @node Increment and decrement operators
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
434 @section Increment and decrement operators
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
435
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
436 @cindex Increment operators
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
437 @cindex Decrement operators
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
438 @cindex Operators, increment
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
439 @cindex Operators, decrement
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
440
6584
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
441 If you like the @samp{++}, @samp{+=} etc operators, rejoice!
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
442 Octave includes the C-like increment and decrement operators @samp{++}
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
443 and @samp{--} in both their prefix and postfix forms, in addition to
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
444 @samp{+=}, @samp{-=}, @samp{*=}, @samp{/=}, @samp{^=}, @samp{.*=},
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
445 @samp{./=}, and @samp{.^=}.
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
446
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
447 For example, to pre-increment the variable @var{x}, you would write
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
448 @code{++@var{x}}. This would add one to @var{x} and then return the new
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
449 value of @var{x} as the result of the expression. It is exactly the
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
450 same as the expression @code{@var{x} = @var{x} + 1}.
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
451
6584
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
452 To post-increment a variable @var{x}, you would write @code{x++}.
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
453 This adds one to the variable @var{x}, but returns the value that
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
454 @var{x} had prior to incrementing it. For example, if @var{x} is equal
6584
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
455 to 2, the result of the expression @code{x++} is 2, and the new
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
456 value of @var{x} is 3.
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
457
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
458 For matrix and vector arguments, the increment and decrement operators
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
459 work on each element of the operand.
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
460
4830
a3dd9369a1d4 [project @ 2004-03-10 06:10:19 by jwe]
jwe
parents: 4476
diff changeset
461 @node Unwind-protect
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
462 @section Unwind-protect
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
463
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
464 @cindex Unwind-protect
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
465
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
466 Octave supports a limited form of exception handling modelled after the
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
467 unwind-protect form of Lisp. The general form of an
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
468 @code{unwind_protect} block looks like this:
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
469
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
470 @example
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
471 @group
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
472 unwind_protect
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
473 @var{body}
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
474 unwind_protect_cleanup
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
475 @var{cleanup}
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
476 end_unwind_protect
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
477 @end group
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
478 @end example
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
479
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
480 @noindent
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
481 Where @var{body} and @var{cleanup} are both optional and may contain any
12479
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
482 Octave expressions or commands. The statements in @var{cleanup} are
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
483 guaranteed to be executed regardless of how control exits @var{body}.
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
484
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
485 The @code{unwind_protect} statement is often used to reliably restore
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
486 the values of global variables that need to be temporarily changed.
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
487
12478
b4138a75eecc Uniformise "Matlab" typesetting in FAQ.
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 11576
diff changeset
488 @sc{Matlab} can be made to do something similar with their @code{OnCleanUp}
8128
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
489 function that was introduced in 2008a.
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
490
4830
a3dd9369a1d4 [project @ 2004-03-10 06:10:19 by jwe]
jwe
parents: 4476
diff changeset
491 @node Built-in ODE and DAE solvers
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
492 @section Built-in ODE and DAE solvers
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
493
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
494 @cindex DASSL
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
495 @cindex LSODE
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
496
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
497 Octave includes LSODE and DASSL for solving systems of stiff ordinary
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
498 differential and differential-algebraic equations. These functions are
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
499 built in to the interpreter.
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
500
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
501 @node Learning more about Octave
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
502 @chapter What documentation exists for Octave?
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
503
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
504 @menu
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
505 * Documentation::
12479
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
506 * Getting additional help::
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
507 * User community::
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
508 * Bug reports::
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
509 @end menu
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
510
4830
a3dd9369a1d4 [project @ 2004-03-10 06:10:19 by jwe]
jwe
parents: 4476
diff changeset
511 @node Documentation
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
512 @section What documentation exists for Octave?
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
513
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
514 @cindex Octave, documentation
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
515
6879
28f3be713c1d [project @ 2007-09-07 21:35:44 by dbateman]
dbateman
parents: 6735
diff changeset
516 The Octave distribution includes a 590+ page manual that is also
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
517 distributed under the terms of the GNU GPL.
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
518 It is available on the web at
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
519 @url{http://www.octave.org/docs.html} and you will also
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
520 find there instructions on how to order a paper version.
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
521
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
522 The complete text of the Octave manual is also available using the GNU
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
523 Info system via the GNU Emacs, info, or xinfo programs, or by using
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
524 the @samp{help -i} command to start the GNU info browser directly from
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
525 the Octave prompt.
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
526
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
527 If you have problems using this documentation, or find that some topic
12479
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
528 is not adequately explained, indexed, or cross-referenced, please report
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
529 it on @url{http://bugs.octave.org}.
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
530
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
531 @node Getting additional help
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
532 @section Getting additional help
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
533
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
534 @cindex Additional help
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
535 @cindex Mailing lists, help-octave
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
536
6584
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
537 If you can't find an answer to your question, the
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
538 @email{help@@octave.org} mailing list is available for questions related
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
539 to using, installing, and porting Octave that are not adequately
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
540 answered by the Octave manual or by this document.
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
541
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
542 @node User community
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
543 @section User community
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
544
6584
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
545 To subscribe to the list, go to @url{www.octave.org/archive.html} and
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
546 follow the link to the subscription page for the list.
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
547
6653
673686daec87 [project @ 2007-05-22 15:36:09 by jwe]
jwe
parents: 6612
diff changeset
548 @strong{Please do not} send requests to be added or removed from the
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
549 mailing list, or other administrative trivia to the list itself.
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
550
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
551 An archive of old postings to the help-octave mailing list is maintained
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
552 on @url{http://www.octave.org/archive.html}.
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
553
6584
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
554 You will also find some user advice and code spread over the web. Good
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
555 starting points are the Octave Wiki @url{http://wiki.octave.org} and
7483
fb66330b2608 don't special case SH_LD for FreeBSD and OpenBSD
John W. Eaton <jwe@octave.org>
parents: 7116
diff changeset
556 Octave-Forge @url{http://octave.sourceforge.net}
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
557
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
558 @node Bug reports
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
559 @section I think I have found a bug in Octave.
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
560
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
561 @cindex Bug in Octave, newly found
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
562
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
563 ``I think I have found a bug in Octave, but I'm not sure. How do I know,
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
564 and who should I tell?''
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
565
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
566 @cindex Manual, for Octave
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
567
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
568 First, see the section on bugs and bug reports in the Octave manual.
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
569 When you report a bug, make sure to describe the type of computer you
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
570 are using, the version of the operating system it is running, and the
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
571 version of Octave that you are using. Also provide enough code so that
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
572 the Octave maintainers can duplicate your bug.
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
573
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
574 If you have Octave working at all, the easiest way to do this is to use
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
575 the Octave function @code{bug_report}. When you execute this function,
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
576 Octave will prompt you for a subject and then invoke the editor on a
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
577 file that already contains all the configuration information. When you
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
578 exit the editor, Octave will mail the bug report for you (in a unix-like
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
579 operating system).
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
580
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
581 @cindex Octave bug report
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
582 @cindex Mailing lists, bug-octave
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
584 If for some reason you cannot use Octave's @code{bug_report} function,
6584
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
585 mail your bug report to @email{bug@@octave.org}. Your message needs to
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
586 include enough information to allow the maintainers of Octave to fix the
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
587 bug. Please read the section on bugs and bug reports in the Octave
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
588 manual for a list of things that should be included in every bug report.
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
589
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
590
4830
a3dd9369a1d4 [project @ 2004-03-10 06:10:19 by jwe]
jwe
parents: 4476
diff changeset
591 @node Getting Octave
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
592 @chapter Getting Octave
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
593
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
594 @menu
12479
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
595 * Source code::
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
596 * Pre-compiled binary packages::
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
597 * Octave for other platforms::
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
598 @end menu
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
599
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
600 @node Source code
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
601 @section Source code
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
602 @cindex Source code
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
603
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
604 Source code is available on the Octave development site, where you are
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
605 sure to get the latest version.
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
606
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
607 @itemize @bullet
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
608 @item @url{http://www.octave.org/download.html}
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
609 @item @url{ftp://ftp.octave.org/pub/octave/}
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
610 @end itemize
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
611
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
612 Since Octave is distrubted under the terms of the GPL, you can get
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
613 Octave from a friend who has a copy, by anonymous FTP, or by ordering
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
614 a tape or CD-ROM from the Free Software Foundation (FSF).
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
615
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
616 @node Pre-compiled binary packages
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
617 @section Pre-compiled binary packages
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
618 @cindex Pre-compiled binary packages
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
619 @cindex Binaries
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
620
6584
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
621 The Octave project does not distribute binary packages, but other
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
622 projects do. For an up-to-date listing of packagers, see:
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
623
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
624 @itemize @bullet
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
625 @item @url{http://www.octave.org/download.html}
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
626 @item @url{http://wiki.octave.org/wiki.pl?CategoryInstall}
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
627 @end itemize
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
628
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
629 As of today, Octave binaries are available at least on Debian, RedHat,
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
630 Suse and Fedora Linuxes, Mac OS X, Windows' 98, 2000 and XP.
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
631
4830
a3dd9369a1d4 [project @ 2004-03-10 06:10:19 by jwe]
jwe
parents: 4476
diff changeset
632 @node Octave for other platforms
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
633 @section How do I get a copy of Octave for (some other platform)?
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
634
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
635 @cindex VMS support
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
636 @cindex VAX
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
637 @cindex MS-DOS support
3154
352a80c32765 [project @ 1998-02-14 19:17:59 by jwe]
jwe
parents: 3030
diff changeset
638 @cindex Windows support
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
639 @cindex DJGPP
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
640 @cindex EMX
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
641 @cindex OS/2 support
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
642
6879
28f3be713c1d [project @ 2007-09-07 21:35:44 by dbateman]
dbateman
parents: 6735
diff changeset
643 Octave currently runs on Unix-like systems, Mac OS X, and Windows.
12479
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
644 It should be possible to make Octave work on other systems as well.
6879
28f3be713c1d [project @ 2007-09-07 21:35:44 by dbateman]
dbateman
parents: 6735
diff changeset
645 If you are interested in porting Octave to other systems, please contact
12479
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
646 @email{maintainers@@octave.org}.
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
647
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
648 @c @menu
12479
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
649 @c * Octave for Unix::
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
650 @c * Octave for other platforms::
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
651 @c * latest versions::
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
652 @c @end menu
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
653
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
654 @c @cindex Octave, ordering
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
655 @c @cindex Octave, getting a copy
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
656
4830
a3dd9369a1d4 [project @ 2004-03-10 06:10:19 by jwe]
jwe
parents: 4476
diff changeset
657 @node Installation
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
658 @chapter Installation Issues and Problems
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
659
12479
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
660 @cindex Octave, building
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
661
8128
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
662 Octave 3.2 require approximately 800MB of disk storage to unpack
6584
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
663 and compile from source (considerably less if you don't compile with
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
664 debugging symbols). Once installed, Octave requires approximately 200MB
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
665 of disk space (again, considerably less if you don't compile with
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
666 debugging symbols).
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
667
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
668 @menu
12479
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
669 * What else do I need?::
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
670 * Other C++ compilers?::
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
671 @end menu
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
672
4830
a3dd9369a1d4 [project @ 2004-03-10 06:10:19 by jwe]
jwe
parents: 4476
diff changeset
673 @node What else do I need?
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
674 @section What else do I need?
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
675
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
676 @cindex GNU gcc
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
677 @cindex GNU g++
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
678 @cindex libg++
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
679 @cindex GNU Make
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
680 @cindex Flex
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
681 @cindex GNU Bison
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
682
3154
352a80c32765 [project @ 1998-02-14 19:17:59 by jwe]
jwe
parents: 3030
diff changeset
683 To compile Octave, you will need a recent version of GNU Make. You
12479
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
684 will also need GCC 3.3 or later, although GCC 4.1 or later is
6584
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
685 recommended.
3154
352a80c32765 [project @ 1998-02-14 19:17:59 by jwe]
jwe
parents: 3030
diff changeset
686
6584
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
687 @strong{You must have GNU Make to compile octave}. Octave's Makefiles
3154
352a80c32765 [project @ 1998-02-14 19:17:59 by jwe]
jwe
parents: 3030
diff changeset
688 use features of GNU Make that are not present in other versions of make.
352a80c32765 [project @ 1998-02-14 19:17:59 by jwe]
jwe
parents: 3030
diff changeset
689 GNU Make is very portable and easy to install.
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
690
4830
a3dd9369a1d4 [project @ 2004-03-10 06:10:19 by jwe]
jwe
parents: 4476
diff changeset
691 @node Other C++ compilers?
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
692 @section Can I compile Octave with another C++ compiler?
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
693
6584
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
694 Yes, but development is done primarily with GCC, so you may hit some
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
695 incompatibilities. Octave is intended to be portable to any standard
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
696 conforming compiler. If you have difficulties that you think are bugs,
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
697 please report them to the @email{bug@@octave.org} mailing list, or ask
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
698 for help on the @email{help@@octave.org} mailing list.
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
699
4830
a3dd9369a1d4 [project @ 2004-03-10 06:10:19 by jwe]
jwe
parents: 4476
diff changeset
700 @node Common problems
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
701 @chapter Common problems
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
702
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
703 This list is probably far too short. Feel free to suggest additional
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
704 questions (preferably with answers!)
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
705
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
706 @itemize @bullet
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
707 @item
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
708 Octave takes a long time to find symbols.
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
709
6606
2c19eaa2c6f7 [project @ 2007-05-07 17:09:38 by jwe]
jwe
parents: 6584
diff changeset
710 Octave uses the @code{genpath} function to recursively add directories
6900
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
711 to the list of directories searched for function files. Check the list
6606
2c19eaa2c6f7 [project @ 2007-05-07 17:09:38 by jwe]
jwe
parents: 6584
diff changeset
712 of directories with the @code{path} command. If the path list is very
2c19eaa2c6f7 [project @ 2007-05-07 17:09:38 by jwe]
jwe
parents: 6584
diff changeset
713 long check your use of the @code{genpath} function.
6735
19e2d70e2a4c [project @ 2007-06-15 19:33:27 by dbateman]
dbateman
parents: 6653
diff changeset
714
19e2d70e2a4c [project @ 2007-06-15 19:33:27 by dbateman]
dbateman
parents: 6653
diff changeset
715 @item
6900
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
716 When plotting Octave occasionally gives me errors like @samp{gnuplot> 9 0.735604
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
717 line 26317: invalid command}.
6735
19e2d70e2a4c [project @ 2007-06-15 19:33:27 by dbateman]
dbateman
parents: 6653
diff changeset
718
19e2d70e2a4c [project @ 2007-06-15 19:33:27 by dbateman]
dbateman
parents: 6653
diff changeset
719 There is a known bug in gnuplot 4.2 that can cause an off by one error
19e2d70e2a4c [project @ 2007-06-15 19:33:27 by dbateman]
dbateman
parents: 6653
diff changeset
720 while piping data to gnuplot. The relevant gnuplot bug report can be
19e2d70e2a4c [project @ 2007-06-15 19:33:27 by dbateman]
dbateman
parents: 6653
diff changeset
721 found at @url{http://sourceforge.net/tracker/index.php?func=detail&aid=1716556&group_id=2055&atid=102055}
19e2d70e2a4c [project @ 2007-06-15 19:33:27 by dbateman]
dbateman
parents: 6653
diff changeset
722
19e2d70e2a4c [project @ 2007-06-15 19:33:27 by dbateman]
dbateman
parents: 6653
diff changeset
723 If you have obtained your copy of Octave from a distribution please file
19e2d70e2a4c [project @ 2007-06-15 19:33:27 by dbateman]
dbateman
parents: 6653
diff changeset
724 a bug report requesting that the fix reported in the above bug report be
19e2d70e2a4c [project @ 2007-06-15 19:33:27 by dbateman]
dbateman
parents: 6653
diff changeset
725 included.
8215
518789a0539d FAQ entry about split development packages in distributions
Thomas Weber <thomas.weber.mail@gmail.com>
parents: 8130
diff changeset
726
518789a0539d FAQ entry about split development packages in distributions
Thomas Weber <thomas.weber.mail@gmail.com>
parents: 8130
diff changeset
727 @item
518789a0539d FAQ entry about split development packages in distributions
Thomas Weber <thomas.weber.mail@gmail.com>
parents: 8130
diff changeset
728 I cannot install a package. Octave complains about a missing @code{mkoctfile}.
518789a0539d FAQ entry about split development packages in distributions
Thomas Weber <thomas.weber.mail@gmail.com>
parents: 8130
diff changeset
729
518789a0539d FAQ entry about split development packages in distributions
Thomas Weber <thomas.weber.mail@gmail.com>
parents: 8130
diff changeset
730 Most distributions split Octave into several packages. The script
518789a0539d FAQ entry about split development packages in distributions
Thomas Weber <thomas.weber.mail@gmail.com>
parents: 8130
diff changeset
731 @code{mkoctfile} is then part of a separate package:
518789a0539d FAQ entry about split development packages in distributions
Thomas Weber <thomas.weber.mail@gmail.com>
parents: 8130
diff changeset
732 @itemize @minus
518789a0539d FAQ entry about split development packages in distributions
Thomas Weber <thomas.weber.mail@gmail.com>
parents: 8130
diff changeset
733 @item
518789a0539d FAQ entry about split development packages in distributions
Thomas Weber <thomas.weber.mail@gmail.com>
parents: 8130
diff changeset
734 Debian/Ubuntu
518789a0539d FAQ entry about split development packages in distributions
Thomas Weber <thomas.weber.mail@gmail.com>
parents: 8130
diff changeset
735
518789a0539d FAQ entry about split development packages in distributions
Thomas Weber <thomas.weber.mail@gmail.com>
parents: 8130
diff changeset
736 @code{aptitude install octave3.0-headers}
518789a0539d FAQ entry about split development packages in distributions
Thomas Weber <thomas.weber.mail@gmail.com>
parents: 8130
diff changeset
737
518789a0539d FAQ entry about split development packages in distributions
Thomas Weber <thomas.weber.mail@gmail.com>
parents: 8130
diff changeset
738 @item
518789a0539d FAQ entry about split development packages in distributions
Thomas Weber <thomas.weber.mail@gmail.com>
parents: 8130
diff changeset
739 Fedora
518789a0539d FAQ entry about split development packages in distributions
Thomas Weber <thomas.weber.mail@gmail.com>
parents: 8130
diff changeset
740
518789a0539d FAQ entry about split development packages in distributions
Thomas Weber <thomas.weber.mail@gmail.com>
parents: 8130
diff changeset
741 @code{yum install octave-devel}
518789a0539d FAQ entry about split development packages in distributions
Thomas Weber <thomas.weber.mail@gmail.com>
parents: 8130
diff changeset
742
518789a0539d FAQ entry about split development packages in distributions
Thomas Weber <thomas.weber.mail@gmail.com>
parents: 8130
diff changeset
743 @end itemize
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
744 @end itemize
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
745
6584
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
746 @node How do I ...?
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
747 @chapter How do I ...?
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
748
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
749 @menu
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
750 * How do I set the number of displayed decimals?::
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
751 @end menu
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
752
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
753 @cindex Tips and tricks
6584
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
754 @cindex How do I @dots{} ?
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
755
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
756 @node How do I set the number of displayed decimals?
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
757 @section How do I set the number of displayed decimals?
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
758
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
759 @example
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
760 @group
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
761 octave:1> format long
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
762 octave:2> pi
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
763 pi = 3.14159265358979
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
764 octave:3> format short
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
765 octave:4> pi
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
766 pi = 3.1416
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
767 @end group
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
768 @end example
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
769
12478
b4138a75eecc Uniformise "Matlab" typesetting in FAQ.
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 11576
diff changeset
770 @node @sc{Matlab} compatibility
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
771 @chapter Porting programs from @sc{Matlab} to Octave
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
772
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
773 @cindex @sc{Matlab} compatibility
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
774 @cindex Compatibility with @sc{Matlab}
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
775
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
776 People often ask
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
777
12479
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
778 @quotation
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
779 I wrote some code for @sc{Matlab}, and I want to get it running under
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
780 Octave. Is there anything I should watch out for?
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
781 @end quotation
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
782
12479
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
783 @noindent
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
784 or alternatively
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
785
12479
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
786 @quotation
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
787 I wrote some code in Octave, and want to share it with @sc{Matlab}
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
788 users. Is there anything I should watch out for?
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
789 @end quotation
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
790
12479
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
791 @noindent
6900
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
792 which is not quite the same thing. There are still a number of
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
793 differences between Octave and @sc{Matlab}, however in general
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
794 differences between the two are considered as bugs. Octave might
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
795 consider that the bug is in @sc{Matlab} and do nothing about it, but
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
796 generally functionality is almost identical. If you find a difference
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
797 between Octave behavior and @sc{Matlab}, then you should send a
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
798 description of this difference (with code illustrating the difference,
12479
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
799 if possible) to @url{http://bugs.octave.org}.
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
800
12478
b4138a75eecc Uniformise "Matlab" typesetting in FAQ.
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 11576
diff changeset
801 Furthermore, Octave adds a few syntactical extensions to @sc{Matlab} that
b4138a75eecc Uniformise "Matlab" typesetting in FAQ.
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 11576
diff changeset
802 might cause some issues when exchanging files between @sc{Matlab} and Octave
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
803 users. As both Octave and @sc{Matlab} are under constant development the
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
804 information in this section is subject to change at anytime.
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
805
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
806 You should also look at the page
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
807 @url{http://octave.sourceforge.net/packages.html} and
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
808 @url{http://octave.sourceforge.net/doc/} that has a function reference
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
809 that is up to date. You can use this function reference to see the
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
810 number of octave function that are available and their @sc{Matlab}
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
811 compatibility.
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
812
8128
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
813 The major differences between Octave 3.2.N and @sc{Matlab} R2008a are:
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
814
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
815 @itemize @bullet
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
816 @item Nested Functions
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
817
6900
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
818 Octave doesn't yet have nested functions. That is
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
819
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
820 @example
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
821 @group
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
822 function y = foo (x)
6900
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
823 y = bar(x)
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
824 function y = bar (x)
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
825 y = @dots{};
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
826 end
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
827 end
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
828 @end group
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
829 @end example
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
830
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
831 There was discussion in Octave of having these even prior to @sc{Matlab},
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
832 and the decision was made not to have these in Octave at the time for
6900
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
833 compatibility. The above written with sub-functions functions would be
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
834
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
835 @example
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
836 @group
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
837 function y = foo (x)
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
838 y = bar(x)
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
839 end
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
840 function y = bar (x)
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
841 y = @dots{};
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
842 end
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
843 @end group
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
844 @end example
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
845
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
846 Now that @sc{Matlab} has recently introduced nested functions, Octave will
6900
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
847 probably have them soon as well. Until then nested functions in Octave
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
848 are treated as sub-functions with the same scoping rules as
12479
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
849 sub-functions.
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
850
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
851 The authors of Octave consider the nested function scoping rules of
12478
b4138a75eecc Uniformise "Matlab" typesetting in FAQ.
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 11576
diff changeset
852 @sc{Matlab} to be more problems than they are worth as they introduce
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
853 diffiult to find bugs as inadvertantly modifying a variable in a
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
854 nested function that is also used in the parent is particularly easy.
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
855
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
856 @item Differences in core syntax
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
857 There a few core @sc{Matlab} syntaxes that are not accepted by Octave,
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
858 these being
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
859
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
860 @itemize @bullet
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
861 @item
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
862 Some limitations on the use of function handles. The major difference is
6879
28f3be713c1d [project @ 2007-09-07 21:35:44 by dbateman]
dbateman
parents: 6735
diff changeset
863 related to nested function scoping rules (as above) and their use with
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
864 function handles.
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
865
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
866 @item
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
867 Some limitations of variable argument lists on the LHS of an expression,
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
868 though the most common types are accepted.
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
869
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
870 @item
8128
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
871 @sc{Matlab} classdef object oriented programming is not yet supportted,
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
872 though work is underway and when development more on to Octave 3.3 this
12479
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
873 will be included in the development tree.
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
874 @end itemize
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
875
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
876 @item Differences in core functions
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
877 A large number of the @sc{Matlab} core functions (ie those that are in
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
878 the core and not a toolbox) are implemented, and certainly all of the
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
879 commonly used ones. There are a few functions that aren't implemented,
12479
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
880 @c this is no longer true, condest is now implemented in Octave
6879
28f3be713c1d [project @ 2007-09-07 21:35:44 by dbateman]
dbateman
parents: 6735
diff changeset
881 for example @code{condest} or to do with specific missing Octave functionality
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
882 (gui, dll, java, activex, dde, web, and serial functions). Some of the
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
883 core functions have limitations that aren't in the @sc{Matlab}
6900
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
884 version. For example the @code{sprandn} function can not force a
6735
19e2d70e2a4c [project @ 2007-06-15 19:33:27 by dbateman]
dbateman
parents: 6653
diff changeset
885 particular condition number for the matrix like @sc{Matlab} can.
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
886
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
887 @item Just-In-Time compiler
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
888 @sc{Matlab} includes a "Just-In-Time" compiler. This compiler allows the
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
889 acceleration of for-loops in @sc{Matlab} to almost native performance with
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
890 certain restrictions. The JIT must know the return type of all functions
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
891 called in the loops and so you can't include user functions in the loop
6900
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
892 of JIT optimized loops. Octave doesn't have a JIT and so to some might
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
893 seem slower than @sc{Matlab}. For this reason you must vectorize your code as
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
894 much as possible. The MathWorks themselves have a good document
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
895 discussing vectorization at
12479
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
896 @c it would be nice if we had our own guide for this instead of relying
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
897 @c on Matlab documentation.
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
898 @url{http://www.mathworks.com/support/tech-notes/1100/1109.html}.
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
899
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
900 @item Compiler
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
901 On a related point, there is no Octave compiler, and so you can't
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
902 convert your Octave code into a binary for additional speed or
6900
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
903 distribution. There is an example of how to do this at
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
904 @url{http://www.stud.tu-ilmenau.de/~rueckn/}, but this is a very early
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
905 example code and would need lots of work to complete it.
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
906
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
907 @item Graphic Handles
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
908 Up to Octave 2.9.9 there was no support for graphic handles in Octave
8128
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
909 itself. In the 3.2.N versions of Octave the support for graphics
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
910 handles is converging towards full compatibility. The @code{patch}
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
911 function is currently limited to 2-D patches, due to an underlying
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
912 limitation in gnuplot.
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
913
12479
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
914 @item GUI
6900
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
915 There are no @sc{Matlab} compatible GUI functions. There are a number of
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
916 bindings from Octave to Tcl/Tk, Vtk and zenity included in the
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
917 Octave Forge project (@url{http://octave.sourceforge.net}) for example
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
918 that can be used for a GUI, but these are not @sc{Matlab}
12478
b4138a75eecc Uniformise "Matlab" typesetting in FAQ.
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 11576
diff changeset
919 compatible. Work on a @sc{Matlab} compatible GUI is in an alpha stage in the
6879
28f3be713c1d [project @ 2007-09-07 21:35:44 by dbateman]
dbateman
parents: 6735
diff changeset
920 JHandles package (@url{http://octave.sourceforge.net/jhandles/index.html}).
12479
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
921 This might be an issue if you intend to exchange Octave code with
6879
28f3be713c1d [project @ 2007-09-07 21:35:44 by dbateman]
dbateman
parents: 6735
diff changeset
922 @sc{Matlab} users.
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
923
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
924 @item Simulink
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
925 Octave itself includes no Simulink support. Typically the simulink
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
926 models lag research and are less flexible, so shouldn't really be used
6900
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
927 in a research environment. However, some @sc{Matlab} users that try to
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
928 use Octave complain about this lack. There is a similar package to
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
929 simulink for the Octave and R projects available at
12479
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
930 @c is this project in any state of usability?
6900
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
931 @url{http://www.scicraft.org/}
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
932
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
933 @item Mex-Files
12478
b4138a75eecc Uniformise "Matlab" typesetting in FAQ.
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 11576
diff changeset
934 Octave includes an API to the @sc{Matlab} MEX interface. However, as MEX is
6900
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
935 an API to the internals of @sc{Matlab} and the internals of Octave
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
936 differ from @sc{Matlab}, there is necessarily a manipulation of the data
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
937 to convert from a MEX interface to the Octave equivalent. This is
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
938 notable for all complex matrices, where @sc{Matlab} stores complex
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
939 arrays as real and imaginary parts, whereas Octave respects the C99/C++
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
940 standards of co-locating the real/imag parts in memory. Also due to the
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
941 way @sc{Matlab} allows access to the arrays passed through a pointer,
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
942 the MEX interface might require copies of arrays (even non complex
8128
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
943 ones).
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
944
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
945 @item Block comments
8128
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
946 Block comments denoted by "%@{" and "%@}" markers are supported by
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
947 Octave with some limitations. The major limitation is that block
8292
242756f065f0 Minor NEWS/FAQ update
David Bateman <dbateman@free.fr>
parents: 8215
diff changeset
948 comments are not supported within [] or @{@}.
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
949
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
950 @item Mat-File format
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
951 There are some differences in the mat v5 file format accepted by
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
952 Octave. @sc{Matlab} recently introduced the "-V7.3" save option which is
6900
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
953 an HDF5 format which is particularly useful for 64-bit platforms where
12478
b4138a75eecc Uniformise "Matlab" typesetting in FAQ.
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 11576
diff changeset
954 the standard @sc{Matlab} format can not correctly save variables.. Octave
6900
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
955 accepts HDF5 files, but is not yet compatible with the "-v7.3" versions
12479
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
956 produced by @sc{Matlab}.
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
957
8128
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
958 Although Octave can load inline abd function handles saved by
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
959 @sc{Matlab}, it can not yet save them.
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
960
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
961 Finally, Some multi-byte unicode characters aren't yet treated in
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
962 mat-files.
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
963
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
964 @item Profiler
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
965 Octave doesn't have a profiler. Though there is a patch for a flat
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
966 profiler, that might become a real profiler sometime in the future. see
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
967 the thread
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
968
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
969 @url{http://www.cae.wisc.edu/pipermail/octave-maintainers/2007-January/001685.html}
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
970
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
971 for more details
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
972
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
973 @item Toolboxes
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
974 Octave is a community project and so the toolboxes that exist are
6900
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
975 donated by those interested in them through the Octave Forge website
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
976 (@url{http://octave.sourceforge.net}). These might be lacking in certain
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
977 functionality relative to the @sc{Matlab} toolboxes, and might not
12478
b4138a75eecc Uniformise "Matlab" typesetting in FAQ.
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 11576
diff changeset
978 exactly duplicate the @sc{Matlab} functionality or interface.
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
979
12479
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
980 @c TODO: Update this to mention how it's now enabled in Octave
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
981 @item Short-circuit & and | operators
6900
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
982 The @code{&} and @code{|} operators in @sc{Matlab} short-circuit when
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
983 included in an if statemant and not otherwise. In Octave only the
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
984 @code{&&} and @code{||} short circuit. Note that this means that
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
985
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
986 @example
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
987 @group
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
988 if (a | b)
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
989 @dots{}
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
990 end
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
991 @end group
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
992 @end example
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
993
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
994 and
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
995
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
996 @example
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
997 @group
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
998 t = a | b;
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
999 if t
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1000 @dots{}
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1001 end
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1002 @end group
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1003 @end example
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1004
6900
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
1005 @noindent
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1006 are different in @sc{Matlab}. This is really a @sc{Matlab} bug, but
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1007 there is too much code out there that relies on this behavior to change
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1008 it. Prefer the || and && operators in if statements if possible.
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
1009
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1010 Note that the difference is also significant when either argument is a
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1011 function with side effects or if the first argument is a scalar and the
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1012 second argument is an empty matrix. For example, note the difference
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1013 between
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1014
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1015 @example
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1016 @group
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1017 t = 1 | []; ## results in [], so...
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1018 if (t) 1, end ## in if ([]), this is false.
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1019 @end group
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1020 @end example
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1021
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1022 and
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1023
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1024 @example
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1025 if (1 | []) 1, end ## short circuits so condition is true.
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1026 @end example
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1027
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1028 Another case that is documented in the @sc{Matlab} manuals is that
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1029
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1030 @example
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1031 @group
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1032 t = [1, 1] | [1, 2, 3]; ## error
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1033 if ([1, 1] | [1, 2, 3]) 1, end ## OK
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1034 @end group
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1035 @end example
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1036
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1037 Also @sc{Matlab} requires the operands of && and || to be scalar values but
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1038 Octave does not (it just applies the rule that for an operand to be
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1039 considered true, every element of the object must be nonzero or
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1040 logically true).
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1041
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1042 Finally, note the inconsistence of thinking of the condition of an if
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1043 statement as being equivalent to @code{all(X(:))} when @var{X} is a
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1044 matrix. This is true for all cases EXCEPT empty matrices:
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1045
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1046 @example
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1047 @group
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1048 if ([0, 1]) == if (all ([0, 1])) ==> i.e., condition is false.
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1049 if ([1, 1]) == if (all ([1, 1])) ==> i.e., condition is true.
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1050 @end group
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1051 @end example
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1052
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1053 However,
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1054
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1055 @example
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1056 if ([]) != if (all ([]))
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1057 @end example
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1058
6900
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
1059 because @code{samp ([]) == 1} (because, despite the name, it is really
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1060 returning true if none of the elements of the matrix are zero, and since
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1061 there are no elements, well, none of them are zero). But, somewhere
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1062 along the line, someone decided that if @code{([])} should be false.
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1063 Mathworks probably thought it just looks wrong to have @code{[]} be true
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1064 in this context even if you can use logical gymnastics to convince
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1065 yourself that "all" the elements of a matrix that doesn't actually have
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1066 any elements are nonzero. Octave however duplicates this behavior for if
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1067 statements containing empty matrices.
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1068
8292
242756f065f0 Minor NEWS/FAQ update
David Bateman <dbateman@free.fr>
parents: 8215
diff changeset
1069 @item Solvers for singular, under- and over-determined matrices
242756f065f0 Minor NEWS/FAQ update
David Bateman <dbateman@free.fr>
parents: 8215
diff changeset
1070
12478
b4138a75eecc Uniformise "Matlab" typesetting in FAQ.
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 11576
diff changeset
1071 @sc{Matlab}'s solvers as used by the operators mldivide (\) and mrdivide (/),
8292
242756f065f0 Minor NEWS/FAQ update
David Bateman <dbateman@free.fr>
parents: 8215
diff changeset
1072 use a different approach than Octave's in the case of singular, under-,
12478
b4138a75eecc Uniformise "Matlab" typesetting in FAQ.
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 11576
diff changeset
1073 or over-determined matrices. In the case of a singular matrix, @sc{Matlab}
8292
242756f065f0 Minor NEWS/FAQ update
David Bateman <dbateman@free.fr>
parents: 8215
diff changeset
1074 returns the result given by the LU decomposition, even though the underlying
242756f065f0 Minor NEWS/FAQ update
David Bateman <dbateman@free.fr>
parents: 8215
diff changeset
1075 solver has flagged the result as erroneous. Octave has made the choice
242756f065f0 Minor NEWS/FAQ update
David Bateman <dbateman@free.fr>
parents: 8215
diff changeset
1076 of falling back to a minimum norm solution of matrices that have been
242756f065f0 Minor NEWS/FAQ update
David Bateman <dbateman@free.fr>
parents: 8215
diff changeset
1077 flagged as singular which arguably is a better result for these cases.
242756f065f0 Minor NEWS/FAQ update
David Bateman <dbateman@free.fr>
parents: 8215
diff changeset
1078
242756f065f0 Minor NEWS/FAQ update
David Bateman <dbateman@free.fr>
parents: 8215
diff changeset
1079 In the case of under- or over-determined matrices, Octave continues to
12478
b4138a75eecc Uniformise "Matlab" typesetting in FAQ.
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 11576
diff changeset
1080 use a minimum norm solution, whereas @sc{Matlab} uses an approach that is
8292
242756f065f0 Minor NEWS/FAQ update
David Bateman <dbateman@free.fr>
parents: 8215
diff changeset
1081 equivalent to
242756f065f0 Minor NEWS/FAQ update
David Bateman <dbateman@free.fr>
parents: 8215
diff changeset
1082
242756f065f0 Minor NEWS/FAQ update
David Bateman <dbateman@free.fr>
parents: 8215
diff changeset
1083 @example
242756f065f0 Minor NEWS/FAQ update
David Bateman <dbateman@free.fr>
parents: 8215
diff changeset
1084 @group
242756f065f0 Minor NEWS/FAQ update
David Bateman <dbateman@free.fr>
parents: 8215
diff changeset
1085 function x = mldivide (A, b)
242756f065f0 Minor NEWS/FAQ update
David Bateman <dbateman@free.fr>
parents: 8215
diff changeset
1086 [Q, R, E] = qr(A);
242756f065f0 Minor NEWS/FAQ update
David Bateman <dbateman@free.fr>
parents: 8215
diff changeset
1087 x = [A \ b, E(:, 1:m) * (R(:, 1:m) \ (Q' * b))]
242756f065f0 Minor NEWS/FAQ update
David Bateman <dbateman@free.fr>
parents: 8215
diff changeset
1088 end
242756f065f0 Minor NEWS/FAQ update
David Bateman <dbateman@free.fr>
parents: 8215
diff changeset
1089 @end group
242756f065f0 Minor NEWS/FAQ update
David Bateman <dbateman@free.fr>
parents: 8215
diff changeset
1090 @end example
242756f065f0 Minor NEWS/FAQ update
David Bateman <dbateman@free.fr>
parents: 8215
diff changeset
1091
242756f065f0 Minor NEWS/FAQ update
David Bateman <dbateman@free.fr>
parents: 8215
diff changeset
1092 @noindent
242756f065f0 Minor NEWS/FAQ update
David Bateman <dbateman@free.fr>
parents: 8215
diff changeset
1093 While this approach is certainly faster and uses less memory than
242756f065f0 Minor NEWS/FAQ update
David Bateman <dbateman@free.fr>
parents: 8215
diff changeset
1094 Octave's minimum norm approach, this approach seems to be inferior in
242756f065f0 Minor NEWS/FAQ update
David Bateman <dbateman@free.fr>
parents: 8215
diff changeset
1095 other ways.
242756f065f0 Minor NEWS/FAQ update
David Bateman <dbateman@free.fr>
parents: 8215
diff changeset
1096
242756f065f0 Minor NEWS/FAQ update
David Bateman <dbateman@free.fr>
parents: 8215
diff changeset
1097 A numerical question arises: how big can the null space component become,
242756f065f0 Minor NEWS/FAQ update
David Bateman <dbateman@free.fr>
parents: 8215
diff changeset
1098 relative to the minimum-norm solution? Can it be nicely bounded, or can it be
242756f065f0 Minor NEWS/FAQ update
David Bateman <dbateman@free.fr>
parents: 8215
diff changeset
1099 arbitrarily big? Consider this example:
242756f065f0 Minor NEWS/FAQ update
David Bateman <dbateman@free.fr>
parents: 8215
diff changeset
1100
242756f065f0 Minor NEWS/FAQ update
David Bateman <dbateman@free.fr>
parents: 8215
diff changeset
1101 @example
242756f065f0 Minor NEWS/FAQ update
David Bateman <dbateman@free.fr>
parents: 8215
diff changeset
1102 @group
12479
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
1103 m = 10;
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
1104 n = 10000;
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
1105 A = ones(m, n) + 1e-6 * randn(m,n);
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
1106 b = ones(m, 1) + 1e-6 * randn(m,1);
8292
242756f065f0 Minor NEWS/FAQ update
David Bateman <dbateman@free.fr>
parents: 8215
diff changeset
1107 norm(A \ b)
242756f065f0 Minor NEWS/FAQ update
David Bateman <dbateman@free.fr>
parents: 8215
diff changeset
1108 @end group
242756f065f0 Minor NEWS/FAQ update
David Bateman <dbateman@free.fr>
parents: 8215
diff changeset
1109 @end example
242756f065f0 Minor NEWS/FAQ update
David Bateman <dbateman@free.fr>
parents: 8215
diff changeset
1110
242756f065f0 Minor NEWS/FAQ update
David Bateman <dbateman@free.fr>
parents: 8215
diff changeset
1111 @noindent
12478
b4138a75eecc Uniformise "Matlab" typesetting in FAQ.
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 11576
diff changeset
1112 while Octave's minimum-norm values are around 3e-2, @sc{Matlab}'s results
8292
242756f065f0 Minor NEWS/FAQ update
David Bateman <dbateman@free.fr>
parents: 8215
diff changeset
1113 are 50-times larger. For another issue, try this code:
242756f065f0 Minor NEWS/FAQ update
David Bateman <dbateman@free.fr>
parents: 8215
diff changeset
1114
242756f065f0 Minor NEWS/FAQ update
David Bateman <dbateman@free.fr>
parents: 8215
diff changeset
1115 @example
242756f065f0 Minor NEWS/FAQ update
David Bateman <dbateman@free.fr>
parents: 8215
diff changeset
1116 @group
12479
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
1117 m = 5;
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
1118 n = 100;
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
1119 j = floor(m * rand(1, n)) + 1;
8292
242756f065f0 Minor NEWS/FAQ update
David Bateman <dbateman@free.fr>
parents: 8215
diff changeset
1120 b = ones(m, 1);
242756f065f0 Minor NEWS/FAQ update
David Bateman <dbateman@free.fr>
parents: 8215
diff changeset
1121 A = zeros(m, n);
242756f065f0 Minor NEWS/FAQ update
David Bateman <dbateman@free.fr>
parents: 8215
diff changeset
1122 A(sub2ind(size(A),j,1:n)) = 1;
12479
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
1123 x = A \ b;
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
1124 [dummy,p] = sort(rand(1,n));
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
1125 y = A(:,p)\b;
8292
242756f065f0 Minor NEWS/FAQ update
David Bateman <dbateman@free.fr>
parents: 8215
diff changeset
1126 norm(x(p)-y)
242756f065f0 Minor NEWS/FAQ update
David Bateman <dbateman@free.fr>
parents: 8215
diff changeset
1127 @end group
242756f065f0 Minor NEWS/FAQ update
David Bateman <dbateman@free.fr>
parents: 8215
diff changeset
1128 @end example
242756f065f0 Minor NEWS/FAQ update
David Bateman <dbateman@free.fr>
parents: 8215
diff changeset
1129
242756f065f0 Minor NEWS/FAQ update
David Bateman <dbateman@free.fr>
parents: 8215
diff changeset
1130 @noindent
12478
b4138a75eecc Uniformise "Matlab" typesetting in FAQ.
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 11576
diff changeset
1131 It shows that unlike in Octave, mldivide in @sc{Matlab} is not invariant
8292
242756f065f0 Minor NEWS/FAQ update
David Bateman <dbateman@free.fr>
parents: 8215
diff changeset
1132 with respect to column permutations. If there are multiple columns of
242756f065f0 Minor NEWS/FAQ update
David Bateman <dbateman@free.fr>
parents: 8215
diff changeset
1133 the same norm, permuting columns of the matrix gets you different
242756f065f0 Minor NEWS/FAQ update
David Bateman <dbateman@free.fr>
parents: 8215
diff changeset
1134 result than permuting the solution vector. This will surprise many
242756f065f0 Minor NEWS/FAQ update
David Bateman <dbateman@free.fr>
parents: 8215
diff changeset
1135 users.
242756f065f0 Minor NEWS/FAQ update
David Bateman <dbateman@free.fr>
parents: 8215
diff changeset
1136
12479
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
1137 Since the mldivide (\) and mrdivide (/) operators are often part of a more
c741c1f2789e Minor proofreading in FAQ
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 12478
diff changeset
1138 complex expression, where there is no room to react to warnings or flags, it
8292
242756f065f0 Minor NEWS/FAQ update
David Bateman <dbateman@free.fr>
parents: 8215
diff changeset
1139 should prefer intelligence (robustness) to speed, and so the Octave developers
242756f065f0 Minor NEWS/FAQ update
David Bateman <dbateman@free.fr>
parents: 8215
diff changeset
1140 are firmly of the opinion that Octave's approach for singular, under- and
12478
b4138a75eecc Uniformise "Matlab" typesetting in FAQ.
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 11576
diff changeset
1141 over-determined matrices is a better choice that @sc{Matlab}'s
8292
242756f065f0 Minor NEWS/FAQ update
David Bateman <dbateman@free.fr>
parents: 8215
diff changeset
1142
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1143 @item Octave extensions
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1144 The extensions in Octave over @sc{Matlab} syntax are
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1145 very useful, but might cause issues when sharing with @sc{Matlab} users.
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1146 A list of the major extensions that should be avoided to be compatible
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1147 with @sc{Matlab} are
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1148
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1149 @itemize @bullet
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1150 @item
6900
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
1151 Comments in octave can be marked with @samp{#}. This allows POSIX
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
1152 systems to have the first line as @samp{#! octave -q} and mark the script
6653
673686daec87 [project @ 2007-05-22 15:36:09 by jwe]
jwe
parents: 6612
diff changeset
1153 itself executable. @sc{Matlab} doesn't have this feature due to the
6900
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
1154 absence of comments starting with @samp{#}".
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
1155
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1156 @item
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1157 Code blocks like if, for, while, etc can be terminated with block
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1158 specific terminations like "endif". @sc{Matlab} doesn't have this and
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1159 all blocks must be terminated with "end"
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1160
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1161 @item
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1162 Octave has a lisp like unwind_protect block that allows blocks of
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1163 code that terminate in an error to ensure that the variables that
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1164 are touched are restored. You can do something similar with
6900
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
1165 @code{try}/@code{catch} combined with @samp{rethrow (lasterror ())} in
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
1166 @sc{Matlab}, however rethrow and lasterror are only available in Octave 2.9.10 and later.
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1167
6900
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
1168 Note that using @code{try}/@code{catch} combined with @samp{rethrow
8325
b93ac0586e4b spelling corrections
Brian Gough<bjg@network-theory.co.uk>
parents: 8292
diff changeset
1169 (lasterror ())} can not guarantee that global variables will be
6900
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
1170 correctly reset, as it won't catch user interrupts with Ctrl-C. For
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
1171 example
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1172
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1173 @example
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1174 @group
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1175 global a
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1176 a = 1;
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1177 try
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1178 _a = a;
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1179 a = 2
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1180 while true
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1181 end
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1182 catch
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1183 fprintf ('caught interrupt\n');
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1184 a = _a;
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1185 rethrow (lasterror());
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1186 end
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1187 @end group
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1188 @end example
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1189
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1190 @noindent
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1191 compared to
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1192
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1193 @example
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1194 @group
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1195 global a
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1196 a = 1;
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1197 unwind_protect
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1198 _a = a;
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1199 a = 2
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1200 while true
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1201 end
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1202 unwind_protect_cleanup
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1203 fprintf ('caught interrupt\n');
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1204 a = _a;
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1205 end
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1206 @end group
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1207 @end example
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1208
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1209 Typing Ctrl-C in the first case returns the user directly to the
6879
28f3be713c1d [project @ 2007-09-07 21:35:44 by dbateman]
dbateman
parents: 6735
diff changeset
1210 prompt, and the variable "a" is not reset to the saved value. In the
6900
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
1211 second case the variable "a" is reset correctly. Therefore @sc{Matlab}
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1212 gives no save way of temporarily changing global variables.
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1213
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1214 @item
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1215 Indexing can be applied to all objects in Octave and not just
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1216 variable. Therefore @code{sin(x)(1:10);} for example is perfectly valid
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1217 in Octave but not @sc{Matlab}. To do the same in @sc{Matlab} you must do
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1218 @code{y = sin(x); y = y([1:10]);}
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1219
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1220 @item
6900
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
1221 Octave has the operators "++", "--", "-=", "+=", "*=", etc. As
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1222 @sc{Matlab} doesn't, if you are sharing code these should be avoided.
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1223
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1224 @item
6900
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
1225 Character strings in Octave can be denoted with double or single
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
1226 quotes. There is a subtle difference between the two in that escaped
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
1227 characters like @code{\n} (newline), @code{\t} (tab), etc are
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
1228 interpreted in double quoted strings but not single quoted strings. This
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
1229 difference is important on Windows platforms where the "\" character is
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
1230 used in path names, and so single quoted strings should be used in
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
1231 paths. @sc{Matlab} doesn't have double quoted strings and so they should
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
1232 be avoided if the code will be transfered to a @sc{Matlab} user.
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1233 @end itemize
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1234
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1235 @end itemize
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
1236
4830
a3dd9369a1d4 [project @ 2004-03-10 06:10:19 by jwe]
jwe
parents: 4476
diff changeset
1237 @node Index
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
1238 @appendix Concept Index
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
1239
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
1240 @printindex cp
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
1241
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
1242 @page
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
1243 @contents
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
1244 @bye