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