215
|
1 --- |
|
2 layout: page |
|
3 title: GNU Octave Version 1 |
|
4 menu: false |
|
5 permalink: NEWS-1.html |
|
6 --- |
|
7 |
|
8 ## Summary of important user-visible changes |
|
9 |
|
10 {% include release_news_select.md %} |
|
11 |
|
12 <h2>Summary of changes for version 1.1.1</h2> |
|
13 |
|
14 <pre> |
|
15 * New built-in variables, default_return_value and |
|
16 define_all_return_values. |
|
17 |
|
18 If define_all_return_values is set to "false", Octave does not do |
|
19 anything special for return values that are left undefined, and |
|
20 you will get an error message if you try to use them. For |
|
21 example, if the function |
|
22 |
|
23 function [x, y] = f () |
|
24 y = 1; |
|
25 endfunction |
|
26 |
|
27 is called as |
|
28 |
|
29 octave:13> [a, b] = f () |
|
30 |
|
31 Octave will print an error message for the attempt to assign an |
|
32 undefined value to `a'. |
|
33 |
|
34 This is incompatible with Matlab, which will define the return |
|
35 variable `x' to be the empty matrix. To get the Matlab-like |
|
36 behavior, you can set the variable define_all_return_values to |
|
37 "true" (the default is "false") and default_return_value to `[]' |
|
38 (the default). Then, any return values that remain undefined when |
|
39 the function returns will be initialized to `[]'. |
|
40 |
|
41 If the function is called without explicitly asking for an output, |
|
42 it will succeed. This behavior is compatible and unchanged from |
|
43 previous versions of Octave. |
|
44 |
|
45 * New built-in variable suppress_verbose_help_message. If set to |
|
46 "true", Octave will not add additional help information to the end |
|
47 of the output from the help command and usage messages for |
|
48 built-in commands. The default value is "false". |
|
49 |
|
50 * New built-in variable PS4 is used as the prefix of echoed input |
|
51 (enabled with the --echo-input (-x) option). |
|
52 |
|
53 * The function size() now accepts an optional second argument. |
|
54 |
|
55 * Output from `save - ...' now goes through the pager. |
|
56 |
|
57 * The break statement may also be used to exit a function, for |
|
58 compatibility with Matlab. |
|
59 |
|
60 * The directory tree for installing Octave is now closer to |
|
61 conforming with the current GNU standards. |
|
62 |
|
63 * More bug fixes. |
|
64 </pre> |
|
65 |
|
66 <h2>Summary of changes for version 1.1.0</h2> |
|
67 |
|
68 <pre> |
|
69 * Octave now requires g++ 2.6.3 or later. This change is necessary |
|
70 to make template instantiations cleaner, and to avoid having to |
|
71 have special cases in the code for earlier versions of gcc. |
|
72 |
|
73 * A new data structure type has been added. The implementation uses |
|
74 an associative array with indices limited to strings, but the |
|
75 syntax is more like C-style structures. here are some examples of |
|
76 using it. |
|
77 |
|
78 Elements of structures can be of any type, including structures: |
|
79 |
|
80 octave:1> x.a = 1; |
|
81 octave:2> x.b = [1, 2; 3, 4]; |
|
82 octave:3> x.c = "string"; |
|
83 octave:4> x |
|
84 x = |
|
85 |
|
86 <structure: a b c> |
|
87 |
|
88 octave:5> x.a |
|
89 x.a = 1 |
|
90 octave:6> x.b |
|
91 x.b = |
|
92 |
|
93 1 2 |
|
94 3 4 |
|
95 |
|
96 octave:7> x.c |
|
97 x.c = string |
|
98 octave:8> x.b.d = 3 |
|
99 x.b.d = 3 |
|
100 octave:9> x.b |
|
101 x.b = |
|
102 |
|
103 <structure: d> |
|
104 |
|
105 octave:10> x.b.d |
|
106 x.b.d = 3 |
|
107 |
|
108 Functions can return structures: |
|
109 |
|
110 octave:1> a = rand (3) + rand (3) * I; |
|
111 octave:2> function y = f (x) |
|
112 > y.re = real (x); |
|
113 > y.im = imag (x); |
|
114 > endfunction |
|
115 octave:3> f (a) |
|
116 ans = |
|
117 |
|
118 <structure: im re> |
|
119 |
|
120 octave:4> ans.im |
|
121 ans.im = |
|
122 |
|
123 0.093411 0.229690 0.627585 |
|
124 0.415128 0.221706 0.850341 |
|
125 0.894990 0.343265 0.384018 |
|
126 |
|
127 octave:5> ans.re |
|
128 ans.re = |
|
129 |
|
130 0.56234 0.14797 0.26416 |
|
131 0.72120 0.62691 0.20910 |
|
132 0.89211 0.25175 0.21081 |
|
133 |
|
134 Return lists can include structure elements: |
|
135 |
|
136 octave:1> [x.u, x.s, x.v] = svd ([1, 2; 3, 4]) |
|
137 x.u = |
|
138 |
|
139 -0.40455 -0.91451 |
|
140 -0.91451 0.40455 |
|
141 |
|
142 x.s = |
|
143 |
|
144 5.46499 0.00000 |
|
145 0.00000 0.36597 |
|
146 |
|
147 x.v = |
|
148 |
|
149 -0.57605 0.81742 |
|
150 -0.81742 -0.57605 |
|
151 |
|
152 octave:8> x |
|
153 x = |
|
154 |
|
155 <structure: s u v> |
|
156 |
|
157 This feature should be considered experimental, but it seems to |
|
158 work ok. Suggestions for ways to improve it are welcome. |
|
159 |
|
160 * Octave now supports a limited form of exception handling modelled |
|
161 after the unwind-protect form of Lisp: |
|
162 |
|
163 unwind_protect |
|
164 BODY |
|
165 unwind_protect_cleanup |
|
166 CLEANUP |
|
167 end_unwind_protect |
|
168 |
|
169 Where BODY and CLEANUP are both optional and may contain any |
|
170 Octave expressions or commands. The statements in CLEANUP are |
|
171 guaranteed to be executed regardless of how control exits BODY. |
|
172 |
|
173 This is useful to protect temporary changes to global variables |
|
174 from possible errors. For example, the following code will always |
|
175 restore the original value of the built-in variable |
|
176 do_fortran_indexing even if an error occurs while performing the |
|
177 indexing operation. |
|
178 |
|
179 save_do_fortran_indexing = do_fortran_indexing; |
|
180 unwind_protect |
|
181 do_fortran_indexing = "true"; |
|
182 elt = a (idx) |
|
183 unwind_protect_cleanup |
|
184 do_fortran_indexing = save_do_fortran_indexing; |
|
185 end_unwind_protect |
|
186 |
|
187 Without unwind_protect, the value of do_fortran_indexing would not |
|
188 be restored if an error occurs while performing the indexing |
|
189 operation because evaluation would stop at the point of the error |
|
190 and the statement to restore the value would not be executed. |
|
191 |
|
192 * Recursive directory searching has been implemented using Karl |
|
193 Berry's kpathsea library. Directories below path elements that |
|
194 end in // are searched recursively for .m files. |
|
195 |
|
196 * Octave now waits for additional input when a pair of parentheses |
|
197 is `open' instead of giving an error. This allows one to write |
|
198 statements like this |
|
199 |
|
200 if (big_long_variable_name == other_long_variable_name |
|
201 || not_so_short_variable_name > 4 |
|
202 && y > x) |
|
203 some (code, here); |
|
204 |
|
205 without having to clutter up the if statement with continuation |
|
206 characters. |
|
207 |
|
208 * Continuation lines are now allowed in string constants and are |
|
209 handled correctly inside matrix constants. |
|
210 |
|
211 * Both `...{whitespace}\n' and `\{whitespace}\n' can be used to |
|
212 introduce continuation lines, where {whitespace} may include |
|
213 spaces, tabs and comemnts. |
|
214 |
|
215 * The script directory has been split up by topic. |
|
216 |
|
217 * Dynamic linking mostly works with dld. The following limitations |
|
218 are known problems: |
|
219 |
|
220 -- Clearing dynamically linked functions doesn't work. |
|
221 |
|
222 -- Dynamic linking only works with dld, which has not been ported |
|
223 to very many systems yet. |
|
224 |
|
225 -- Configuring with --enable-lite-kernel seems to mostly work to |
|
226 make nonessential built-in functions dynamically loaded, but |
|
227 there also seem to be some problems. For example, fsolve seems |
|
228 to always return info == 3. This is difficult to debug since |
|
229 gdb won't seem to allow breakpoints to be set inside |
|
230 dynamically loaded functions. |
|
231 |
|
232 -- Octave uses a lot of memory if the dynamically linked functions |
|
233 are compiled with -g. This appears to be a limitation with |
|
234 dld, and can be avoided by not using -g to compile functions |
|
235 that will be linked dynamically. |
|
236 |
|
237 * fft2 and ifft2 are now built-in functions. |
|
238 |
|
239 * The `&&' and `||' logical operators are now evaluated in a |
|
240 short-circuit fashion and work differently than the element by |
|
241 element operators `&' and `|'. See the Octave manual for more |
|
242 details. |
|
243 |
|
244 * Expressions like 1./m are now parsed as 1 ./ m, not 1. / m. |
|
245 |
|
246 * The replot command now takes the same arguments as gplot or |
|
247 gsplot (except ranges, which cannot be respecified with replot |
|
248 (yet)) so you can add additional lines to existing plots. |
|
249 |
|
250 * The hold command has been implemented. |
|
251 |
|
252 * New function `clearplot' clears the plot window. The name `clg' |
|
253 is aliased to `clearplot' for compatibility with Matlab. |
|
254 |
|
255 * The commands `gplot clear' and `gsplot clear' are equivalent to |
|
256 `clearplot'. (Previously, `gplot clear' would evaluate `clear' as |
|
257 an ordinary expression and clear all the visible variables.) |
|
258 |
|
259 * The Matlab-style plotting commands have been improved. They now |
|
260 accept line-style arguments, multiple x-y pairs, and other plot |
|
261 option flags. For example, |
|
262 |
|
263 plot (x, y, "@12", x, y2, x, y3, "4", x, y4, "+") |
|
264 |
|
265 results in a plot with |
|
266 |
|
267 y plotted with points of type 2 ("+") and color 1 (red). |
|
268 y2 plotted with lines. |
|
269 y3 plotted with lines of color 4. |
|
270 y4 plotted with points which are "+"s. |
|
271 |
|
272 the help message for `plot' and `plot_opt' provide full |
|
273 descriptions of the options. |
|
274 |
|
275 * NaN is now dropped from plot data, and Inf is converted to a |
|
276 very large value before calling gnuplot. |
|
277 |
|
278 * Improved load and save commands: |
|
279 |
|
280 -- The save and load commands can now read and write a new binary |
|
281 file format. Conversion to and from IEEE big and little endian |
|
282 formats is handled automatically. Conversion for other formats |
|
283 has not yet been implemented. |
|
284 |
|
285 -- The load command can now read Matlab .mat files, though it is |
|
286 not yet able to read sparse matrices or handle conversion for |
|
287 all data formats. |
|
288 |
|
289 -- The save command can write Matlab .mat files. |
|
290 |
|
291 -- The load command automatically determines the save format |
|
292 (binary, ascii, or Matlab binary). |
|
293 |
|
294 -- The default format for the save command is taken from the |
|
295 built-in variable `default_save_format'. |
|
296 |
|
297 -- The save and load commands now both accept a list of globbing |
|
298 patterns so you can easily load a list of variables from a |
|
299 file. |
|
300 |
|
301 -- The load command now accepts the option -list, for listing the |
|
302 variable names without actually loading the data. With |
|
303 -verbose, it prints a long listing. |
|
304 |
|
305 -- The load command now accepts the option -float-binary, for |
|
306 saving floating point data in binary files in single precision. |
|
307 |
|
308 * who and whos now accept a list of globbing patterns so you can |
|
309 limit the lists of variables and functions to those that match a |
|
310 given set of patterns. |
|
311 |
|
312 * New functions for manipulating polynomials |
|
313 |
|
314 compan -- companion matrix corresponding to polynomial coefficients |
|
315 conv -- convolve two vectors |
|
316 deconv -- deconvolve two vectors |
|
317 roots -- find the roots of a polynomial |
|
318 poly -- characteristic polynomial of a matrix |
|
319 polyderiv -- differentiate a polynomial |
|
320 polyinteg -- integrate a polynomial |
|
321 polyreduce -- reduce a polynomial to minimum number of terms |
|
322 polyval -- evaluate a polynomial at a point |
|
323 polyvalm -- evaluate a polynomial in the matrix sense |
|
324 residue -- partial fraction expansion corresponding to the ratio |
|
325 of two polynomials |
|
326 |
|
327 * New functions for manipulating sets |
|
328 |
|
329 create_set -- create a set of unique values |
|
330 complement -- find the complement of two sets |
|
331 intersection -- find the intersection of two sets |
|
332 union -- find the union of two sets |
|
333 |
|
334 * New elementary functions: |
|
335 |
|
336 acot acoth acsc acsch |
|
337 asec asech cot coth |
|
338 csc csch log2 sec |
|
339 sech |
|
340 |
|
341 * New special functions: |
|
342 |
|
343 beta -- beta function |
|
344 betai -- incomplete beta function |
|
345 gammai -- incomplete gamma function |
|
346 |
|
347 * New image processing functions: |
|
348 |
|
349 colormap -- set and return current colormap |
|
350 gray -- set a gray colormap |
|
351 gray2ind -- image format conversion |
|
352 image -- display an image |
|
353 imagesc -- scale and display an image |
|
354 imshow -- display images |
|
355 ind2gray -- image format conversion |
|
356 ind2rgb -- image format conversion |
|
357 loadimage -- load an image from a file |
|
358 ntsc2rgb -- image format conversion |
|
359 ocean -- set a color colormap |
|
360 rgb2ind -- image format conversion |
|
361 rgb2ntsc -- image format conversion |
|
362 saveimage -- save an image to a file |
|
363 |
|
364 * New time and date funcitons: |
|
365 |
|
366 tic -- set wall-clock timer |
|
367 toc -- get elapsed wall-clock time, since timer last set |
|
368 etime -- another way to get elapsed wall-clock time |
|
369 cputime -- get CPU time used since Octave started |
|
370 is_leap_year -- is the given year a leap year? |
|
371 |
|
372 * Other new functions: |
|
373 |
|
374 bug_report -- submit a bug report to the bug-octave mailing list |
|
375 |
|
376 toascii -- convert a string to a matrix of ASCII character codes |
|
377 |
|
378 octave_tmp_file -- generate a unique temporary file name |
|
379 |
|
380 undo_string_escapes -- replace special characters in a string by |
|
381 their backslash forms |
|
382 |
|
383 is_struct -- determine whether something is a structure data type |
|
384 |
|
385 feof -- check EOF condition for a specified file |
|
386 ferror -- check error state for a specified file |
|
387 fread -- read binary data from a file |
|
388 fwrite -- write binary data to a file |
|
389 |
|
390 file_in_path -- check to see if named file exists in given path |
|
391 |
|
392 kbhit -- get a single character from the terminal |
|
393 |
|
394 axis -- change plot ranges |
|
395 hist -- plot histograms |
|
396 |
|
397 diary -- save commands and output to a file |
|
398 |
|
399 type -- show the definition of a function |
|
400 which -- print the type of an identifier or the location of a |
|
401 function file |
|
402 |
|
403 isieee -- Returns 1 if host uses IEEE floating point |
|
404 realmax -- Returns largest floating point number |
|
405 realmin -- Returns smallest floating point number |
|
406 |
|
407 gcd -- greatest common divisor |
|
408 lcm -- least common multiple |
|
409 |
|
410 null -- orthonormal basis of the null space of a matrix |
|
411 orth -- orthonormal basis of the range space of a matrix |
|
412 |
|
413 fft2 -- two-dimensional fast fourier transform |
|
414 ifft2 -- two-dimensional inverse fast fourier transform |
|
415 filter -- digital filter |
|
416 fftfilt -- filter using fft |
|
417 fftconv -- convolve to vectors using fft |
|
418 sinc -- returns sin(pi*x)/(pi*x) |
|
419 freqz -- compute the frequency response of a filter |
|
420 |
|
421 * The meaning of nargin (== args.length ()) in built-in functions |
|
422 has been changed to match the meaning of nargin in user-defined |
|
423 functions. |
|
424 |
|
425 * Variable return lists. Octave now has a real mechanism for |
|
426 handling functions that return an unspecified number of values, |
|
427 so it is no longer necessary to place an upper bound on the number |
|
428 of outputs that a function can produce. |
|
429 |
|
430 Here is an example of a function that uses the new syntax to |
|
431 produce n values: |
|
432 |
|
433 function [...] = foo (n) |
|
434 for i = 1:n |
|
435 vr_val (i * x); |
|
436 endfor |
|
437 endfunction |
|
438 |
|
439 * New keyword, all_va_args, that allows the entire list of va_args |
|
440 to be passed to another function. For example, given the functions |
|
441 |
|
442 function f (...) |
|
443 while (nargin--) |
|
444 disp (va_arg ()) |
|
445 endwhile |
|
446 endfunction |
|
447 function g (...) |
|
448 f ("begin", all_va_args, "end") |
|
449 endfunction |
|
450 |
|
451 the statement |
|
452 |
|
453 g (1, 2, 3) |
|
454 |
|
455 prints |
|
456 |
|
457 begin |
|
458 1 |
|
459 2 |
|
460 3 |
|
461 end |
|
462 |
|
463 all_va_args may be used more than once, but can only be used |
|
464 within functions that take a variable number of arguments. |
|
465 |
|
466 * If given a second argument, svd now returns an economy-sized |
|
467 decomposition, eliminating the unecessary rows or columns of U or |
|
468 V. |
|
469 |
|
470 * The max and min functions correctly handle complex matrices in |
|
471 which some columns contain real values only. |
|
472 |
|
473 * The find function now handles 2 and 3 output arguments. |
|
474 |
|
475 * The qr function now allows computation of QR with pivoting. |
|
476 |
|
477 * hilb() is much faster for large matrices. |
|
478 |
|
479 * computer() is now a built-in function. |
|
480 |
|
481 * pinv() is now a built-in function. |
|
482 |
|
483 * The output from the history command now goes through the pager. |
|
484 |
|
485 * If a function is called without assigning the result, nargout is |
|
486 now correctly set to 0. |
|
487 |
|
488 * It is now possible to write functions that only set some return |
|
489 values. For example, calling the function |
|
490 |
|
491 function [x, y, z] = f () x = 1; z = 2; endfunction |
|
492 |
|
493 as |
|
494 |
|
495 [a, b, c] = f () |
|
496 |
|
497 produces: |
|
498 |
|
499 a = 1 |
|
500 |
|
501 b = [](0x0) |
|
502 |
|
503 c = 2 |
|
504 |
|
505 * The shell_cmd function has been renamed to system (the name |
|
506 shell_cmd remains for compatibility). It now returns [output, status]. |
|
507 |
|
508 * New built-in variable `OCTAVE_VERSION'. Also a new function, |
|
509 version, for compatibility with Matlab. |
|
510 |
|
511 * New built-in variable `automatic_replot'. If it is "true", Octave |
|
512 will automatically send a replot command to gnuplot each time the |
|
513 plot changes. Since this is fairly inefficient, the default value |
|
514 is "false". |
|
515 |
|
516 * New built-in variable `whitespace_in_literal_matrix' allows some |
|
517 control over how Octave decides to convert spaces to commas in |
|
518 matrix expressions like `[m (1)]'. |
|
519 |
|
520 If the value of `whitespace_in_literal_matrix' is "ignore", Octave |
|
521 will never insert a comma or a semicolon in a literal matrix list. |
|
522 For example, the expression `[1 2]' will result in an error |
|
523 instead of being treated the same as `[1, 2]', and the expression |
|
524 |
|
525 [ 1, 2, |
|
526 3, 4 ] |
|
527 |
|
528 will result in the vector [1 2 3 4] instead of a matrix. |
|
529 |
|
530 If the value of `whitespace_in_literal_matrix' is "traditional", |
|
531 Octave will convert spaces to a comma between identifiers and `('. |
|
532 For example, given the matrix |
|
533 |
|
534 m = [3 2] |
|
535 |
|
536 the expression |
|
537 |
|
538 [m (1)] |
|
539 |
|
540 will be parsed as |
|
541 |
|
542 [m, (1)] |
|
543 |
|
544 and will result in |
|
545 |
|
546 [3 2 1] |
|
547 |
|
548 and the expression |
|
549 |
|
550 [ 1, 2, |
|
551 3, 4 ] |
|
552 |
|
553 will result in a matrix because the newline character is converted |
|
554 to a semicolon (row separator) even though there is a comma at the |
|
555 end of the first line (trailing commas or semicolons are ignored). |
|
556 This is apparently how Matlab behaves. |
|
557 |
|
558 Any other value for `whitespace_in_literal_matrix' results in |
|
559 behavior that is the same as traditional, except that Octave does |
|
560 not convert spaces to a comma between identifiers and `('. |
|
561 For example, the expression |
|
562 |
|
563 [m (1)] |
|
564 |
|
565 will produce 3. This is the way Octave has always behaved. |
|
566 |
|
567 * Line numbers in error messages for functions defined in files and |
|
568 for script files now correspond to the file line number, not the |
|
569 number of lines after the function keyword appeared. |
|
570 |
|
571 * Octave now extracts help from script files. The comments must |
|
572 come before any other statements in the file. |
|
573 |
|
574 * In function files, the first block of comments in the file will |
|
575 now be interpreted as the help text if it doesn't look like the |
|
576 Octave copyright notice. Otherwise, Octave extracts the first set |
|
577 of comments after the function keyword. |
|
578 |
|
579 * The function clock is more accurate on systems that have the |
|
580 gettimeofday() function. |
|
581 |
|
582 * The standard output stream is now automatically flushed before |
|
583 reading from stdin with any of the *scanf() functions. |
|
584 |
|
585 * Expanded reference card. |
|
586 |
|
587 * The Octave distribution now includes a frequently asked questions |
|
588 file, with answers. Better answers and more questions (with |
|
589 answers!) are welcome. |
|
590 |
|
591 * New option --verbose. If Octave is invoked with --verbose and not |
|
592 --silent, a message is printed if an octaverc file is read while |
|
593 Octave is starting. |
|
594 |
|
595 * An improved configure script generated by Autoconf 2.0. |
|
596 |
|
597 * Lots of bug fixes. |
|
598 </pre> |
|
599 |
|
600 <h2>Summary of changes for version 1.0</h2> |
|
601 |
|
602 <pre> |
|
603 * C-style I/O functions now handle files referenced by name or by |
|
604 number more consistently. |
|
605 </pre> |
|
606 |
|
607 <h2>Summary of changes for version 0.83</h2> |
|
608 |
|
609 <pre> |
|
610 * Loading global symbols should work now. |
|
611 |
|
612 * Clearing the screen doesn't reprint the prompt unnecessarily. |
|
613 |
|
614 * The operations <complex scalar> OP <real matrix> for OP == +, -, |
|
615 *, or ./ no longer crash Octave. |
|
616 |
|
617 * More portability and configuration fixes. |
|
618 </pre> |
|
619 |
|
620 <h2>Summary of changes for version 0.82</h2> |
|
621 |
|
622 <pre> |
|
623 * Octave now comes with a reference card. |
|
624 |
|
625 * The manual has been improved, but more work remains to be done. |
|
626 |
|
627 * The atanh function now works for complex arguments. |
|
628 |
|
629 * The asin, acos, acosh, and atanh functions now work properly when |
|
630 given real-valued arguments that produce complex results. |
|
631 |
|
632 * SEEK_SET, SEEK_CUR, and SEEK_END are now constants. |
|
633 |
|
634 * The `using' qualifier now works with gplot and gsplot when the |
|
635 data to plot is coming directly from a file. |
|
636 |
|
637 * The strcmp function now works correctly for empty strings. |
|
638 |
|
639 * Eliminated bogus parse error for M-files that don't end with `end' |
|
640 or `endfunction'. |
|
641 |
|
642 * For empty matrices with one nonzero dimension, the +, -, .*, and |
|
643 ./ operators now correctly preserve the dimension. |
|
644 |
|
645 * Octave no longer crashes if you type ^D at the beginning of a line |
|
646 in the middle of defining a loop or if statement. |
|
647 |
|
648 * On AIX systems, Back off on indexing DiagArray via Proxy class to |
|
649 avoid gcc (or possibly AIX assembler?) bug. |
|
650 |
|
651 * Various other bug and portability fixes. |
|
652 </pre> |
|
653 |
|
654 <h2>Summary of changes for version 0.81</h2> |
|
655 |
|
656 <pre> |
|
657 * Octave no longer dumps core if you try to define a function in |
|
658 your .octaverc file. |
|
659 |
|
660 * Fixed bug in Array class that resulted in bogus off-diagonal |
|
661 elements when computing eigenvalue and singular value |
|
662 decompositions. |
|
663 |
|
664 * Fixed bug that prevented lsode from working on the SPARCstation, |
|
665 at least with some versions of Sun's f77. This bug was introduced |
|
666 in 0.80, when I changed LSODE to allow the user to abort the |
|
667 integration from within the RHS function. |
|
668 |
|
669 * Fixed bug that prevented global attribute of variables from being |
|
670 saved with save(), and another that prevented load() from working |
|
671 at all. |
|
672 </pre> |
|
673 |
|
674 <h2>Summary of changes for version 0.80</h2> |
|
675 |
|
676 <pre> |
|
677 * I have started working on a manual for the C++ classes. At this |
|
678 point, it is little more than a list of function names. If you |
|
679 would like to volunteer to help work on this, please contact |
|
680 bug-octave@bevo.che.wisc.edu. |
|
681 |
|
682 * The patterns accepted by the save and clear commands now work like |
|
683 file name globbing patterns instead of regular expressions. I |
|
684 apologize for any inconvenience this change may cause, but file |
|
685 name globbing seems like a more reasonable style of pattern |
|
686 matching for this purpose. |
|
687 |
|
688 * It is now possible to specify tolerances and other optional inputs |
|
689 for dassl, fsolve, lsode, npsol, qpsol, and quad. For each of |
|
690 these functions, there is a corresponding function X_options, |
|
691 which takes a keyword and value arguments. If invoked without any |
|
692 arguments, the X_options functions print a list of possible |
|
693 keywords and current values. For example, |
|
694 |
|
695 npsol_options () |
|
696 |
|
697 prints a list of possible options with values, and |
|
698 |
|
699 npsol_options ("major print level", 10) |
|
700 |
|
701 sets the major print level to 10. |
|
702 |
|
703 The keyword match is not case sensitive, and the keywords may be |
|
704 abbreviated to the shortest unique match. For example, |
|
705 |
|
706 npsol_options ("ma p", 10) |
|
707 |
|
708 is equivalent to the statement shown above. |
|
709 |
|
710 * The new built-in variable save_precision can be used to set the |
|
711 number of digits preserved by the ASCII save command. |
|
712 |
|
713 * Assignment of [] now works in most cases to allow you to delete |
|
714 rows or columns of matrices and vectors. For example, given a |
|
715 4x5 matrix A, the assignment |
|
716 |
|
717 A (3, :) = [] |
|
718 |
|
719 deletes the third row of A, and the assignment |
|
720 |
|
721 A (:, 1:2:5) = [] |
|
722 |
|
723 deletes the first, third, and fifth columns. |
|
724 |
|
725 * Variable argument lists. Octave now has a real mechanism for |
|
726 handling functions that take an unspecified number of arguments, |
|
727 so it is no longer necessary to place an upper bound on the number |
|
728 of optional arguments that a function can accept. |
|
729 |
|
730 Here is an example of a function that uses the new syntax to print |
|
731 a header followed by an unspecified number of values: |
|
732 |
|
733 function foo (heading, ...) |
|
734 disp (heading); |
|
735 va_start (); |
|
736 while (--nargin) |
|
737 disp (va_arg ()); |
|
738 endwhile |
|
739 endfunction |
|
740 |
|
741 Note that the argument list must contain at least one named |
|
742 argument (this restriction may eventually be removed), and the |
|
743 ellipsis must appear as the last element of the argument list. |
|
744 |
|
745 Calling va_start() positions an internal pointer to the first |
|
746 unnamed argument and allows you to cycle through the arguments |
|
747 more than once. It is not necessary to call va_start() if you |
|
748 do not plan to cycle through the arguments more than once. |
|
749 |
|
750 * Recursive functions should work now. |
|
751 |
|
752 * The environment variable OCTAVE_PATH is now handled in the same |
|
753 way as TeX handles TEXINPUTS. If the path starts with `:', the |
|
754 standard path is prepended to the value obtained from the |
|
755 environment. If it ends with `:' the standard path is appended to |
|
756 the value obtained from the environment. |
|
757 |
|
758 * New functions, from Kurt Hornik (hornik@neuro.tuwien.ac.at) and |
|
759 the Department of Probability Theory and Statistics TU Wien, |
|
760 Austria: |
|
761 |
|
762 corrcoef -- corrcoef (X, Y) is the correlation between the i-th |
|
763 variable in X and the j-th variable in Y |
|
764 corrcoef (X) is corrcoef (X, X) |
|
765 cov -- cov (X, Y) is the covariance between the i-th |
|
766 variable in X and the j-th variable in Y |
|
767 cov (X) is cov (X, X) |
|
768 gls -- generalized least squares estimation |
|
769 kurtosis -- kurtosis(x) = N^(-1) std(x)^(-4) SUM_i (x(i)-mean(x))^4 - 3 |
|
770 If x is a matrix, return the row vector containing |
|
771 the kurtosis of each column |
|
772 mahalanobis -- returns Mahalanobis' D-square distance between the |
|
773 multivariate samples X and Y, which must have the |
|
774 same number of components (columns), but may have |
|
775 a different number of observations (rows) |
|
776 ols -- ordinary least squares estimation |
|
777 pinv -- returns the pseudoinverse of X; singular values |
|
778 less than tol are ignored |
|
779 skewness -- skewness (x) = N^(-1) std(x)^(-3) SUM_i (x(i)-mean(x))^3 |
|
780 if x is a matrix, return the row vector containing |
|
781 the skewness of each column |
|
782 |
|
783 * Errors in user-supplied functions called from dassl, fsolve, |
|
784 lsode, npsol, and quad are handled more gracefully. |
|
785 |
|
786 * Programming errors in the use of the C++ classes within Octave |
|
787 should no longer cause Octave to abort. Instead, Octave's error |
|
788 handler function is called and execution continues as best as is |
|
789 possible. This should result in eventually returning control to |
|
790 the top-level Octave prompt. (It would be nice to have a real |
|
791 exception handling mechanism...) |
|
792 |
|
793 * A number of memory leaks have been eliminated. Thanks to |
|
794 Fong Kin Fui <fui@ee.nus.sg> for reporting them. |
|
795 |
|
796 * The C++ matrix classes are now derived from a generic |
|
797 template-based array class. |
|
798 |
|
799 * The readline function operate-and-get-next (from bash) is now |
|
800 available and bound to C-O by default. |
|
801 |
|
802 * Octave now uses the version of readline currently distributed with |
|
803 bash-1.13. On some systems, interactive invocations of Octave |
|
804 will now blink the cursor to show matching parens. |
|
805 |
|
806 * By default, include files are now installed in |
|
807 $prefix/include/octave instead of $prefix/include. |
|
808 |
|
809 * Octave now uses a config.h file instead of putting all defines on |
|
810 the compiler command line. |
|
811 </pre> |
|
812 |
|
813 <h2>Summary of changes for version 0.79</h2> |
|
814 |
|
815 <pre> |
|
816 * New control systems functions: |
|
817 |
|
818 dgram -- Returns the discrete controllability and observability gramian. |
|
819 dlqr -- Discrete linear quadratic regulator design. |
|
820 dlqe -- Discrete linear quadratic estimator (Kalman Filter) design. |
|
821 c2d -- Convert continuous system description to discrete time |
|
822 description assuming zero-order hold and given sample time. |
|
823 |
|
824 * The max (min) functions can now return the index of the max (min) |
|
825 value as a second return value. |
|
826 </pre> |
|
827 |
|
828 <h2>Summary of changes for version 0.78</h2> |
|
829 |
|
830 <pre> |
|
831 * Octave's handling of global variables has been completely |
|
832 rewritten. To access global variables inside a function, you must |
|
833 now declare them to be global within the function body. Likewise, |
|
834 if you do not declare a variable as global at the command line, |
|
835 you will not have access to it within a function, even if it is |
|
836 declared global there. For example, given the function |
|
837 |
|
838 function f () |
|
839 global x = 1; |
|
840 y = 2; |
|
841 endfunction |
|
842 |
|
843 the global variable `x' is not visible at the top level until the |
|
844 command |
|
845 |
|
846 octave:13> global x |
|
847 |
|
848 has been evaluated, and the variable `y' remains local to the |
|
849 function f() even if it is declared global at the top level. |
|
850 |
|
851 Clearing a global variable at the top level will remove its global |
|
852 scope and leave it undefined. For example, |
|
853 |
|
854 octave:1> function f () # Define a function that accesses |
|
855 > global x; # the global variable `x'. |
|
856 > x |
|
857 > endfunction |
|
858 octave:2> global x = 1 # Give the variable `x' a value. |
|
859 octave:3> f () # Evaluating the function accesses the |
|
860 x = 1 # global `x'. |
|
861 octave:4> clear x # Remove `x' from global scope, clear value. |
|
862 octave:5> x = 2 # Define new local `x' at the top level |
|
863 x = 2 |
|
864 octave:6> f # The global `x' is no longer defined. |
|
865 error: `x' undefined near line 1 column 25 |
|
866 error: evaluating expression near line 1, column 25 |
|
867 error: called from `f' |
|
868 octave:7> x # But the local one is. |
|
869 x = 2 |
|
870 |
|
871 * The new function, `is_global (string)' returns 1 if the variable |
|
872 named by string is globally visible. Otherwise, returns 0. |
|
873 |
|
874 * The implementation of `who' has changed. It now accepts the |
|
875 following options: |
|
876 |
|
877 -b -builtins -- display info for built-in variables and functions |
|
878 -f -functions -- display info for currently compiled functions |
|
879 -v -variables -- display info for user variables |
|
880 -l -long -- display long info |
|
881 |
|
882 The long output looks like this: |
|
883 |
|
884 octave:5> who -l |
|
885 |
|
886 *** currently compiled functions: |
|
887 |
|
888 prot type rows cols name |
|
889 ==== ==== ==== ==== ==== |
|
890 wd user function - - f |
|
891 |
|
892 *** local user variables: |
|
893 |
|
894 prot type rows cols name |
|
895 ==== ==== ==== ==== ==== |
|
896 wd real scalar 1 1 y |
|
897 |
|
898 *** globally visible user variables: |
|
899 |
|
900 prot type rows cols name |
|
901 ==== ==== ==== ==== ==== |
|
902 wd complex matrix 13 13 x |
|
903 |
|
904 where the first character of the `protection' field is `w' if the |
|
905 symbol can be redefined, and `-' if it has read-only access. The |
|
906 second character may be `d' if the symbol can be deleted, or `-' |
|
907 if the symbol cannot be cleared. |
|
908 |
|
909 * The new built-in variable ignore_function_time_stamp can be used |
|
910 to prevent Octave from calling stat() each time it looks up |
|
911 functions defined in M-files. If set to "system", Octave will not |
|
912 automatically recompile M-files in subdirectories of |
|
913 $OCTAVE_HOME/lib/VERSION if they have changed since they were last |
|
914 compiled, but will recompile other M-files in the LOADPATH if they |
|
915 change. If set to "all", Octave will not recompile any M-files |
|
916 unless their definitions are removed with clear. For any other |
|
917 value of ignore_function_time_stamp, Octave will always check to |
|
918 see if functions defined in M-files need to recompiled. The |
|
919 default value of ignore_function_time_stamp is "system". |
|
920 |
|
921 * The new built-in variable EDITOR can be used to specify the editor |
|
922 for the edit_history command. It is set to the value of the |
|
923 environment variable EDITOR, or `vi' if EDITOR is not set, or is |
|
924 empty. |
|
925 |
|
926 * There is a new built-in variable, INFO_FILE, which is used as the |
|
927 location of the info file. Its initial value is |
|
928 $OCTAVE_HOME/info/octave.info, so `help -i' should now work |
|
929 provided that OCTAVE_HOME is set correctly, even if Octave is |
|
930 installed in a directory different from that specified at compile |
|
931 time. |
|
932 |
|
933 * There is a new command line option, --info-file FILE, that may be |
|
934 used to set Octave's idea of the location of the info file. It |
|
935 will override any value of OCTAVE_INFO_FILE found in the |
|
936 environment, but not any INFO_FILE="filename" commands found in |
|
937 the system or user startup files. |
|
938 |
|
939 * Octave's Info reader will now recognize gzipped files that have |
|
940 names ending in `.gz'. |
|
941 |
|
942 * The save command now accepts regular expressions as arguments. |
|
943 Note that these patterns are regular expressions, and do not work |
|
944 like filename globbing. For example, given the variables `a', |
|
945 `aa', and `a1', the command `save a*' saves `a' and `aa' but not |
|
946 `a1'. To match all variables beginning with `a', you must use an |
|
947 expression like `a.*' (match all sequences beginning with `a' |
|
948 followed by zero or more characters). |
|
949 |
|
950 * Line and column information is included in more error messages. |
|
951 </pre> |
|
952 |
|
953 <h2>Summary of changes for version 0.77</h2> |
|
954 |
|
955 <pre> |
|
956 * Improved help. The command `help -i topic' now uses the GNU Info |
|
957 browser to display help for the given topic directly from the |
|
958 Texinfo documenation. |
|
959 |
|
960 * New function: chol -- Cholesky factorization. |
|
961 </pre> |
|
962 |
|
963 <h2>Summary of changes for version 0.76</h2> |
|
964 |
|
965 <pre> |
|
966 * Better run-time error messages. Many now include line and column |
|
967 information indicating where the error occurred. Octave will also |
|
968 print a traceback for errors occurring inside functions. If you |
|
969 find error messages that could use improvement, or errors that |
|
970 Octave fails to catch, please send a bug report to |
|
971 bug-octave@bevo.che.wisc.edu. |
|
972 |
|
973 * If gplot (or gsplot) is given a string to plot, and the string |
|
974 does not name a file, Octave will pass the string along to gnuplot |
|
975 directly. This allows commands like |
|
976 |
|
977 gplot "sin (x)" w l, data w p |
|
978 |
|
979 to work (assuming that data is a variable containing a matrix of |
|
980 values). |
|
981 |
|
982 * Long options (--help, --version, etc.) are supported. |
|
983 </pre> |
|
984 |
|
985 <h2>Summary of changes for version 0.75</h2> |
|
986 |
|
987 <pre> |
|
988 * The documentation is much more complete, but still could use a lot |
|
989 of work. |
|
990 |
|
991 * The history function now prints line numbers by default. The |
|
992 command `history -q' will omit them. |
|
993 |
|
994 * The clear function now accepts regular expressions. |
|
995 |
|
996 * If gplot (or gsplot) is given a string to plot, and the string |
|
997 names a file, Octave attempts to plot the contents of the file. |
|
998 |
|
999 * New functions: |
|
1000 |
|
1001 history: |
|
1002 |
|
1003 run_history -- run commands from the history list. |
|
1004 edit_history -- edit commands from the history list with your |
|
1005 favorite editor. |
|
1006 |
|
1007 linear algebra: |
|
1008 |
|
1009 balance -- Balancing for algebraic and generalized |
|
1010 eigenvalue problems. |
|
1011 givens -- Givens rotation. |
|
1012 is_square -- Check to see if a matrix is square. |
|
1013 qzhess -- QZ decomposition of the matrix pencil (a - lambda b). |
|
1014 qzval -- Generalized eigenvalues for real matrices. |
|
1015 syl -- Sylvester equation solver. |
|
1016 |
|
1017 control systems: |
|
1018 |
|
1019 is_symmetric -- Check to see if a matrix is symmetric. |
|
1020 abcddim -- Check dimensions of linear dynamic system [A,B,C,D]. |
|
1021 is_controllable -- Check to see if [A,B,C,D] is controllable. |
|
1022 is_observable -- Check to see if [A,B,C,D] is observable. |
|
1023 are -- Solve algebraic Ricatti equation. |
|
1024 dare -- Solve discrete-time algebraic Ricatti equation. |
|
1025 lqe -- Kalman filter design for continuous linear system. |
|
1026 lqr -- Linear Quadratic Regulator design. |
|
1027 lyap -- Solve Lyapunov equation. |
|
1028 dlyap -- Solve discrete Lyapunov equation. |
|
1029 tzero -- Compute the transmission zeros of [A,B,C,D]. |
|
1030 </pre> |
|
1031 |
|
1032 <h2>Summary of changes for version 0.74</h2> |
|
1033 |
|
1034 <pre> |
|
1035 * Formal parameters to functions are now always considered to be |
|
1036 local variables, so things like |
|
1037 |
|
1038 global x = 0 |
|
1039 global y = 0 |
|
1040 function y = f (x) x = 1; y = x; end |
|
1041 f (x) |
|
1042 |
|
1043 result in the function returning 1, with the global values of x |
|
1044 and y unchanged. |
|
1045 |
|
1046 * Multiple assignment expressions are now allowed to take indices, |
|
1047 so things like |
|
1048 |
|
1049 octave:13> [a([1,2],[3,4]), b([5,6],[7,8])] = lu ([1,2;3,4]) |
|
1050 |
|
1051 will work correctly. |
|
1052 </pre> |
|
1053 |
|
1054 <h2>Summary of changes for version 0.73</h2> |
|
1055 |
|
1056 <pre> |
|
1057 * Saving and loading global variables works correctly now. |
|
1058 |
|
1059 * The save command no longer saves built-in variables. |
|
1060 |
|
1061 * Global variables are more reliable. |
|
1062 |
|
1063 * Matrices may now have one or both dimensions zero, so that |
|
1064 operations on empty matrices are now handled more consistently. |
|
1065 |
|
1066 By default, dimensions of the empty matrix are now printed along |
|
1067 with the empty matrix symbol, `[]'. For example: |
|
1068 |
|
1069 octave:13> zeros (3, 0) |
|
1070 ans = |
|
1071 |
|
1072 [](3x0) |
|
1073 |
|
1074 The new variable `print_empty_dimensions' controls this behavior. |
|
1075 |
|
1076 See also Carl de Boor, An Empty Exercise, SIGNUM, Volume 25, |
|
1077 pages 2--6, 1990, or C. N. Nett and W. M. Haddad, A |
|
1078 System-Theoretic Appropriate Realization of the Empty Matrix |
|
1079 Concept, IEEE Transactions on Automatic Control, Volume 38, |
|
1080 Number 5, May 1993. |
|
1081 |
|
1082 * The right and left division operators `/' and `\' will now find a |
|
1083 minimum norm solution if the system is not square, or if the |
|
1084 coefficient matrix is singular. |
|
1085 |
|
1086 * New functions: |
|
1087 |
|
1088 hess -- Hessenberg decomposition |
|
1089 schur -- Ordered Schur factorization |
|
1090 perror -- print error messages corresponding to error codes |
|
1091 returned from the functions fsolve, npsol, and qpsol |
|
1092 (with others to possibly be added later). |
|
1093 |
|
1094 * Octave now prints a warning if it finds anything other than |
|
1095 whitespace or comments after the final `end' or `endfunction' |
|
1096 statement. |
|
1097 |
|
1098 * The bodies of functions, and the for, while, and if commands are |
|
1099 now allowed to be empty. |
|
1100 |
|
1101 * Support for Gill and Murray's QPSOL has been added. Like NPSOL, |
|
1102 QPSOL is not freely redistributable either, so you must obtain |
|
1103 your own copy to be able to use this feature. More information |
|
1104 about where to find QPSOL and NPSOL are in the file README.NLP. |
|
1105 </pre> |
|
1106 |
|
1107 <h2>Summary of changes for version 0.72</h2> |
|
1108 |
|
1109 <pre> |
|
1110 * For numeric output, columns are now lined up on the decimal point. |
|
1111 (This requires libg++-2.3.1 or later to work correctly). |
|
1112 |
|
1113 * If octave is running interactively and the output intended for the |
|
1114 screen is longer than one page and a pager is available, it is |
|
1115 sent to the pager through a pipe. You may specify the program to |
|
1116 use as the pager by setting the variable PAGER. PAGER may also |
|
1117 specify a command pipeline. |
|
1118 |
|
1119 * Spaces are not always significant inside square brackets now, so |
|
1120 commands like |
|
1121 |
|
1122 [ linspace (1, 2) ] |
|
1123 |
|
1124 will work. However, some possible sources of confusion remain |
|
1125 because Octave tries (possibly too hard) to determine exactly what |
|
1126 operation is intended from the context surrounding an operator. |
|
1127 For example: |
|
1128 |
|
1129 -- In the command |
|
1130 |
|
1131 [ 1 - 1 ] |
|
1132 |
|
1133 the `-' is treated as a binary operator and the result is the |
|
1134 scalar 0, but in the command |
|
1135 |
|
1136 [ 1 -1 ] |
|
1137 |
|
1138 the `-' is treated as a unary operator and the result is the |
|
1139 vector [ 1 -1 ]. |
|
1140 |
|
1141 -- In the command |
|
1142 |
|
1143 a = 1; [ 1 a' ] |
|
1144 |
|
1145 the single quote character `'' is treated as a transpose operator |
|
1146 and the result is the vector [ 1 1 ], but in the command |
|
1147 |
|
1148 a = 1; [ 1 a ' ] |
|
1149 |
|
1150 an error message indicating an unterminated string constant is |
|
1151 printed. |
|
1152 |
|
1153 * Assignments are just expressions now, so they are valid anywhere |
|
1154 other expressions are. This means that things like |
|
1155 |
|
1156 if (a = n < m) ... endif |
|
1157 |
|
1158 are valid. This is parsed as: compare `n < m', assign the result |
|
1159 to the variable `a', and use it as the test expression in the if |
|
1160 statement. |
|
1161 |
|
1162 To help avoid errors where `=' has been used but `==' was |
|
1163 intended, Octave issues a warning suggesting parenthesis around |
|
1164 assignments used as truth values. You can suppress this warning |
|
1165 by adding parenthesis, or by setting the value of the new built-in |
|
1166 variable `warn_assign_as_truth_value' to 'false' (the default |
|
1167 value is 'true'). |
|
1168 |
|
1169 This is also true for multiple assignments, so expressions like |
|
1170 |
|
1171 [a, b, c] = [u, s, v] = expression |
|
1172 |
|
1173 are now possible. If the expression is a function, nargout is set |
|
1174 to the number of arguments for the right-most assignment. The |
|
1175 other assignments need not contain the same number of elements. |
|
1176 Extra left hand side variables in an assignment become undefined. |
|
1177 |
|
1178 * The default line style for plots is now `lines' instead of |
|
1179 `points'. To change it, use the `set data style STYLE' command. |
|
1180 |
|
1181 * New file handling and I/O functions: |
|
1182 |
|
1183 fopen -- open a file for reading or writing |
|
1184 fclose -- close a file |
|
1185 fflush -- flush output to a file |
|
1186 fgets -- read characters from a file |
|
1187 frewind -- set file position to the beginning of a file |
|
1188 fseek -- set file position |
|
1189 ftell -- tell file position |
|
1190 freport -- print a report for all open files |
|
1191 fscanf -- read from a file |
|
1192 sscanf -- read from a string |
|
1193 scanf -- read from the standard input |
|
1194 |
|
1195 * New built-in variables for file and I/O functions: |
|
1196 |
|
1197 stdin -- file number corresponding to the standard input stream. |
|
1198 stdout -- file number corresponding to the standard output stream. |
|
1199 stderr -- file number corresponding to the standard error stream. |
|
1200 |
|
1201 The following may be used as the final (optional) argument for |
|
1202 fseek: |
|
1203 |
|
1204 SEEK_SET -- set position relative to the beginning of the file. |
|
1205 SEEK_CUR -- set position relative to the current position. |
|
1206 SEEK_END -- set position relative to the end of the file. |
|
1207 |
|
1208 * New function: setstr -- convert vectors or scalars to strings |
|
1209 (doesn't work for matrices yet). |
|
1210 |
|
1211 * If possible, computer now prints the system type instead of |
|
1212 always printing `Hi Dave, I'm a HAL-9000'. |
|
1213 |
|
1214 * Octave now properly saves and restores its internal state |
|
1215 correctly in more places. Interrupting Octave while it is |
|
1216 executing a script file no longer causes it to exit. |
|
1217 |
|
1218 * Octave now does tilde expansion on each element of the LOADPATH. |
|
1219 |
|
1220 * A number of memory leaks have been plugged. |
|
1221 |
|
1222 * Dependencies for C++ source files are now generated automatically |
|
1223 by g++. |
|
1224 |
|
1225 * There is a new command line option, -p PATH, that may be used to |
|
1226 set Octave's loadpath from the command line. It will override any |
|
1227 value of OCTAVE_PATH found in the environment, but not any |
|
1228 LOADPATH="path" commands found in the system or user startup files. |
|
1229 |
|
1230 * It is now possible to override Octave's default idea of the |
|
1231 location of the system-wide startup file (usually stored in |
|
1232 $(prefix)/lib/octave/octaverc) using the environment variable |
|
1233 OCTAVE_HOME. If OCTAVE_HOME has a value, Octave will look for |
|
1234 octaverc and its M-files in the directory $OCTAVE_HOME/lib/octave. |
|
1235 |
|
1236 This allows people who are using binary distributions (as is |
|
1237 common with systems like Linux) to install the real octave binary |
|
1238 in any directory (using a name like octave.bin) and then install |
|
1239 a simple script like this |
|
1240 |
|
1241 #!/bin/sh |
|
1242 OCTAVE_HOME=/foo/bar/baz |
|
1243 export OCTAVE_HOME |
|
1244 exec octave.bin |
|
1245 |
|
1246 to be invoked as octave. |
|
1247 |
|
1248 </pre> |
|
1249 |
|
1250 <h2>Summary of changes for version 0.71</h2> |
|
1251 |
|
1252 <pre> |
|
1253 * Much improved plotting facility. With this release, Octave does |
|
1254 not require a specially modified version of gnuplot, so gnuplot |
|
1255 sources are no longer distributed with Octave. For a more |
|
1256 detailed description of the new plotting features, see the file |
|
1257 PLOTTING. |
|
1258 |
|
1259 * New plotting commands: |
|
1260 |
|
1261 plot -- 2D plots |
|
1262 semilogx -- 2D semilog plot with logscale on the x axis |
|
1263 semilogy -- 2D semilog plot with logscale on the y axis |
|
1264 loglog -- 2D log-log plot |
|
1265 mesh -- 3D mesh plot |
|
1266 meshdom -- create matrices for 3D plotting from two vectors |
|
1267 contour -- contour plots of 3D data |
|
1268 bar -- create bar graphs |
|
1269 stairs -- create stairstep plots |
|
1270 polar -- 2D plots from theta-R data |
|
1271 grid -- turn plot grid lines on or off |
|
1272 xlabel, ylabel -- place labels on the x and y axes of 2D plots |
|
1273 sombrero -- demonstrate 3D plotting |
|
1274 gplot -- 2D plot command with gnuplot-like syntax |
|
1275 gsplot -- 3D plot command with gnuplot-like syntax |
|
1276 set -- set plot options with gnuplot syntax |
|
1277 show -- show plot options with gnuplot syntax |
|
1278 closeplot -- close stream to gnuplot process |
|
1279 purge_tmp_files -- delete temporary files created by plot command |
|
1280 |
|
1281 * Other new commands: |
|
1282 |
|
1283 ls, dir -- print a directory listing |
|
1284 shell_cmd -- execute shell commands |
|
1285 keyboard -- get input from keyboard, useful for debugging |
|
1286 menu -- display a menu of options and ask for input |
|
1287 fft -- fast fourier transform |
|
1288 ifft -- inverse fast fourier transform |
|
1289 |
|
1290 * Strings may be enclosed in either single or double quote |
|
1291 characters. Double quote characters are not special within single |
|
1292 quote strings, and single quotes are not special within double |
|
1293 quote strings. |
|
1294 |
|
1295 * Command name completion now works for M-file names too. |
|
1296 |
|
1297 * Better help and usage messages for many functions. |
|
1298 |
|
1299 * Help is now available for functions defined in M-files. The first |
|
1300 block of comments is taken as the text of the help message. |
|
1301 |
|
1302 * Numerous changes in preparation to support dynamic loading of |
|
1303 object files with dld. |
|
1304 |
|
1305 * Bug fixes to make solving DAEs with dassl actually work. |
|
1306 |
|
1307 * The command `save file' now saves all variables in the named file. |
|
1308 |
|
1309 * If do_fortran_indexing is 'true', indexing a scalar with |
|
1310 [1,1,1,...] (n times) replicates its value n times. The |
|
1311 orientation of the resulting vector depends on the value of |
|
1312 prefer_column_vectors. |
|
1313 |
|
1314 * Things like [[1,2][3,4]] no longer cause core dumps, and invalid |
|
1315 input like [1,2;3,4,[5,6]] now produces a diagnositic message. |
|
1316 |
|
1317 * The cd, save, and load commands now do tilde expansion. |
|
1318 |
|
1319 * It's now possible to clear global variables and functions by name. |
|
1320 |
|
1321 * Use of clear inside functions is now a parse error. |
|
1322 </pre> |
|
1323 |
|
1324 <h2>Summary of changes for version 0.70</h2> |
|
1325 |
|
1326 <pre> |
|
1327 * Better parse error diagnostics. For interactive input, you get |
|
1328 messages like |
|
1329 |
|
1330 octave:1> a = 3 + * 4; |
|
1331 |
|
1332 parse error: |
|
1333 |
|
1334 a = 3 + * 4; |
|
1335 ^ |
|
1336 |
|
1337 and for script files, the message includes the file name and input |
|
1338 line number: |
|
1339 |
|
1340 octave:1> foo |
|
1341 |
|
1342 parse error near line 4 of file foo.m: |
|
1343 |
|
1344 a = 3 + * 4; |
|
1345 ^ |
|
1346 |
|
1347 * New built-in variable PS2 which is used as the secondary prompt. |
|
1348 The default value is '> '. |
|
1349 |
|
1350 * New file, octave-mode.el, for editing Octave code with GNU Emacs. |
|
1351 This is a modified version of Matthew R. Wette's matlab-mode.el. |
|
1352 |
|
1353 * Better support for missing math functions. |
|
1354 |
|
1355 * User preferences are now cached in a global struct so we don't |
|
1356 have to do a symbol table lookup each time we need to know what |
|
1357 they are. This should mean slightly improved performance for |
|
1358 evaluating expressions. |
|
1359 </pre> |
|
1360 |
|
1361 <h2>Summary of changes for version 0.69</h2> |
|
1362 |
|
1363 <pre> |
|
1364 * Multiple assignments are now possible, so statements like |
|
1365 |
|
1366 a = b = c = 3; |
|
1367 a = b = c = [1,2;3,4]; |
|
1368 |
|
1369 or |
|
1370 |
|
1371 c = (a = (b = 2) * 3 + 4) * 5 |
|
1372 |
|
1373 are legal, as are things that have even more bizarre effects, like |
|
1374 |
|
1375 a(4:6,4:6) = b(2:3,2:3) = [1,2;3,4]; |
|
1376 |
|
1377 (try it). |
|
1378 |
|
1379 * Improved parsing of strings (but they still don't work as matrix |
|
1380 elements). |
|
1381 |
|
1382 * An M-file may now either define a function or be a list of |
|
1383 commands to execute. |
|
1384 |
|
1385 * Better detection and conditional compilation of IEEE functions |
|
1386 isinf, finite, and isnan. |
|
1387 |
|
1388 * Replacements for acosh, asinh, atanh, and gamma from the BSD math |
|
1389 library for those systems that don't have them. |
|
1390 </pre> |
|
1391 |
|
1392 <h2>Summary of changes for version 0.68</h2> |
|
1393 |
|
1394 <pre> |
|
1395 * New functions: |
|
1396 |
|
1397 eval -- evaluate a string as a sequence of Octave commands. |
|
1398 input -- print a prompt and get user input. |
|
1399 </pre> |
|
1400 |
|
1401 <h2>Summary of changes for version 0.67</h2> |
|
1402 |
|
1403 <pre> |
|
1404 * New functions: |
|
1405 |
|
1406 find -- return the indices of nonzero elements. |
|
1407 |
|
1408 * Zero-one style indexing now works. For example, |
|
1409 |
|
1410 a = [1,2,3,4]; |
|
1411 b = a([1,0,0,1]) |
|
1412 |
|
1413 sets b to the first and fourth elememnts of a. |
|
1414 |
|
1415 Zero-one style indexing also works for indexing the left hand side |
|
1416 of an assignment. For example, |
|
1417 |
|
1418 a = rand (1,2;3,4); |
|
1419 a([0,1],:) = [-1,-2] |
|
1420 |
|
1421 sets the second row of a to [-1 -2] |
|
1422 |
|
1423 The behavior for the ambiguous case |
|
1424 |
|
1425 a = [1,2,3,4]; |
|
1426 b = a([1,1,1,1]); |
|
1427 |
|
1428 is controlled by the new global variable `prefer_zero_one_indexing'. |
|
1429 If this variable is equal to 'true', b will be set to [1 2 3 4]. |
|
1430 If it is false, b will be set to [1 1 1 1]. The default value is |
|
1431 'false'. |
|
1432 |
|
1433 * Using the new global variable `propagate_empty_matrices', it is |
|
1434 possible to have unary andy binary operations on empty matrices |
|
1435 return an empty matrix. The default value of this variable is |
|
1436 'warn', so that empty matrices are propagated but you get a |
|
1437 warning. Some functions, like eig and svd have also been changed |
|
1438 to handle this. |
|
1439 |
|
1440 * Empty matrices can be used in conditionals, but they always |
|
1441 evaluate to `false'. With propagate_empty_matrices = 'true', both |
|
1442 of the following expressions print 0: |
|
1443 |
|
1444 if [], 1, else 0, end |
|
1445 if ~[], 1, else 0, end |
|
1446 |
|
1447 * Octave no longer converts input like `3.2 i' or `3 I' to complex |
|
1448 constants directly because that causes problems inside square |
|
1449 brackets, where spaces are important. This abbreviated notation |
|
1450 *does* work if there isn't a space between the number and the i, |
|
1451 I, j, or J. |
|
1452 </pre> |
|
1453 |
|
1454 <h2>Summary of changes for version 0.66</h2> |
|
1455 |
|
1456 <pre> |
|
1457 * Logical unary not operator (~ or !) now works for complex. |
|
1458 |
|
1459 * Left division works. |
|
1460 |
|
1461 * Right and left element by element division should work correctly |
|
1462 now. |
|
1463 |
|
1464 * Numbers like .3e+2 are no longer errors. |
|
1465 |
|
1466 * Indexing a matrix with a complex value doesn't cause a core dump. |
|
1467 |
|
1468 * The min and max functions should work correctly for two arguments. |
|
1469 |
|
1470 * Improved (I hope!) configuration checks. |
|
1471 |
|
1472 * Octave is now installed as octave-M.N, where M and N are version |
|
1473 numbers, and octave is a link to that file. This makes it |
|
1474 possible to have more than one version of the interpreter installed. |
|
1475 </pre> |
|
1476 |
|
1477 <h2>Summary of changes for version 0.63</h2> |
|
1478 |
|
1479 <pre> |
|
1480 * The reshape function works again. |
|
1481 |
|
1482 * Octave now converts input like `3.2i' or `3 I' or `2.3e5 j' to be |
|
1483 complex constants directly, rather than requiring an expression |
|
1484 like `3.3 * i' to be evaluated. |
|
1485 </pre> |
|
1486 |
|
1487 <h2>Summary of changes for version 0.61</h2> |
|
1488 |
|
1489 <pre> |
|
1490 * Octave has been successfully compiled using gcc 2.3.3 and libg++ 2.3. |
|
1491 on a 486 system running Linux. |
|
1492 |
|
1493 * The win_texas_lotto function is now called texas_lotto (it's a |
|
1494 script file, and win_texas_lotto.m is too long for some Linux and |
|
1495 System V systems). |
|
1496 </pre> |
|
1497 |
|
1498 <h2>Summary of changes for version 0.57</h2> |
|
1499 |
|
1500 <pre> |
|
1501 * The C-like formatted print functions printf, fprintf, and sprintf |
|
1502 finally work. |
|
1503 </pre> |
|
1504 |
|
1505 <h2>Summary of changes for version 0.56</h2> |
|
1506 |
|
1507 <pre> |
|
1508 * By default, octave prints a short disclaimer when it starts. |
|
1509 (You can suppress it by invoking octave with -q). |
|
1510 |
|
1511 * You can keep octave from reading your ~/.octaverc and .octaverc |
|
1512 files by invoking it with -f. |
|
1513 |
|
1514 * When returning two values, eig now returns [v, d] instead of |
|
1515 [lambda, v], where d is a diagonal matrix made from lambda. |
|
1516 |
|
1517 * The win_texas_lotto function now produces a sorted list. |
|
1518 |
|
1519 * New functions: |
|
1520 |
|
1521 expm -- matrix exponential. |
|
1522 logm -- matrix logarithm. |
|
1523 </pre> |
|
1524 |
|
1525 <h2>Summary of changes for version 0.55</h2> |
|
1526 |
|
1527 <pre> |
|
1528 * The following (C-style) backslash escape sequences work in quoted |
|
1529 strings (useful(?) with printf()): |
|
1530 |
|
1531 \a bell \r carriage return |
|
1532 \b backspace \t horizontal tab |
|
1533 \f formfeed \v vertical tab |
|
1534 \n newline \\ backslash |
|
1535 |
|
1536 * Use of `...' at the end of a line will allow a statement to |
|
1537 continue over more than one line. |
|
1538 |
|
1539 * The names `inf' and `nan' are now aliases for `Inf' and `NaN', |
|
1540 respectively. |
|
1541 |
|
1542 * New functions: |
|
1543 |
|
1544 casesen -- print a warning if the luser tries to turn off case |
|
1545 sensitivity. |
|
1546 median -- find median value. |
|
1547 norm -- compute the norm of a matrix. |
|
1548 sort -- sort columns. |
|
1549 |
|
1550 * New variable, `silent_functions'. If silent_functions == 'true', |
|
1551 the results of expressions are not printed even if they are not |
|
1552 followed by a semicolon. The disp() and printf() functions still |
|
1553 result in output. The default value for this variable is 'false'. |
|
1554 |
|
1555 * New variable `return_last_value_computed'. If it is 'true', |
|
1556 functions defined in script files return the last value computed |
|
1557 if a return value has not been explicitly declared. The default |
|
1558 value for this variable is 'false'. |
|
1559 </pre> |
|
1560 |
|
1561 <h2>Summary of changes for version 0.52</h2> |
|
1562 |
|
1563 <pre> |
|
1564 * Name completion works for function and variable names currently in |
|
1565 the symbol tables. Coming soon: completion for names of functions |
|
1566 defined in script files but not yet compiled. |
|
1567 |
|
1568 * The initial value of do_fortran_indexing is now false, and the |
|
1569 initial value of prefer_column_vectors is now true. Swap the |
|
1570 values of these variables if you want behavior that is more like |
|
1571 Matlab. |
|
1572 |
|
1573 * All script files check the number of input arguments before doing |
|
1574 much real work. |
|
1575 |
|
1576 * The identifiers `i' and `j' are now also names for sqrt(-1). |
|
1577 These symbols may be used for other purposes, but their original |
|
1578 definition will reappear if they are cleared. |
|
1579 |
|
1580 * The symbol tables are now implemented with hash tables for faster |
|
1581 searching. |
|
1582 |
|
1583 * A small amount of help is now available for most built-in |
|
1584 operators, keywords and functions. Coming soon: help for script |
|
1585 files. |
|
1586 |
|
1587 * Without any arguments, the help command now lists all known |
|
1588 built-in operators, keywords and functions. |
|
1589 |
|
1590 * Generic parse errors are now signalled by `Eh, what's up doc?', |
|
1591 which is closer to what Bugs actually says. |
|
1592 |
|
1593 * The who command now only prints variable names by default. |
|
1594 Use the -fcn (or -fcns, or -functions) switch to print the names of |
|
1595 built-in or currently compiled functions. |
|
1596 </pre> |
|
1597 |
|
1598 <h2>Summary of changes for version 0.51</h2> |
|
1599 |
|
1600 <pre> |
|
1601 * Major overhaul of array indexing. |
|
1602 |
|
1603 * The colloc function actually works now. |
|
1604 </pre> |
|
1605 |
|
1606 <h2>Summary of changes for version 0.50</h2> |
|
1607 |
|
1608 <pre> |
|
1609 * The lsode and dassl functions now return the states only, |
|
1610 instead of the time and the states, so you must keep track of |
|
1611 the corresponding times (this is easy though, because you have |
|
1612 to specify a vector of desired output times anyway). |
|
1613 |
|
1614 * Solution of NLPs with NPSOL now works on the SPARC. |
|
1615 |
|
1616 * New keywords `endif', `endfor', `endfunction', `endif', and |
|
1617 `endwhile', which allow for better diagnostics. The `end' keyword |
|
1618 is still recognized. All script files have been changed to use |
|
1619 these new keywords in place of `end'. |
|
1620 |
|
1621 * It is now possible to uninstall Octave by doing a `make uninstall' |
|
1622 in the top level directory. |
|
1623 |
|
1624 * The Makefiles are much closer to conforming with GNU coding standards. |
|
1625 |
|
1626 * New functions: |
|
1627 |
|
1628 win_texas_lotto -- produce six unique random numbers between 1 and 50. |
|
1629 quad -- numerical integration. |
|
1630 lu -- LU factorization |
|
1631 qr -- QR factorization |
|
1632 dassl -- Solution of DAEs using DASSL. |
|
1633 |
|
1634 * New files: |
|
1635 |
|
1636 THANKS -- A list of people and organazations who have supported |
|
1637 the development of Octave. |
|
1638 |
|
1639 NEWS -- This file, listing recent changes. |
|
1640 |
|
1641 * Help is now available at the gnuplot prompt. |
|
1642 </pre> |