Mercurial > hg > octave-lyh
comparison doc/faq/FAQ.texi @ 2333:b1a56412c385
[project @ 1996-07-19 02:20:16 by jwe]
Initial revision
author | jwe |
---|---|
date | Fri, 19 Jul 1996 02:26:23 +0000 |
parents | |
children | 106ae3df29f5 |
comparison
equal
deleted
inserted
replaced
2332:98d0771f7484 | 2333:b1a56412c385 |
---|---|
1 \input texinfo.tex @c -*-texinfo-*- | |
2 | |
3 @setfilename FAQ.info | |
4 @settitle Frequently asked questions about Octave (with answers) | |
5 | |
6 @c Smaller amounts of whitespace for the 8.5 by 11 inch format. | |
7 @tex | |
8 \global\chapheadingskip = 15pt plus 4pt minus 2pt | |
9 \global\secheadingskip = 12pt plus 3pt minus 2pt | |
10 \global\subsecheadingskip = 9pt plus 2pt minus 2pt | |
11 \global\parskip 5pt plus 1pt | |
12 | |
13 @finalout | |
14 @end tex | |
15 | |
16 @setchapternewpage off | |
17 | |
18 @titlepage | |
19 @title Octave FAQ | |
20 @subtitle Frequently asked questions about Octave | |
21 @subtitle December 1, 1994 | |
22 @sp 1 | |
23 @author John W. Eaton | |
24 @page | |
25 @end titlepage | |
26 | |
27 @ifinfo | |
28 @node Top, What is Octave?, (dir), (dir) | |
29 @top | |
30 @unnumbered Preface | |
31 @cindex FAQ for Octave, latest version | |
32 @end ifinfo | |
33 | |
34 This is a list of frequently asked questions (FAQ) for Octave users. | |
35 | |
36 Some information in this FAQ was developed for earlier versions of | |
37 Octave and may now be obsolete. | |
38 | |
39 I'm looking for new questions (@emph{with} answers), better answers, | |
40 or both. Please send suggestions to bug-octave@@bevo.che.wisc.edu. | |
41 If you have general questions about Octave, or need help for something | |
42 that is not covered by the FAQ, please use the | |
43 help-octave@@bevo.che.wisc.edu mailing list. | |
44 | |
45 This FAQ is intended to supplement, not replace, the Octave manual. | |
46 Before posting a question to the hlpe-octave mailing list, you should | |
47 first check to see if the topic is covered in the manual. | |
48 | |
49 @menu | |
50 * What is Octave?:: | |
51 * Version 1.1.0:: | |
52 * Octave Features:: | |
53 * Documentation:: | |
54 * Getting Octave:: | |
55 * Installation:: | |
56 * Common problems:: | |
57 * Getting additional help:: | |
58 * Bug reports:: | |
59 * MATLAB compatibility:: | |
60 * Index:: | |
61 @end menu | |
62 | |
63 @node What is Octave?, Version 1.1.0, Top, Top | |
64 @chapter What is Octave? | |
65 | |
66 Octave is a high-level interactive language, primarily intended for | |
67 numerical computations that is mostly compatible with | |
68 @sc{Matlab}.@footnote{@sc{Matlab} is a registered trademark of The MathWorks, | |
69 Inc.} | |
70 | |
71 Octave can do arithmetic for real and complex scalars and matrices, | |
72 solve sets of nonlinear algebraic equations, integrate functions over | |
73 finite and infinite intervals, and integrate systems of ordinary | |
74 differential and differential-algebraic equations. | |
75 | |
76 Octave uses the GNU readline library to handle reading and editing | |
77 input. By default, the line editing commands are similar to the | |
78 cursor movement commands used by GNU Emacs, and a vi-style line | |
79 editing interface is also available. At the end of each session, the | |
80 command history is saved, so that commands entered during previous | |
81 sessions are not lost. | |
82 | |
83 The Octave distribution includes a 200+ page Texinfo manual. Access | |
84 to the complete text of the manual is available via the help command | |
85 at the Octave prompt. | |
86 | |
87 Two and three dimensional plotting is fully supported using gnuplot. | |
88 | |
89 The underlying numerical solvers are currently standard Fortran ones | |
90 like Lapack, Linpack, Odepack, the Blas, etc., packaged in a library | |
91 of C++ classes. If possible, the Fortran subroutines are compiled | |
92 with the system's Fortran compiler, and called directly from the C++ | |
93 functions. If that's not possible, you can still compile Octave if | |
94 you have the free Fortran to C translator f2c. | |
95 | |
96 Octave is also free software; you can redistribute it and/or modify it | |
97 under the terms of the GNU General Public License as published by the | |
98 Free Software Foundation. | |
99 | |
100 @node Version 1.1.0, Octave Features, What is Octave?, Top | |
101 @chapter What's new in version 1.1.0 of Octave | |
102 | |
103 The long-awaited version 1.1.0 of Octave has now been released. Many | |
104 bugs have been fixed and lots of new features added. Octave is now much | |
105 more compatible with @sc{Matlab}. | |
106 | |
107 Version 1.1.0 fixes many bugs, but as with any ``x.y.0'' release there | |
108 will be a few glitches. You can expect a 1.1.1 shortly. You can help | |
109 contribute to the quality of Octave by trying it out and submitting bug | |
110 reports where you find them. | |
111 | |
112 A list of user-visible changes in recent versions of Octave may be found | |
113 in the file NEWS, distributed in both source and binary releases of | |
114 Octave. | |
115 | |
116 @node Octave Features, Documentation, Version 1.1.0, Top | |
117 @chapter What features are unique to Octave? | |
118 | |
119 @menu | |
120 * Command and variable name completion:: | |
121 * Command history:: | |
122 * Data structures:: | |
123 * Short-circuit boolean operators:: | |
124 * Increment and decrement operators:: | |
125 * Unwind-protect:: | |
126 * Variable-length argument lists:: | |
127 * Variable-length return lists:: | |
128 * Built-in ODE and DAE solvers:: | |
129 @end menu | |
130 | |
131 @node Command and variable name completion, Command history, Octave Features, Octave Features | |
132 @section Command and variable name completion | |
133 | |
134 @cindex Command completion | |
135 @cindex Function name completion | |
136 @cindex Variable name completion | |
137 @cindex Name completion | |
138 | |
139 Typing a TAB character (ASCII code 9) on the command line causes Octave | |
140 to attempt to complete variable, function, and file names. Octave uses | |
141 the text before the cursor as the initial portion of the name to | |
142 complete. | |
143 | |
144 For example, if you type @samp{fu} followed by TAB at the Octave prompt, | |
145 Octave will complete the rest of the name @samp{function} on the command | |
146 line (unless you have other variables or functions defined that begin | |
147 with the characters @samp{fu}). If there is more than one possible | |
148 completion, Octave will ring the terminal bell to let you know that your | |
149 initial sequence of characters is not enough to specify a unique name. | |
150 To complete the name, you may either edit the initial character sequence | |
151 (usually adding more characters until completion is possible) or type | |
152 another TAB to cause Octave to display the list of possible completions. | |
153 | |
154 @node Command history, Data structures, Command and variable name completion, Octave Features | |
155 @section Command history | |
156 | |
157 @cindex Command history | |
158 @cindex History | |
159 | |
160 When running interactively, Octave saves the commands you type in an | |
161 internal buffer so that you can recall and edit them. Emacs and vi | |
162 editing modes are available with Emacs keybindings enabled by default. | |
163 | |
164 When Octave exits, the current command history is saved to the file | |
165 @file{~/.octave_hist}, and each time Octave starts, it inserts the | |
166 contents of the @file{~/.octave_hist} file in the history list so that | |
167 it is easy to begin working where you left off. | |
168 | |
169 @node Data structures, Short-circuit boolean operators, Command history, Octave Features | |
170 @section Data structures | |
171 | |
172 @cindex Data structures | |
173 @cindex Structures | |
174 | |
175 Octave includes a limited amount of support for organizing data in | |
176 structures. The current implementation uses an associative array | |
177 with indices limited to strings, but the syntax is more like C-style | |
178 structures. Here are some examples of using data structures in Octave. | |
179 | |
180 @itemize @bullet | |
181 @item Elements of structures can be of any value type. | |
182 | |
183 @example | |
184 octave:1> x.a = 1; x.b = [1, 2; 3, 4]; x.c = "string"; | |
185 octave:2> x.a | |
186 x.a = 1 | |
187 octave:3> x.b | |
188 x.b = | |
189 | |
190 1 2 | |
191 3 4 | |
192 | |
193 octave:4> x.c | |
194 x.c = string | |
195 @end example | |
196 | |
197 @item Structures may be copied. | |
198 | |
199 @example | |
200 octave:1> y = x | |
201 y = | |
202 | |
203 <structure: a b c> | |
204 @end example | |
205 | |
206 @item Structure elements may reference other structures. | |
207 | |
208 @example | |
209 octave:1> x.b.d = 3 | |
210 x.b.d = 3 | |
211 octave:2> x.b | |
212 x.b = | |
213 | |
214 <structure: d> | |
215 | |
216 octave:3> x.b.d | |
217 x.b.d = 3 | |
218 @end example | |
219 | |
220 @item Functions can return structures. | |
221 | |
222 @example | |
223 octave:1> function y = f (x) | |
224 > y.re = real (x); | |
225 > y.im = imag (x); | |
226 > endfunction | |
227 | |
228 octave:2> f (rand + rand*I); | |
229 ans = | |
230 | |
231 <structure: im re> | |
232 | |
233 octave:3> ans.im, ans.re | |
234 ans.im = 0.93411 | |
235 ans.re = 0.56234 | |
236 @end example | |
237 | |
238 @item Function return lists can include structure elements, and they may | |
239 be indexed like any other variable. | |
240 | |
241 @example | |
242 octave:1> [x.u, x.s(2:3,2:3), x.v] = svd ([1, 2; 3, 4]) | |
243 x.u = | |
244 | |
245 -0.40455 -0.91451 | |
246 -0.91451 0.40455 | |
247 | |
248 x.s = | |
249 | |
250 0.00000 0.00000 0.00000 | |
251 0.00000 5.46499 0.00000 | |
252 0.00000 0.00000 0.36597 | |
253 | |
254 x.v = | |
255 | |
256 -0.57605 0.81742 | |
257 -0.81742 -0.57605 | |
258 | |
259 octave:8> x | |
260 x = | |
261 | |
262 <structure: s u v> | |
263 @end example | |
264 | |
265 @item You can also use the function @code{is_struct} to determine | |
266 whether a given value is a data structure. For example | |
267 | |
268 @example | |
269 is_struct (x) | |
270 @end example | |
271 | |
272 @noindent | |
273 returns 1 if the value of the variable @var{x} is a data structure. | |
274 @end itemize | |
275 | |
276 This feature should be considered experimental, but you should expect it | |
277 to work. Suggestions for ways to improve it are welcome. | |
278 | |
279 @node Short-circuit boolean operators, Increment and decrement operators, Data structures, Octave Features | |
280 @section Short-circuit boolean operators | |
281 | |
282 @cindex Boolean operators, short-circuit | |
283 @cindex Logical operators, short-circuit | |
284 @cindex Short-circuit boolean operators | |
285 @cindex Operators, boolean | |
286 | |
287 Octave's @samp{&&} and @samp{||} logical operators are evaluated in | |
288 a short-circuit fashion (like the corresponding operators in the C | |
289 language) and work differently than the element by element operators | |
290 @samp{&} and @samp{|}. | |
291 | |
292 @node Increment and decrement operators, Unwind-protect, Short-circuit boolean operators, Octave Features | |
293 @section Increment and decrement operators | |
294 | |
295 @cindex Increment operators | |
296 @cindex Decrement operators | |
297 @cindex Operators, increment | |
298 @cindex Operators, decrement | |
299 | |
300 Octave includes the C-like increment and decrement operators @samp{++} | |
301 and @samp{--} in both their prefix and postfix forms. | |
302 | |
303 For example, to pre-increment the variable @var{x}, you would write | |
304 @code{++@var{x}}. This would add one to @var{x} and then return the new | |
305 value of @var{x} as the result of the expression. It is exactly the | |
306 same as the expression @code{@var{x} = @var{x} + 1}. | |
307 | |
308 To post-increment a variable @var{x}, you would write @code{@var{x}++}. | |
309 This adds one to the variable @var{x}, but returns the value that | |
310 @var{x} had prior to incrementing it. For example, if @var{x} is equal | |
311 to 2, the result of the expression @code{@var{x}++} is 2, and the new | |
312 value of @var{x} is 3. | |
313 | |
314 For matrix and vector arguments, the increment and decrement operators | |
315 work on each element of the operand. | |
316 | |
317 It is not currently possible to increment index expressions. For | |
318 example, you might expect that the expression @code{@var{v}(4)++} would | |
319 increment the fourth element of the vector @var{v}, but instead it | |
320 results in a parse error. This problem may be fixed in a future | |
321 release of Octave. | |
322 | |
323 @node Unwind-protect, Variable-length argument lists, Increment and decrement operators, Octave Features | |
324 @section Unwind-protect | |
325 | |
326 @cindex Unwind-protect | |
327 | |
328 Octave supports a limited form of exception handling modelled after the | |
329 unwind-protect form of Lisp. The general form of an | |
330 @code{unwind_protect} block looks like this: | |
331 | |
332 @example | |
333 @group | |
334 unwind_protect | |
335 @var{body} | |
336 unwind_protect_cleanup | |
337 @var{cleanup} | |
338 end_unwind_protect | |
339 @end group | |
340 @end example | |
341 | |
342 @noindent | |
343 Where @var{body} and @var{cleanup} are both optional and may contain any | |
344 Octave expressions or commands. The statements in @var{cleanup} are | |
345 guaranteed to be executed regardless of how control exits @var{body}. | |
346 | |
347 The @code{unwind_protect} statement is often used to reliably restore | |
348 the values of global variables that need to be temporarily changed. | |
349 | |
350 @node Variable-length argument lists, Variable-length return lists, Unwind-protect, Octave Features | |
351 @section Variable-length argument lists | |
352 | |
353 @cindex Variable-length argument lists | |
354 @cindex Argument lists, variable-length | |
355 | |
356 Octave has a real mechanism for handling functions that take an | |
357 unspecified number of arguments, so it is no longer necessary to place | |
358 an upper bound on the number of optional arguments that a function can | |
359 accept. | |
360 | |
361 Here is an example of a function that uses the new syntax to print a | |
362 header followed by an unspecified number of values: | |
363 | |
364 @example | |
365 function foo (heading, ...) | |
366 disp (heading); | |
367 va_start (); | |
368 while (--nargin) | |
369 disp (va_arg ()); | |
370 endwhile | |
371 endfunction | |
372 @end example | |
373 | |
374 Calling @code{va_start()} positions an internal pointer to the first | |
375 unnamed argument and allows you to cycle through the arguments more than | |
376 once. It is not necessary to call @code{va_start()} if you do not plan | |
377 to cycle through the arguments more than once. | |
378 | |
379 The function @code{va_arg()} returns the value of the next available | |
380 argument and moves the internal pointer to the next argument. It is an | |
381 error to call @code{va_arg()} when there are no more arguments | |
382 available. | |
383 | |
384 It is also possible to use the keyword @var{all_va_args} to pass all | |
385 unnamed arguments to another function. | |
386 | |
387 @node Variable-length return lists, Built-in ODE and DAE solvers, Variable-length argument lists, Octave Features | |
388 @section Variable-length return lists | |
389 | |
390 @cindex Variable-length return lists | |
391 @cindex Return lists, variable-length | |
392 | |
393 Octave also has a real mechanism for handling functions that return an | |
394 unspecified number of values, so it is no longer necessary to place an | |
395 upper bound on the number of outputs that a function can produce. | |
396 | |
397 Here is an example of a function that uses the new syntax to produce | |
398 @samp{N} values: | |
399 | |
400 @example | |
401 function [...] = foo (n) | |
402 for i = 1:n | |
403 vr_val (i); | |
404 endfor | |
405 endfunction | |
406 @end example | |
407 | |
408 @node Built-in ODE and DAE solvers, , Variable-length return lists, Octave Features | |
409 @section Built-in ODE and DAE solvers | |
410 | |
411 @cindex DASSL | |
412 @cindex LSODE | |
413 | |
414 Octave includes LSODE and DASSL for solving systems of stiff | |
415 differential and differential-algebraic equations. These functions are | |
416 built in to the interpreter. | |
417 | |
418 @node Documentation, Getting Octave, Octave Features, Top | |
419 @chapter What documentation exists for Octave? | |
420 | |
421 @cindex Octave, documentation | |
422 | |
423 The Octave distribution includes a 220+ page manual that is also | |
424 distributed under the terms of the GNU GPL. | |
425 | |
426 The Octave manual is intended to be a complete reference for Octave, but | |
427 it is not a finished document. If you have problems using it, or find | |
428 that some topic is not adequately explained, indexed, or | |
429 cross-referenced, please send a bug report to bug-octave@@bevo.che.wisc.edu. | |
430 | |
431 Because the Octave manual is written using Texinfo, the complete text of | |
432 the Octave manual is also available on line using the GNU Info system | |
433 via the GNU Emacs, info, or xinfo programs, or by using the @samp{help -i} | |
434 command to start the GNU info browser directly from the Octave prompt. | |
435 | |
436 It is also possible to use WWW browsers such as Mosaic to read the | |
437 Octave manual (or any other Info file) by using Roar Smith's info2www | |
438 program to convert GNU Info files to HTML. The source for info2www is | |
439 available via anonymous ftp from ftp.che.wisc.edu in the directory | |
440 @file{/pub/www}. | |
441 | |
442 @node Getting Octave, Installation, Documentation, Top | |
443 @chapter Obtaining Source Code | |
444 | |
445 @cindex Source code | |
446 | |
447 @menu | |
448 * Octave for Unix:: | |
449 * Octave for other platforms:: | |
450 * latest versions:: | |
451 @end menu | |
452 | |
453 @node Octave for Unix, Octave for other platforms, Getting Octave, Getting Octave | |
454 @section How do I get a copy of Octave for Unix? | |
455 | |
456 You can get Octave from a friend who has a copy, by anonymous FTP, or by | |
457 ordering a tape or CD-ROM from the Free Software Foundation (FSF). | |
458 | |
459 @cindex Octave, ordering | |
460 @cindex Octave, getting a copy | |
461 | |
462 Octave was not developed by the FSF, but the FSF does distribute Octave, | |
463 and the developers of Octave support the efforts of the FSF by | |
464 encouraging users of Octave to order Octave on tape or CD directly from | |
465 the FSF. | |
466 | |
467 The FSF is a nonprofit organization that distributes software and | |
468 manuals to raise funds for more GNU development. Buying a tape or CD | |
469 from the FSF contributes directly to paying staff to develop GNU | |
470 software. CD-ROMs cost $400 if an organization is buying, or $100 if an | |
471 individual is buying. Tapes cost around $200 depending on media type. | |
472 | |
473 The FSF only makes new CD releases a few times a year, so if you are | |
474 interested specifically in Octave, I recommend asking for the latest | |
475 release on tape. | |
476 | |
477 @cindex FSF [Free Software Foundation] | |
478 @cindex GNU [GNU's not unix] | |
479 | |
480 For more information about ordering from the FSF, contact | |
481 gnu@@prep.ai.mit.edu, phone (617) 542-5942 or anonymous ftp file | |
482 @file{/pub/gnu/GNUinfo/ORDERS} from prep.ai.mit.edu or one of the sites | |
483 listed below. | |
484 | |
485 @cindex FSF, contact <gnu@@prep.ai.mit.edu> | |
486 @cindex GNUware, anonymous FTP sites | |
487 | |
488 If you are on the Internet, you can copy the latest distribution | |
489 version of Octave from the file @file{/pub/octave/octave-M.N.tar.gz}, on | |
490 the host @file{ftp.che.wisc.edu}. This tar file has been compressed | |
491 with GNU gzip, so be sure to use binary mode for the transfer. @samp{M} | |
492 and @samp{N} stand for version numbers; look at a listing of the | |
493 directory through ftp to see what version is available. After you | |
494 unpack the distribution, be sure to look at the files @file{README} and | |
495 @file{INSTALL}. | |
496 | |
497 Binaries for several popular systems are also available. If you would | |
498 like help out by making binaries available for other systems, please | |
499 contact bug-octave@@bevo.che.wisc.edu. | |
500 | |
501 A list of user-visible changes since the last release is available in | |
502 the file @file{NEWS}. The file @file{ChangeLog} in the source | |
503 distribution contains a more detailed record of changes made since the | |
504 last release. | |
505 | |
506 @node Octave for other platforms, latest versions, Octave for Unix, Getting Octave | |
507 @section How do I get a copy of Octave for (some other platform)? | |
508 | |
509 @cindex VMS support | |
510 @cindex VAX | |
511 @cindex MS-DOS support | |
512 @cindex DJGPP | |
513 @cindex EMX | |
514 @cindex OS/2 support | |
515 | |
516 Octave currently runs on Unix-like systems only. It should be possible | |
517 to make Octave work on other systems. If you are interested in porting | |
518 Octave to other systems, please contact bug-octave@@bevo.che.wisc.edu. | |
519 | |
520 @node latest versions, , Octave for other platforms, Getting Octave | |
521 @section What is the latest version of Octave | |
522 | |
523 @cindex Octave, version date | |
524 | |
525 The latest version of Octave is 1.1.0, released January 1995. | |
526 | |
527 @node Installation, Common problems, Getting Octave, Top | |
528 @chapter Installation Issues and Problems | |
529 | |
530 @cindex Octave, building | |
531 | |
532 Octave requires approximately 50MB of disk storage to unpack and | |
533 install (significantly less if you don't compile with debugging | |
534 symbols). | |
535 | |
536 Octave has been compiled and tested with g++ and libg++ on a | |
537 SPARCstation 2 running SunOS 4.1.2, an IBM RS/6000 running AIX 3.2.5, | |
538 DEC Alpha systems running OSF/1 1.3 and 3.0, a DECstation 5000/240 | |
539 running Ultrix 4.2a, and i486 systems running Linux. It should work on | |
540 most other Unix systems that have a working port of g++ and libg++. | |
541 | |
542 @menu | |
543 * What else do I need?:: | |
544 * Other C++ compilers?:: | |
545 @end menu | |
546 | |
547 @node What else do I need?, Other C++ compilers?, Installation, Installation | |
548 @section What else do I need? | |
549 | |
550 @cindex GNU gcc | |
551 @cindex GNU g++ | |
552 @cindex libg++ | |
553 @cindex GNU Make | |
554 @cindex Flex | |
555 @cindex GNU Bison | |
556 | |
557 In order to build Octave, you will need a current version | |
558 of g++, libg++, and GNU make. If you don't have these tools, you can | |
559 get them from many anonymous ftp archives, including ftp.che.wisc.edu, | |
560 ftp.uu.net, prep.ai.mit.edu, and wuarchive.wustl.edu, or by writing to | |
561 the FSF at 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |
562 | |
563 @node Other C++ compilers?, , What else do I need?, Installation | |
564 @section Can I compile Octave with another C++ compiler? | |
565 | |
566 Currently, Octave can only be compiled with the GNU C++ compiler. It | |
567 would be nice to make it possible to compile Octave with other C++ | |
568 compilers, but the maintainers do not have sufficient time to devote to | |
569 this. If you are interested in working to make Octave portable to other | |
570 compilers, please contact bug-octave@@bevo.che.wisc.edu. | |
571 | |
572 @node Common problems, Getting additional help, Installation, Top | |
573 @chapter Common problems | |
574 | |
575 This list is probably far too short. Feel free to suggest additional | |
576 questions (preferably with answers!) | |
577 | |
578 @itemize @bullet | |
579 @item | |
580 Octave takes a long time to find symbols. | |
581 | |
582 Octave is probably spending this time recursively searching directories | |
583 for function files. Check the value of your LOADPATH. For those | |
584 elements that end in @samp{//}, do any name a very large directory tree? | |
585 Does it contain directories that have a mixture of files and | |
586 directories? In order for the recursive directory searching code to | |
587 work efficiently, directories that are to be searched recursively should | |
588 have either function files only, or subdirectories only, but not a | |
589 mixture of both. Check to make sure that Octave's standard set of | |
590 function files is installed this way. | |
591 @end itemize | |
592 | |
593 @node Getting additional help, Bug reports, Common problems, Top | |
594 @chapter Getting additional help | |
595 | |
596 @cindex Additional help | |
597 @cindex Mailing lists, help-octave | |
598 | |
599 The mailing list | |
600 | |
601 @example | |
602 help-octave@@bevo.che.wisc.edu | |
603 @end example | |
604 | |
605 @noindent | |
606 is available for questions related to using, installing, and porting | |
607 Octave that are not adequately answered by the Octave manual or by this | |
608 document. | |
609 | |
610 If you would like to join the discussion and receive all messages sent | |
611 to the list, please send a short note to | |
612 | |
613 @example | |
614 help-octave-request@@bevo.che.wisc.edu | |
615 ^^^^^^^ | |
616 @end example | |
617 | |
618 @strong{Please do not} send requests to be added or removed from the the | |
619 mailing list, or other administrative trivia to the list itself. | |
620 | |
621 An archive of old postings to the help-octave mailing list is maintained | |
622 on ftp.che.wisc.edu in the directory @file{/pub/octave/MAILING-LISTS}. | |
623 | |
624 @node Bug reports, MATLAB compatibility, Getting additional help, Top | |
625 @chapter I think I have found a bug in Octave. | |
626 | |
627 @cindex Bug in Octave, newly found | |
628 | |
629 ``I think I have found a bug in Octave, but I'm not sure. How do I know, | |
630 and who should I tell?'' | |
631 | |
632 @cindex Manual, for Octave | |
633 | |
634 First, see the section on bugs and bug reports in the Octave manual. | |
635 The Octave manual is included in the Octave distribution. | |
636 | |
637 When you report a bug, make sure to describe the type of computer you | |
638 are using, the version of the operating system it is running, and the | |
639 version of Octave that you are using. Also provide enough code so that | |
640 the Octave maintainers can duplicate your bug. | |
641 | |
642 If you have Octave working at all, the easiest way to do this is to use | |
643 the Octave function @code{bug_report}. When you execute this function, | |
644 Octave will prompt you for a subject and then invoke the editor on a | |
645 file that already contains all the configuration information. When you | |
646 exit the editor, Octave will mail the bug report for you. | |
647 | |
648 @cindex Octave bug report | |
649 @cindex Mailing lists, bug-octave | |
650 | |
651 If for some reason you cannot use Octave's @code{bug_report} function, | |
652 mail your bug report to "bug-octave@@bevo.che.wisc.edu". Your message | |
653 needs to include enough information to allow the maintainers of Octave | |
654 to fix the bug. Please read the section on bugs and bug reports in the | |
655 Octave manual for a list of things that should be included in every bug | |
656 report. | |
657 | |
658 @node MATLAB compatibility, Index, Bug reports, Top | |
659 @chapter Porting programs from @sc{Matlab} to Octave | |
660 | |
661 @cindex @sc{Matlab} compatibility | |
662 @cindex Compatibility with @sc{Matlab} | |
663 | |
664 ``I wrote some code for @sc{Matlab}, and I want to get it running under | |
665 Octave. Is there anything I should watch out for?'' | |
666 | |
667 The differences between Octave and @sc{Matlab} typically fall into one of | |
668 three categories: | |
669 | |
670 @enumerate | |
671 @item | |
672 Irrelevant. | |
673 | |
674 @item | |
675 Known differences, perhaps configurable with a user preference variable. | |
676 | |
677 @item | |
678 Unknown differences. | |
679 @end enumerate | |
680 | |
681 The first category, irrelevant differences, do not affect computations | |
682 and most likely do not affect the execution of function files. Some | |
683 examples are: | |
684 | |
685 When typing @samp{help function}, Octave displays the first set of | |
686 comment lines @emph{after} the function declaration, but @sc{Matlab} | |
687 the first set of comment lines starting from the beginning of the file. | |
688 | |
689 The differences of the second category are usually because the authors | |
690 of Octave decided on a better (subjective) implementation that the way | |
691 @sc{Matlab} does it, and so introduced ``user preference variables'' so that | |
692 you can customize Octave's behavior to be either @sc{Matlab}-compatible or | |
693 to use Octave's new features. To make Octave more @sc{Matlab}-compatible, | |
694 put the following statements in your @file{~/.octaverc} file. This is a | |
695 partial list of the user preference variables that should be changed to | |
696 get @sc{Matlab}-compatible behavior. (It is partial because not all the | |
697 differences are currently known, and when they become known, this | |
698 document lags behind.) | |
699 | |
700 @example | |
701 PS1 = '>> '; | |
702 PS2 = ''; | |
703 default_save_format = 'mat-binary'; | |
704 define_all_return_values = 'true'; | |
705 do_fortran_indexing = 'true'; | |
706 empty_list_elements_ok = 'true'; | |
707 implicit_str_to_num_ok = 'true'; | |
708 ok_to_lose_imaginary_part = 'true'; | |
709 page_screen_output = 'false'; | |
710 prefer_column_vectors = 'false'; | |
711 prefer_zero_one_indexing = 'true'; | |
712 print_empty_dimensions = 'false'; | |
713 treat_neg_dim_as_zero = 'true'; | |
714 warn_function_name_clash = 'false'; | |
715 whitespace_in_literal_matrix = 'traditional'; | |
716 @end example | |
717 | |
718 Some other known differences are: | |
719 | |
720 @itemize @bullet | |
721 @item | |
722 String subscripting is not yet implemented in Octave. For example, | |
723 | |
724 @example | |
725 a = 'reknob'; | |
726 a([6,1,5,3,2,4]) | |
727 @end example | |
728 | |
729 @noindent | |
730 returns the string @samp{broken} in @sc{Matlab}, but generates an error in | |
731 Octave. A future release of Octave will fix this along with providing | |
732 a much more complete and powerful set of functions for manipulating strings. | |
733 | |
734 @item | |
735 The Octave plotting functions are mostly compatible with the ones from | |
736 @sc{Matlab} 3.x, but not from @sc{Matlab} 4.x. | |
737 | |
738 @item | |
739 The C-style I/O functions are not completely compatible. It would be | |
740 useful for someone to explore the differences so that they might be | |
741 fixed, or at least noted in the manual. | |
742 @end itemize | |
743 | |
744 The third category of differences is (hopefully) shrinking. If you find | |
745 a difference between Octave behavior and @sc{Matlab}, then you should send a | |
746 description of this difference (with code illustrating the difference, | |
747 if possible) to bug-octave@@bevo.che.wisc.edu. | |
748 | |
749 An archive of old postings to the Octave mailing lists is maintained | |
750 on ftp.che.wisc.edu in the directory @file{/pub/octave/MAILING-LISTS}. | |
751 | |
752 @node Index, , MATLAB compatibility, Top | |
753 @appendix Concept Index | |
754 | |
755 @printindex cp | |
756 | |
757 @page | |
758 @contents | |
759 @bye |