annotate doc/faq/Octave-FAQ.texi @ 8215:518789a0539d

FAQ entry about split development packages in distributions
author Thomas Weber <thomas.weber.mail@gmail.com>
date Tue, 14 Oct 2008 14:34:56 -0400
parents de8b07e95d1b
children 242756f065f0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7018
fd42779a8428 [project @ 2007-10-13 00:52:12 by jwe]
jwe
parents: 6900
diff changeset
1 % Copyright (C) 1997, 1998, 1999, 2001, 2003, 2004, 2005, 2007 John W. Eaton
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
3030
353071b4970b [project @ 1997-06-05 07:31:36 by jwe]
jwe
parents: 2866
diff changeset
21 @setfilename Octave-FAQ.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
6584
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
26 * Octave-FAQ: (Octave-FAQ). 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
8128
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
31 @subtitle September 2008
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
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
57 * What is Octave?::
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
58 * How can I cite Octave?::
8128
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
59 * Series 3.0.N::
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
60 * Octave Features::
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
61 * Learning more about Octave::
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
62 * Getting Octave::
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
63 * Installation::
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
64 * Common problems::
6584
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
65 * How do I ...?::
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
66 * MATLAB compatibility::
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
67 * Index::
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
68 @end menu
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
69
4830
a3dd9369a1d4 [project @ 2004-03-10 06:10:19 by jwe]
jwe
parents: 4476
diff changeset
70 @node What is Octave?
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
71 @chapter What is Octave?
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
72
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
73 Octave is a high-level interactive language, primarily intended for
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
74 numerical computations that is mostly compatible with
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
75 @sc{Matlab}.@footnote{@sc{Matlab} is a registered trademark of The MathWorks,
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
76 Inc.}
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
77
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
78 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
79 and matrices, solve sets of nonlinear algebraic equations, integrate
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
80 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
81 ordinary differential and differential-algebraic equations.
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
82
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
83 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
84 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
85 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
86 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
87 command history is saved, so that commands entered during previous
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
88 sessions are not lost.
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
89
6879
28f3be713c1d [project @ 2007-09-07 21:35:44 by dbateman]
dbateman
parents: 6735
diff changeset
90 The Octave distribution includes a 590+ page Texinfo manual. Access
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
91 to the complete text of the manual is available via the help command
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
92 @c really, the *complete* text?
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
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
96 * Who develops Octave?::
6584
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
97 * Why GNU Octave?::
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
98 * What version should I use?::
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
99 * On what platforms does Octave run?::
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
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
107 the University of Texas. John W. Eaton was the original author of
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
108 Octave, starting full-time development in February 1992. He is still
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
109 the primary maintainer. The community
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
110 of users/developers has in addition contributed some code and fuels the
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
111 discussion on the mailing lists @email{help@@octave.org} (user forum),
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
112 @email{bug@@octave.org} (bug reports), @email{maintainers@@octave.org}
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
113 (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
114 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
115 functions).
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
116
6584
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
117 @node Why GNU Octave?
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
118 @section Why GNU Octave?
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
119
6584
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
120 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
121 operating system which is free software: the GNU system.
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
122
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
123 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
124 guh-noo, approximately like canoe.
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
125
6584
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
126 The Free Software Foundation (FSF) is the principal organizational
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
127 sponsor of the GNU Project.
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
128
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
129 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
130 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
131 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
132 developed by the FSF.
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
133
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
134 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
135
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
136 @cindex FSF [Free Software Foundation]
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
137 @cindex GNU [GNU's not unix]
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
138
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
139 @node What version should I use?
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
140 @section What version should I use?
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
141
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
142 In general, you will find the latest version on
6584
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
143 @url{http://www.octave.org/download.html}. It is
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
144 recommended to use the ``testing'' version of octave for general use,
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
145 and the ``development'' version if you want the latest features.
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
146
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
147 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
148 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
149 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
150 last release.
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
151
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
152 @node On what platforms does Octave run?
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
153 @section On what platforms does Octave run?
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
154
6584
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
155 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
156 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
157 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
158 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
159
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
160 Two and three dimensional plotting is fully supported using gnuplot.
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
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
163 like Lapack, Linpack, Odepack, the Blas, etc., packaged in a library
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
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
170 under the terms of the GNU General Public License as published by the
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
171 Free Software Foundation.
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
172
4830
a3dd9369a1d4 [project @ 2004-03-10 06:10:19 by jwe]
jwe
parents: 4476
diff changeset
173 @node How can I cite Octave?
a3dd9369a1d4 [project @ 2004-03-10 06:10:19 by jwe]
jwe
parents: 4476
diff changeset
174 @chapter How can I cite Octave?
4831
4ec7d24b4943 [project @ 2004-03-10 06:14:52 by jwe]
jwe
parents: 4830
diff changeset
175
4ec7d24b4943 [project @ 2004-03-10 06:14:52 by jwe]
jwe
parents: 4830
diff changeset
176 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
177 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
178 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
179 reference, then you can cite the Octave manual:
4830
a3dd9369a1d4 [project @ 2004-03-10 06:10:19 by jwe]
jwe
parents: 4476
diff changeset
180
a3dd9369a1d4 [project @ 2004-03-10 06:10:19 by jwe]
jwe
parents: 4476
diff changeset
181 @example
a3dd9369a1d4 [project @ 2004-03-10 06:10:19 by jwe]
jwe
parents: 4476
diff changeset
182 @group
6584
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
183 @@BOOK@{eaton:2002,
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
184 author = "John W. Eaton",
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
185 title = "GNU Octave Manual",
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
186 publisher = "Network Theory Limited",
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
187 year = "2002",
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
188 isbn = "0-9541617-2-6"
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
189 @}
4830
a3dd9369a1d4 [project @ 2004-03-10 06:10:19 by jwe]
jwe
parents: 4476
diff changeset
190 @end group
a3dd9369a1d4 [project @ 2004-03-10 06:10:19 by jwe]
jwe
parents: 4476
diff changeset
191 @end example
a3dd9369a1d4 [project @ 2004-03-10 06:10:19 by jwe]
jwe
parents: 4476
diff changeset
192
8128
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
193 @node Series 3.0.N
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
194 @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
195
8128
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
196 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
197 number change. The 3.0.N series brings
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
198
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
199 @itemize @bullet
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
200
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
201 @item integer types
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
202
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
203 @item fixed point arithmetic
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
204
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
205 @item sparse matrices
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
206
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
207 @item Linear programming code based on GLPK
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
208
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
209 @item 64-bit compilation support
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
210
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
211 @item gzipped files and stream and consequently support of matlab v7 files
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
212
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
213 @item better support for both msvc and mingw
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
214
7116
c7992b210874 [project @ 2007-11-07 15:49:37 by jwe]
jwe
parents: 7018
diff changeset
215 @item a fully compatible MEX interface
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
216
6606
2c19eaa2c6f7 [project @ 2007-05-07 17:09:38 by jwe]
jwe
parents: 6584
diff changeset
217 @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
218
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
219 @end itemize
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
220
6735
19e2d70e2a4c [project @ 2007-06-15 19:33:27 by dbateman]
dbateman
parents: 6653
diff changeset
221 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
222
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
223 @itemize @bullet
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
224
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
225 @item NDarrays
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
226
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
227 @item cells
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
228
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
229 @end itemize
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
230
8128
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
231 The 3.1.N series is the current development release and will become a
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
232 3.2.N release in the future. This series brings the new features
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
233
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
234 @itemize
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
235 @item OpenGL backend
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
236
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
237 An experimental OpenGL graphics backend to replace the gnuplot
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
238
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
239 @item Object Orient Programming
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
240
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
241 @item Block comments
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
242
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
243 @item imwrite and imread
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
244
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
245 The functions are based on the GraphicsMagick library.
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
246
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
247 @item Lazy transpose
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
248
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
249 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
250 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
251 underlying LAPACK code.
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
252
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
253 @item Single precision type
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
254 @end itemize
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
255
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
256
4830
a3dd9369a1d4 [project @ 2004-03-10 06:10:19 by jwe]
jwe
parents: 4476
diff changeset
257 @node Octave Features
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
258 @chapter What features are unique to Octave?
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
259
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
260 @menu
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
261 * Functions defined on the command-line::
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
262 * Comments with #::
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
263 * Strings delimitted by double quotes "::
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
264 * Line continuation by backslash::
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
265 * Informative block closing::
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
266 * Coherent syntax::
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
267 * Exclamation mark as not operator::
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
268 * Increment and decrement operators::
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
269 * Unwind-protect::
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
270 * Built-in ODE and DAE solvers::
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
271 @end menu
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
272
8128
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
273 This section refers to Matlab R2008b and Octave 2.1.51.
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
274
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
275 @node Functions defined on the command-line
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
276 @section Functions defined on the command-line
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
277
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
278 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
279 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
280 type:
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
281
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
282 @example
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
283 @group
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
284 octave:1> function s = hello_string (to_who)
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
285 > ## Say hello
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
286 > if nargin<1, to_who = "World"; end
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
287 > s = ["Hello ",\
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
288 > to_who];
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
289 > endfunction
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
290 octave:2> hello_string ("Moon")
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
291 ans = Hello Moon
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
292 @end group
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
293 @end example
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
294
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
295 @node Comments with #
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
296 @section Comments with #
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
297
6584
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
298 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
299 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
300 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
301 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
302 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
303
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
304 @node Strings delimitted by double quotes "
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
305 @section Strings delimitted by double quotes "
6584
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
306 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
307 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
308 strings include backslash interpretation (like C++, C, and Perl) while
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
309 single quoted are uninterpreted (like Matlab and Perl).
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
310
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
311 @node Line continuation by backslash
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
312 @section Line continuation by backslash
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
313
6584
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
314 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
315 points @samp{@dots{}}. See the previous example.
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
316
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
317 @node Informative block closing
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
318 @section Informative block closing
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
319
6584
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
320 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
321 @dots{} blocks with @code{endfunction}, @code{endfor}, @code{endwhile},
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
322 @dots{} keywords in addition to using @code{end}. As with Matlab, the
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
323 @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
324 function defined in a @file{.m} file is optional.
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
325
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
326 @node Coherent syntax
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
327 @section Coherent syntax
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
328
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
329 Indexing other things than variables is possible, as in:
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
330 @example
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
331 @group
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
332 octave:1> [3 1 4 1 5 9](3)
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
333 ans = 4
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
334 octave:2> cos([0 pi pi/4 7])(3)
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
335 ans = 0.70711
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
336 @end group
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
337 @end example
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
338
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
339 @node Exclamation mark as not operator
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
340 @section Exclamation mark as not operator
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
341
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
342 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
343 like the tilde '~':
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
344
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
345 @example
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
346 @group
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
347 octave:1> if ! strcmp (program_name, "octave"),
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
348 > "It's an error"
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
349 > else
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
350 > "It works!"
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
351 > end
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
352 ans = It works!
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
353 @end group
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
354 @end example
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
355
4830
a3dd9369a1d4 [project @ 2004-03-10 06:10:19 by jwe]
jwe
parents: 4476
diff changeset
356 @node Increment and decrement operators
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
357 @section Increment and decrement operators
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 @cindex Increment operators
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
360 @cindex Decrement operators
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
361 @cindex Operators, increment
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
362 @cindex Operators, decrement
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
363
6584
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
364 If you like the @samp{++}, @samp{+=} etc operators, rejoice!
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
365 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
366 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
367 @samp{+=}, @samp{-=}, @samp{*=}, @samp{/=}, @samp{^=}, @samp{.*=},
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
368 @samp{./=}, and @samp{.^=}.
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
369
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
370 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
371 @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
372 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
373 same as the expression @code{@var{x} = @var{x} + 1}.
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
374
6584
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
375 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
376 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
377 @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
378 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
379 value of @var{x} is 3.
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
380
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
381 For matrix and vector arguments, the increment and decrement operators
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
382 work on each element of the operand.
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
383
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
384
4830
a3dd9369a1d4 [project @ 2004-03-10 06:10:19 by jwe]
jwe
parents: 4476
diff changeset
385 @node Unwind-protect
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
386 @section Unwind-protect
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
387
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
388 @cindex Unwind-protect
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
389
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
390 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
391 unwind-protect form of Lisp. The general form of an
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
392 @code{unwind_protect} block looks like this:
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
393
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
394 @example
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
395 @group
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
396 unwind_protect
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
397 @var{body}
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
398 unwind_protect_cleanup
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
399 @var{cleanup}
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
400 end_unwind_protect
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
401 @end group
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
402 @end example
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
403
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
404 @noindent
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
405 Where @var{body} and @var{cleanup} are both optional and may contain any
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
406 Octave expressions or commands. The statements in @var{cleanup} are
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
407 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
408
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
409 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
410 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
411
8128
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
412 Matlab can be made to do something similar with their @code{OnCleanUp}
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
413 function that was introduced in 2008a.
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
414
4830
a3dd9369a1d4 [project @ 2004-03-10 06:10:19 by jwe]
jwe
parents: 4476
diff changeset
415 @node Built-in ODE and DAE solvers
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
416 @section Built-in ODE and DAE solvers
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
417
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
418 @cindex DASSL
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
419 @cindex LSODE
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
420
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
421 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
422 differential and differential-algebraic equations. These functions are
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
423 built in to the interpreter.
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
424
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
425 @node Learning more about Octave
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
426 @chapter What documentation exists for Octave?
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
427
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
428 @menu
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
429 * Documentation::
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
430 * Getting additional help::
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
431 * User community::
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
432 * Bug reports::
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
433 @end menu
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
434
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
435
4830
a3dd9369a1d4 [project @ 2004-03-10 06:10:19 by jwe]
jwe
parents: 4476
diff changeset
436 @node Documentation
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
437 @section What documentation exists for Octave?
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
438
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
439 @cindex Octave, documentation
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
440
6879
28f3be713c1d [project @ 2007-09-07 21:35:44 by dbateman]
dbateman
parents: 6735
diff changeset
441 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
442 distributed under the terms of the GNU GPL.
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
443 It is available on the web at
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
444 @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
445 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
446
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
447 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
448 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
449 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
450 the Octave prompt.
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
451
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
452 If you have problems using this documentation, or find that some topic
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
453 is not adequately explained, indexed, or cross-referenced, please send
6584
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
454 a bug report to @email{bug@@octave.org}.
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
455
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
456
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
457 @node Getting additional help
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
458 @section Getting additional help
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
459
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
460 @cindex Additional help
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
461 @cindex Mailing lists, help-octave
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
462
6584
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
463 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
464 @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
465 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
466 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
467
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
468 @node User community
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
469 @section User community
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
470
6584
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
471 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
472 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
473
6653
673686daec87 [project @ 2007-05-22 15:36:09 by jwe]
jwe
parents: 6612
diff changeset
474 @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
475 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
476
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
477 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
478 on @url{http://www.octave.org/archive.html}.
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
479
6584
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
480 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
481 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
482 Octave-Forge @url{http://octave.sourceforge.net}
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
483
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
484 @node Bug reports
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
485 @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
486
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
487 @cindex Bug in Octave, newly found
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
488
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
489 ``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
490 and who should I tell?''
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
491
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
492 @cindex Manual, for Octave
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
493
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
494 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
495 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
496 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
497 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
498 the Octave maintainers can duplicate your bug.
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
499
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
500 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
501 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
502 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
503 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
504 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
505 operating system).
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
506
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
507 @cindex Octave bug report
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
508 @cindex Mailing lists, bug-octave
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
509
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
510 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
511 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
512 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
513 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
514 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
515
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
516
4830
a3dd9369a1d4 [project @ 2004-03-10 06:10:19 by jwe]
jwe
parents: 4476
diff changeset
517 @node Getting Octave
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
518 @chapter Getting Octave
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
519
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
520 @menu
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
521 * Source code::
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
522 * Pre-compiled binary packages::
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
523 * Octave for other platforms::
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
524 @end menu
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
525
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
526 @node Source code
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
527 @section Source code
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
528 @cindex Source code
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
529
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
530 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
531 sure to get the latest version.
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
532
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
533 @itemize @bullet
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
534 @item @url{http://www.octave.org/download.html}
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
535 @item @url{ftp://ftp.octave.org/pub/octave/}
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
536 @end itemize
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
537
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
538 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
539 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
540 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
541
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
542 @node Pre-compiled binary packages
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
543 @section Pre-compiled binary packages
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
544 @cindex Pre-compiled binary packages
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
545 @cindex Binaries
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
546
6584
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
547 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
548 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
549
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
550 @itemize @bullet
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
551 @item @url{http://www.octave.org/download.html}
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
552 @item @url{http://wiki.octave.org/wiki.pl?CategoryInstall}
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
553 @end itemize
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
554
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
555 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
556 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
557
4830
a3dd9369a1d4 [project @ 2004-03-10 06:10:19 by jwe]
jwe
parents: 4476
diff changeset
558 @node Octave for other platforms
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
559 @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
560
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
561 @cindex VMS support
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
562 @cindex VAX
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
563 @cindex MS-DOS support
3154
352a80c32765 [project @ 1998-02-14 19:17:59 by jwe]
jwe
parents: 3030
diff changeset
564 @cindex Windows support
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
565 @cindex DJGPP
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
566 @cindex EMX
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
567 @cindex OS/2 support
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
568
6879
28f3be713c1d [project @ 2007-09-07 21:35:44 by dbateman]
dbateman
parents: 6735
diff changeset
569 Octave currently runs on Unix-like systems, Mac OS X, and Windows.
28f3be713c1d [project @ 2007-09-07 21:35:44 by dbateman]
dbateman
parents: 6735
diff changeset
570 It should be possible to make Octave work on other systems as well.
28f3be713c1d [project @ 2007-09-07 21:35:44 by dbateman]
dbateman
parents: 6735
diff changeset
571 If you are interested in porting Octave to other systems, please contact
6584
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
572 @email{bug@@octave.org}.
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
573
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
574 @c @menu
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
575 @c * Octave for Unix::
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
576 @c * Octave for other platforms::
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
577 @c * latest versions::
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
578 @c @end menu
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
579
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
580 @c @cindex Octave, ordering
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
581 @c @cindex Octave, getting a copy
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
582
4830
a3dd9369a1d4 [project @ 2004-03-10 06:10:19 by jwe]
jwe
parents: 4476
diff changeset
583 @node Installation
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
584 @chapter Installation Issues and Problems
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
585
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
586 @cindex Octave, building
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
587
8128
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
588 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
589 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
590 debugging symbols). Once installed, Octave requires approximately 200MB
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
591 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
592 debugging symbols).
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
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
595 * What else do I need?::
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
596 * Other C++ compilers?::
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
597 @end menu
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
598
4830
a3dd9369a1d4 [project @ 2004-03-10 06:10:19 by jwe]
jwe
parents: 4476
diff changeset
599 @node What else do I need?
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
600 @section What else do I need?
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
601
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
602 @cindex GNU gcc
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
603 @cindex GNU g++
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
604 @cindex libg++
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
605 @cindex GNU Make
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
606 @cindex Flex
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
607 @cindex GNU Bison
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
608
3154
352a80c32765 [project @ 1998-02-14 19:17:59 by jwe]
jwe
parents: 3030
diff changeset
609 To compile Octave, you will need a recent version of GNU Make. You
6584
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
610 will also need GCC 3.3 or later, although GCC 4.1 or later is
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
611 recommended.
3154
352a80c32765 [project @ 1998-02-14 19:17:59 by jwe]
jwe
parents: 3030
diff changeset
612
6584
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
613 @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
614 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
615 GNU Make is very portable and easy to install.
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
616
4830
a3dd9369a1d4 [project @ 2004-03-10 06:10:19 by jwe]
jwe
parents: 4476
diff changeset
617 @node Other C++ compilers?
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
618 @section Can I compile Octave with another C++ compiler?
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
619
6584
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
620 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
621 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
622 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
623 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
624 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
625
4830
a3dd9369a1d4 [project @ 2004-03-10 06:10:19 by jwe]
jwe
parents: 4476
diff changeset
626 @node Common problems
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
627 @chapter Common problems
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
628
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
629 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
630 questions (preferably with answers!)
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
631
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
632 @itemize @bullet
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
633 @item
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
634 Octave takes a long time to find symbols.
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
635
6606
2c19eaa2c6f7 [project @ 2007-05-07 17:09:38 by jwe]
jwe
parents: 6584
diff changeset
636 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
637 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
638 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
639 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
640
19e2d70e2a4c [project @ 2007-06-15 19:33:27 by dbateman]
dbateman
parents: 6653
diff changeset
641 @item
6900
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
642 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
643 line 26317: invalid command}.
6735
19e2d70e2a4c [project @ 2007-06-15 19:33:27 by dbateman]
dbateman
parents: 6653
diff changeset
644
19e2d70e2a4c [project @ 2007-06-15 19:33:27 by dbateman]
dbateman
parents: 6653
diff changeset
645 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
646 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
647 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
648
19e2d70e2a4c [project @ 2007-06-15 19:33:27 by dbateman]
dbateman
parents: 6653
diff changeset
649 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
650 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
651 included.
8215
518789a0539d FAQ entry about split development packages in distributions
Thomas Weber <thomas.weber.mail@gmail.com>
parents: 8130
diff changeset
652
518789a0539d FAQ entry about split development packages in distributions
Thomas Weber <thomas.weber.mail@gmail.com>
parents: 8130
diff changeset
653 @item
518789a0539d FAQ entry about split development packages in distributions
Thomas Weber <thomas.weber.mail@gmail.com>
parents: 8130
diff changeset
654 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
655
518789a0539d FAQ entry about split development packages in distributions
Thomas Weber <thomas.weber.mail@gmail.com>
parents: 8130
diff changeset
656 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
657 @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
658 @itemize @minus
518789a0539d FAQ entry about split development packages in distributions
Thomas Weber <thomas.weber.mail@gmail.com>
parents: 8130
diff changeset
659 @item
518789a0539d FAQ entry about split development packages in distributions
Thomas Weber <thomas.weber.mail@gmail.com>
parents: 8130
diff changeset
660 Debian/Ubuntu
518789a0539d FAQ entry about split development packages in distributions
Thomas Weber <thomas.weber.mail@gmail.com>
parents: 8130
diff changeset
661
518789a0539d FAQ entry about split development packages in distributions
Thomas Weber <thomas.weber.mail@gmail.com>
parents: 8130
diff changeset
662 @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
663
518789a0539d FAQ entry about split development packages in distributions
Thomas Weber <thomas.weber.mail@gmail.com>
parents: 8130
diff changeset
664 @item
518789a0539d FAQ entry about split development packages in distributions
Thomas Weber <thomas.weber.mail@gmail.com>
parents: 8130
diff changeset
665 Fedora
518789a0539d FAQ entry about split development packages in distributions
Thomas Weber <thomas.weber.mail@gmail.com>
parents: 8130
diff changeset
666
518789a0539d FAQ entry about split development packages in distributions
Thomas Weber <thomas.weber.mail@gmail.com>
parents: 8130
diff changeset
667 @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
668
518789a0539d FAQ entry about split development packages in distributions
Thomas Weber <thomas.weber.mail@gmail.com>
parents: 8130
diff changeset
669 @end itemize
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
670 @end itemize
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
671
6584
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
672 @node How do I ...?
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
673 @chapter How do I ...?
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
674
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
675 @menu
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
676 * How do I set the number of displayed decimals?::
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
677 @end menu
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
678
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
679 @cindex Tips and tricks
6584
cd06796e0ed6 [project @ 2007-04-26 15:41:29 by jwe]
jwe
parents: 6583
diff changeset
680 @cindex How do I @dots{} ?
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
681
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
682 @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
683 @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
684
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
685 @example
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
686 @group
6583
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
687 octave:1> format long
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
688 octave:2> pi
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
689 pi = 3.14159265358979
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
690 octave:3> format short
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
691 octave:4> pi
e4ef75fe0bf2 [project @ 2007-04-26 04:01:08 by jwe]
jwe
parents: 6477
diff changeset
692 pi = 3.1416
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
693 @end group
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
694 @end example
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
695
4830
a3dd9369a1d4 [project @ 2004-03-10 06:10:19 by jwe]
jwe
parents: 4476
diff changeset
696 @node MATLAB compatibility
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
697 @chapter Porting programs from @sc{Matlab} to Octave
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
698
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
699 @cindex @sc{Matlab} compatibility
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
700 @cindex Compatibility with @sc{Matlab}
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
701
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
702 People often ask
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
703
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
704 ``I wrote some code for @sc{Matlab}, and I want to get it running under
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
705 Octave. Is there anything I should watch out for?''
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
706
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
707 or alternatively
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
708
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
709 ``I wrote some code in Octave, and want to share it with @sc{Matlab}
6900
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
710 users. Is there anything I should watch out for?''
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
711
6900
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
712 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
713 differences between Octave and @sc{Matlab}, however in general
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
714 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
715 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
716 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
717 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
718 description of this difference (with code illustrating the difference,
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
719 if possible) to @email{bug@@octave.org}.
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
720
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
721 Furthermore, Octave adds a few syntactical extensions to Matlab that
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
722 might cause some issues when exchanging files between Matlab and Octave
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
723 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
724 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
725
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
726 You should also look at the page
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
727 @url{http://octave.sourceforge.net/packages.html} and
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
728 @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
729 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
730 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
731 compatibility.
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
732
8128
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
733 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
734
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
735 @itemize @bullet
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
736 @item Nested Functions
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
737
6900
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
738 Octave doesn't yet have nested functions. That is
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
739
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
740 @example
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
741 @group
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
742 function y = foo (x)
6900
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
743 y = bar(x)
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
744 function y = bar (x)
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
745 y = @dots{};
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
746 end
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
747 end
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
748 @end group
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
749 @end example
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
750
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
751 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
752 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
753 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
754
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
755 @example
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
756 @group
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
757 function y = foo (x)
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
758 y = bar(x)
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
759 end
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
760 function y = bar (x)
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
761 y = @dots{};
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
762 end
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
763 @end group
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
764 @end example
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
765
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
766 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
767 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
768 are treated as sub-functions with the same scoping rules as
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
769 sub-functions.
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
770
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
771 The authors of Octave consider the nested function scoping rules of
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
772 Matlab to be more problems than they are worth as they introduce
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
773 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
774 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
775
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
776 @item Differences in core syntax
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
777 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
778 these being
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
779
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
780 @itemize @bullet
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
781 @item
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
782 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
783 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
784 function handles.
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
785
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
786 @item
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
787 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
788 though the most common types are accepted.
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
789
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
790 @item
8128
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
791 @sc{Matlab} classdef object oriented programming is not yet supportted,
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
792 though work is underway and when development more on to Octave 3.3 this
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
793 will be included in teh development tree.
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
794 @end itemize
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
795
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
796 @item Differences in core functions
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
797 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
798 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
799 commonly used ones. There are a few functions that aren't implemented,
6879
28f3be713c1d [project @ 2007-09-07 21:35:44 by dbateman]
dbateman
parents: 6735
diff changeset
800 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
801 (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
802 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
803 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
804 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
805
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
806 @item Just-In-Time compiler
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
807 @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
808 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
809 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
810 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
811 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
812 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
813 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
814 discussing vectorization at
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
815 @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
816
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
817 @item Compiler
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
818 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
819 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
820 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
821 @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
822 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
823
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
824 @item Graphic Handles
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
825 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
826 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
827 handles is converging towards full compatibility. The @code{patch}
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
828 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
829 limitation in gnuplot.
6612
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 @item GUI
6900
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
832 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
833 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
834 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
835 that can be used for a GUI, but these are not @sc{Matlab}
7116
c7992b210874 [project @ 2007-11-07 15:49:37 by jwe]
jwe
parents: 7018
diff changeset
836 compatible. Work on a 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
837 JHandles package (@url{http://octave.sourceforge.net/jhandles/index.html}).
28f3be713c1d [project @ 2007-09-07 21:35:44 by dbateman]
dbateman
parents: 6735
diff changeset
838 This might be an issue if you intend to exchange Octave code with
28f3be713c1d [project @ 2007-09-07 21:35:44 by dbateman]
dbateman
parents: 6735
diff changeset
839 @sc{Matlab} users.
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
840
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
841 @item Simulink
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
842 Octave itself includes no Simulink support. Typically the simulink
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
843 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
844 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
845 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
846 simulink for the Octave and R projects available at
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
847 @url{http://www.scicraft.org/}
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
848
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
849 @item Mex-Files
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
850 Octave includes an API to the matlab MEX interface. However, as MEX is
6900
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
851 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
852 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
853 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
854 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
855 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
856 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
857 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
858 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
859 ones).
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
860
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
861 @item Block comments
8128
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
862 Block comments denoted by "%@{" and "%@}" markers are supported by
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
863 Octave with some limitations. The major limitation is that block
8130
de8b07e95d1b Octave-FAQ.texi: fix markup
John W. Eaton <jwe@octave.org>
parents: 8128
diff changeset
864 comments are not supported with [] or @{@}.
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
865
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
866 @item Mat-File format
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
867 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
868 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
869 an HDF5 format which is particularly useful for 64-bit platforms where
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
870 the standard matlab format can not correctly save variables.. Octave
6900
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
871 accepts HDF5 files, but is not yet compatible with the "-v7.3" versions
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
872 produced by @sc{Matlab}.
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
873
8128
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
874 Although Octave can load inline abd function handles saved by
9e4a09b35cdb Update the FAQ
David Bateman <dbateman@free.fr>
parents: 7483
diff changeset
875 @sc{Matlab}, it can not yet save them.
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
876
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
877 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
878 mat-files.
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
879
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
880 @item Profiler
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
881 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
882 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
883 the thread
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
884
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
885 @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
886
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
887 for more details
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
888
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
889 @item Toolboxes
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
890 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
891 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
892 (@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
893 functionality relative to the @sc{Matlab} toolboxes, and might not
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
894 exactly duplicate the matlab functionality or interface.
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
895
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
896 @item Short-circuit & and | operators
6900
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
897 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
898 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
899 @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
900
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
901 @example
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
902 @group
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
903 if (a | b)
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
904 @dots{}
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
905 end
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
906 @end group
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
907 @end example
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
908
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
909 and
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
910
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
911 @example
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
912 @group
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
913 t = a | b;
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
914 if t
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
915 @dots{}
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
916 end
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
917 @end group
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
918 @end example
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
919
6900
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
920 @noindent
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
921 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
922 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
923 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
924
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
925 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
926 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
927 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
928 between
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
929
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
930 @example
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
931 @group
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
932 t = 1 | []; ## results in [], so...
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
933 if (t) 1, end ## in if ([]), this is false.
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
934 @end group
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
935 @end example
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
936
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
937 and
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
938
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
939 @example
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
940 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
941 @end example
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
942
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
943 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
944
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
945 @example
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
946 @group
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
947 t = [1, 1] | [1, 2, 3]; ## error
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
948 if ([1, 1] | [1, 2, 3]) 1, end ## OK
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
949 @end group
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
950 @end example
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
951
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
952 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
953 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
954 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
955 logically true).
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
956
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
957 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
958 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
959 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
960
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
961 @example
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
962 @group
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
963 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
964 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
965 @end group
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
966 @end example
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
967
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
968 However,
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
969
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
970 @example
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
971 if ([]) != if (all ([]))
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
972 @end example
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
973
6900
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
974 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
975 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
976 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
977 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
978 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
979 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
980 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
981 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
982 statements containing empty matrices.
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
983
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
984 @item Octave extensions
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
985 The extensions in Octave over @sc{Matlab} syntax are
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
986 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
987 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
988 with @sc{Matlab} are
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
989
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
990 @itemize @bullet
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
991 @item
6900
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
992 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
993 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
994 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
995 absence of comments starting with @samp{#}".
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
996
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
997 @item
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
998 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
999 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
1000 all blocks must be terminated with "end"
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1001
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1002 @item
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1003 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
1004 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
1005 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
1006 @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
1007 @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
1008
6900
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
1009 Note that using @code{try}/@code{catch} combined with @samp{rethrow
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
1010 (lasterror ())} can not guarentee that global variables will be
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
1011 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
1012 example
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1013
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1014 @example
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1015 @group
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1016 global a
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1017 a = 1;
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1018 try
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1019 _a = a;
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1020 a = 2
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1021 while true
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1022 end
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1023 catch
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1024 fprintf ('caught interrupt\n');
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1025 a = _a;
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1026 rethrow (lasterror());
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1027 end
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1028 @end group
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1029 @end example
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1030
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1031 @noindent
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1032 compared to
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1033
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1034 @example
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1035 @group
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1036 global a
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1037 a = 1;
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1038 unwind_protect
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1039 _a = a;
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1040 a = 2
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1041 while true
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1042 end
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1043 unwind_protect_cleanup
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1044 fprintf ('caught interrupt\n');
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1045 a = _a;
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1046 end
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1047 @end group
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1048 @end example
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1049
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1050 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
1051 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
1052 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
1053 gives no save way of temporarily changing global variables.
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 @item
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1056 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
1057 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
1058 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
1059 @code{y = sin(x); y = y([1:10]);}
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1060
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1061 @item
6900
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
1062 Octave has the operators "++", "--", "-=", "+=", "*=", etc. As
6612
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1063 @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
1064
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1065 @item
6900
e2d560e5a58d [project @ 2007-09-14 17:00:15 by jwe]
jwe
parents: 6879
diff changeset
1066 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
1067 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
1068 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
1069 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
1070 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
1071 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
1072 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
1073 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
1074 @end itemize
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1075
89f3a84a0da1 [project @ 2007-05-09 21:17:45 by jwe]
jwe
parents: 6606
diff changeset
1076 @end itemize
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
1077
4830
a3dd9369a1d4 [project @ 2004-03-10 06:10:19 by jwe]
jwe
parents: 4476
diff changeset
1078 @node Index
2866
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
1079 @appendix Concept Index
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
1080
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
1081 @printindex cp
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
1082
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
1083 @page
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
1084 @contents
ef2e333f469c [project @ 1997-04-18 07:39:43 by jwe]
jwe
parents:
diff changeset
1085 @bye