Mercurial > octave-nkf
comparison etc/NEWS.3 @ 18048:46c131e5676e
NEWS: Save old NEWS in NEWS.3. New NEWS file for 4.0 release.
* NEWS: Update NEWS to describe 4.0 release.
* etc/NEWS.3: Copy down 3.X relevant information from NEWS file
author | Rik <rik@octave.org> |
---|---|
date | Mon, 02 Dec 2013 13:07:38 -0800 |
parents | b67c2d580a25 |
children | 3fef9a2d2550 |
comparison
equal
deleted
inserted
replaced
18047:bc0195254fdb | 18048:46c131e5676e |
---|---|
1 Summary of important user-visible changes for version 3.8: | |
2 --------------------------------------------------------- | |
3 | |
4 ** One of the biggest new features for Octave 3.8 is a graphical user | |
5 interface. It is the one thing that users have requested most | |
6 often over the last few years and now it is almost ready. But | |
7 because it is not quite as polished as we would like, we have | |
8 decided to wait until the 4.0.x release series before making the | |
9 GUI the default interface (until then, you can use the --force-gui | |
10 option to start the GUI). | |
11 | |
12 Given the length of time and the number of bug fixes and | |
13 improvements since the last major release Octave, we also decided | |
14 against delaying the release of all these new improvements any | |
15 longer just to perfect the GUI. So please enjoy the 3.8 release of | |
16 Octave and the preview of the new GUI. We believe it is working | |
17 reasonably well, but we also know that there are some obvious rough | |
18 spots and many things that could be improved. | |
19 | |
20 WE NEED YOUR HELP. There are many ways that you can help us fix | |
21 the remaining problems, complete the GUI, and improve the overall | |
22 user experience for both novices and experts alike: | |
23 | |
24 * If you are a skilled software developer, you can help by | |
25 contributing your time to help with Octave's development. See | |
26 http://octave.org/get-involved.html for more information. | |
27 | |
28 * If Octave does not work properly, you are encouraged | |
29 report the problems you find. See http://octave.org/bugs.html | |
30 for more information about how to report problems. | |
31 | |
32 * Whether you are a user or developer, you can help to fund the | |
33 project. Octave development takes a lot of time and expertise. | |
34 Your contributions help to ensure that Octave will continue to | |
35 improve. See http://octave.org/donate.html for more details. | |
36 | |
37 We hope you find Octave to be useful. Please help us make it even | |
38 better for the future! | |
39 | |
40 ** Octave now uses OpenGL graphics by default with FLTK widgets. If | |
41 OpenGL libraries or FLTK widgets are not available when Octave is | |
42 built, gnuplot is used. You may also choose to use gnuplot for | |
43 graphics by executing the command | |
44 | |
45 graphics_toolkit ("gnuplot") | |
46 | |
47 Adding this command to your ~/.octaverc file will set the default | |
48 for each session. | |
49 | |
50 ** Printing or saving figures with OpenGL graphics requires the | |
51 gl2ps library which is no longer distributed with Octave. The | |
52 software is widely available in most package managers. If a | |
53 pre-compiled package does not exist for your system, you can find | |
54 the current sources at http://www.geuz.org/gl2ps/. | |
55 | |
56 ** Octave now supports nested functions with scoping rules that are | |
57 compatible with Matlab. A nested function is one declared and defined | |
58 within the body of another function. The nested function is only | |
59 accessible from within the enclosing function which makes it one | |
60 method for making private functions whose names do not conflict with those | |
61 in the global namespace (See also subfunctions and private functions). | |
62 In addition, variables in the enclosing function are visible within the | |
63 nested function. This makes it possible to have a pseudo-global variable | |
64 which can be seen by a group of functions, but which is not visible in | |
65 the global namespace. | |
66 | |
67 Example: | |
68 function outerfunc (...) | |
69 ... | |
70 function nested1 (...) | |
71 ... | |
72 function nested2 (...) | |
73 ... | |
74 endfunction | |
75 endfunction | |
76 | |
77 function nested3 (...) | |
78 ... | |
79 endfunction | |
80 endfunction | |
81 | |
82 ** Line continuations inside character strings have changed. | |
83 | |
84 The sequence '...' is no longer recognized as a line continuation | |
85 inside a character string. A backslash '\' followed by a newline | |
86 character is no longer recognized as a line continuation inside | |
87 single-quoted character strings. Inside double-quoted character | |
88 strings, a backslash followed by a newline character is still | |
89 recognized as a line continuation, but the backslash character must | |
90 be followed *immediately* by the newline character. No whitespace or | |
91 end-of-line comment may appear between them. | |
92 | |
93 ** Backslash as a continuation marker outside of double-quoted strings | |
94 is now deprecated. | |
95 | |
96 Using '\' as a continuation marker outside of double quoted strings | |
97 is now deprecated and will be removed from a future version of | |
98 Octave. When that is done, the behavior of | |
99 | |
100 (a \ | |
101 b) | |
102 | |
103 will be consistent with other binary operators. | |
104 | |
105 ** Redundant terminal comma accepted by parser | |
106 | |
107 A redundant terminal comma is now accepted in matrix | |
108 definitions which allows writing code such as | |
109 | |
110 [a,... | |
111 b,... | |
112 c,... | |
113 ] = deal (1,2,3) | |
114 | |
115 ** Octave now has limited support for named exceptions | |
116 | |
117 The following syntax is now accepted: | |
118 | |
119 try | |
120 statements | |
121 catch exception-id | |
122 statements | |
123 end | |
124 | |
125 The exception-id is a structure with the fields "message" and | |
126 "identifier". For example | |
127 | |
128 try | |
129 error ("Octave:error-id", "error message"); | |
130 catch myerr | |
131 printf ("identifier: %s\n", myerr.identifier); | |
132 printf ("message: %s\n", myerr.message); | |
133 end_try_catch | |
134 | |
135 When classdef-style classes are added to Octave, the exception-id | |
136 will become an MException object. | |
137 | |
138 ** Warning states may now be set temporarily, until the end of the | |
139 current function, using the syntax | |
140 | |
141 warning STATE ID "local" | |
142 | |
143 in which STATE may be "on", "off", or "error". Changes to warning | |
144 states that are set locally affect the current function and all | |
145 functions called from the current scope. The previous warning state | |
146 is restored on return from the current function. The "local" | |
147 option is ignored if used in the top-level workspace. | |
148 | |
149 ** Warning IDs renamed: | |
150 | |
151 Octave:array-as-scalar => Octave:array-to-scalar | |
152 Octave:array-as-vector => Octave:array-to-vector | |
153 | |
154 ** 'emptymatch', 'noemptymatch' options added to regular expressions. | |
155 | |
156 With this addition Octave now accepts the entire set of Matlab options | |
157 for regular expressions. 'noemptymatch' is the default, but 'emptymatch' | |
158 has certain uses where you need to match an assertion rather than actual | |
159 characters. For example, | |
160 | |
161 regexprep ('World', '^', 'Hello ', 'emptymatch') | |
162 => Hello World | |
163 | |
164 where the pattern is actually the assertion '^' or start-of-line. | |
165 | |
166 ** For compatibility with Matlab, the regexp, regexpi, and regexprep | |
167 functions now process backslash escape sequences in single-quoted pattern | |
168 strings. In addition, the regexprep function now processes backslash | |
169 escapes in single-quoted replacement strings. For example, | |
170 | |
171 regexprep (str, '\t', '\n') | |
172 | |
173 would search the variable str for a TAB character (escape sequence \t) | |
174 and replace it with a NEWLINE (escape sequence \n). Previously the | |
175 expression would have searched for a literal '\' followed by 't' and | |
176 replaced the two characters with the sequence '\', 'n'. | |
177 | |
178 ** A TeX parser has been implemented for the FLTK toolkit and is the default | |
179 for any text object including titles and axis labels. The TeX parser is | |
180 supported only for display on a monitor, not for printing. | |
181 | |
182 A quick summary of features: | |
183 | |
184 Code Feature Example Comment | |
185 ----------------------------------------------------------------- | |
186 _ subscript H_2O formula for water | |
187 ^ exponent y=x^2 formula for parabola | |
188 \char symbol \beta Greek symbol beta | |
189 \fontname font \fontname{Arial} set Arial font | |
190 \fontsize fontsize \fontsize{16} set fontsize 16 | |
191 \color[rgb] fontcolor \color[rgb]{1 0 1} set magenta color | |
192 \bf bold \bfBold Text bold font | |
193 \it italic \itItalic Text italic font | |
194 \sl slanted \slOblique Text slanted font | |
195 \rm normal \bfBold\rmNormal normal font | |
196 {} group {\bf Bold}Normal group objects | |
197 e^{i*\pi} = -1 group objects | |
198 | |
199 ** The m-files in the plot directory have been overhauled. | |
200 | |
201 The plot functions now produce output that is nearly visually compatible | |
202 with Matlab. Plot performance has also increased, dramatically for some | |
203 functions such as comet and waitbar. Finally, the documentation for most | |
204 functions has been updated so it should be clearer both how to use a | |
205 function and when a function is appropriate. | |
206 | |
207 ** The m-files in the image directory have been overhauled. | |
208 | |
209 The principal benefit is that Octave will now no longer automatically | |
210 convert images stored with integers to doubles. Storing images as uint8 | |
211 or uint16 requires only 1/8 or 1/4 the memory of an image stored using | |
212 doubles. For certain operations, such as fft2, the image must still be | |
213 converted to double in order to work. | |
214 | |
215 Other changes include fixes to the way indexed images are read from a | |
216 colormap depending on the image class (integer images have a -1 offset to | |
217 the colormap row number). | |
218 | |
219 ** The imread and imwrite functions have been completely rewritten. | |
220 | |
221 The main changes relate to the alpha channel, support for reading and | |
222 writing of floating point images, implemented writing of indexed images, | |
223 and appending images to multipage image files. | |
224 | |
225 The issues that may arise due to backwards incompatibility are: | |
226 | |
227 * imwrite no longer interprets a length of 2 or 4 in the third dimension | |
228 as grayscale or RGB with alpha channel (a length of 4 will be saved | |
229 as a CMYK image). Alpha channel must be passed as separate argument. | |
230 | |
231 * imread will always return the colormap indexes when reading an indexed | |
232 image, even if the colormap is not requested as output. | |
233 | |
234 * transparency values are now inverted from previous Octave versions | |
235 (0 is for completely transparent instead of completely opaque). | |
236 | |
237 In addition, the function imformats has been implemented to expand | |
238 reading and writing of images of different formats through imread | |
239 and imwrite. | |
240 | |
241 ** The colormap function now provides new options--"list", "register", | |
242 and "unregister"--to list all available colormap functions, and to | |
243 add or remove a function name from the list of known colormap | |
244 functions. Packages that implement extra colormaps should use these | |
245 commands with PKG_ADD and PKG_DEL statements. | |
246 | |
247 ** strsplit has been modified to be compatible with Matlab. There | |
248 are two instances where backward compatibility is broken. | |
249 | |
250 (1) Delimiters are now string vectors, not scalars. | |
251 | |
252 Octave's legacy behavior | |
253 | |
254 strsplit ("1 2, 3", ", ") | |
255 ans = | |
256 { | |
257 [1,1] = 1 | |
258 [1,2] = 2 | |
259 [1,3] = | |
260 [1,4] = 3 | |
261 } | |
262 | |
263 Matlab compatible behavior | |
264 | |
265 strsplit ("1 2, 3", ", ") | |
266 ans = | |
267 { | |
268 [1,1] = 1 2 | |
269 [1,2] = 3 | |
270 } | |
271 | |
272 (2) By default, Matlab treats consecutive delimiters as a single | |
273 delimiter. By default, Octave's legacy behavior was to return an | |
274 empty string for the part between the delmiters. | |
275 | |
276 Where legacy behavior is desired, the call to strsplit() may be | |
277 replaced by ostrsplit(), which is Octave's original implementation of | |
278 strsplit(). | |
279 | |
280 ** The datevec function has been extended for better Matlab compatibility. | |
281 It now accepts string inputs in the following numerical formats: 12, 21, | |
282 22, 26, 29, 31. This is undocumented, but verifiable, Matlab behavior. | |
283 In addition, the default for formats which do not specify a date is | |
284 January 1st of the current year. The previous default was the current day, | |
285 month, and year. This may produce changes in existing scripts. | |
286 | |
287 ** The error function and its derivatives has been extended to accept complex | |
288 arguments. The following functions now accept complex inputs: | |
289 | |
290 erf erfc erfcx | |
291 | |
292 In addition two new error functions erfi (imaginary error function) and | |
293 dawson (scaled imaginary error function) have been added. | |
294 | |
295 ** The glpk function has been modified to reflect changes in the GLPK | |
296 library. The "round" and "itcnt" options have been removed. The | |
297 "relax" option has been replaced by the "rtest" option. The numeric | |
298 values of error codes and of some options have also changed. | |
299 | |
300 ** The kurtosis function has changed definition to be compatible with | |
301 Matlab. It now returns the base kurtosis instead of the "excess kurtosis". | |
302 The old behavior can be had by changing scripts to normalize with -3. | |
303 | |
304 "excess kurtosis" = kurtosis (x) - 3 | |
305 | |
306 ** The moment function has changed definition to be compatible with | |
307 Matlab. It now returns the central moment instead of the raw moment. | |
308 The old behavior can be had by passing the type argument "r" for raw. | |
309 | |
310 ** The default name of the Octave crash dump file is now | |
311 "octave-workspace" instead of "octave-core". The exact name can | |
312 always be customized with the octave_core_file_name function. | |
313 | |
314 ** A citation command has been added to display information on how to | |
315 cite Octave and packages in publications. The package system will | |
316 look for and install CITATION files from packages. | |
317 | |
318 ** The java package from Octave Forge is now part of core Octave. The | |
319 following new functions are available for interacting with Java | |
320 directly from Octave: | |
321 | |
322 debug_java java_matrix_autoconversion | |
323 isjava java_unsigned_autoconversion | |
324 java2mat javaaddpath | |
325 javaArray javaclasspath | |
326 javaMethod javamem | |
327 javaObject javarmpath | |
328 usejava | |
329 | |
330 In addition, the following functions that use the Java interface | |
331 are now available (provided that Octave is compiled with support for | |
332 Java enabled): | |
333 | |
334 helpdlg listdlg questdlg | |
335 inputdlg msgbox warndlg | |
336 | |
337 ** Other new functions added in 3.8.0: | |
338 | |
339 atan2d erfi lines | |
340 base64_decode expint linsolve | |
341 base64_encode findfigs missing_component_hook | |
342 betaincinv flintmax polyeig | |
343 built_in_docstrings_file fminsearch prefdir | |
344 cmpermute gallery preferences | |
345 cmunique gco readline_re_read_init_file | |
346 colorcube hdl2struct readline_read_init_file | |
347 copyobj history_save rgbplot | |
348 dawson imformats save_default_options | |
349 dblist importdata shrinkfaces | |
350 desktop isaxes splinefit | |
351 doc_cache_create iscolormap stemleaf | |
352 ellipj isequaln strjoin | |
353 ellipke jit_debug struct2hdl | |
354 erfcinv jit_enable tetramesh | |
355 jit_startcnt waterfall | |
356 | |
357 ** Deprecated functions. | |
358 | |
359 The following functions were deprecated in Octave 3.4 and have been | |
360 removed from Octave 3.8. | |
361 | |
362 autocor dispatch is_global setstr | |
363 autocov fstat krylovb strerror | |
364 betai gammai perror values | |
365 cellidx glpkmex replot | |
366 cquad is_duplicate_entry saveimage | |
367 | |
368 The following functions have been deprecated in Octave 3.8 and will | |
369 be removed from Octave 3.12 (or whatever version is the second major | |
370 release after 3.8): | |
371 | |
372 default_save_options java_new | |
373 gen_doc_cache java_set | |
374 interp1q java_unsigned_conversion | |
375 isequalwithequalnans javafields | |
376 java_convert_matrix javamethods | |
377 java_debug re_read_readline_init_file | |
378 java_get read_readline_init_file | |
379 java_invoke saving_history | |
380 | |
381 | |
382 The following keywords have been deprecated in Octave 3.8 and will | |
383 be removed from Octave 3.12 (or whatever version is the second major | |
384 release after 3.8): | |
385 | |
386 static | |
387 | |
388 The following configuration variables have been deprecated in Octave | |
389 3.8 and will be removed from Octave 3.12 (or whatever version is the | |
390 second major release after 3.8): | |
391 | |
392 CC_VERSION (now GCC_VERSION) | |
393 CXX_VERSION (now GXX_VERSION) | |
394 | |
395 The internal class <Octave_map> has been deprecated in Octave 3.8 and will | |
396 be removed from Octave 3.12 (or whatever version is the second major | |
397 release after 3.8). Replacement classes are <octave_map> (struct array) | |
398 or <octave_scalar_map> for a single structure. | |
399 | |
400 Summary of important user-visible changes for version 3.6: | |
401 --------------------------------------------------------- | |
402 | |
403 ** The PCRE library is now required to build Octave. If a pre-compiled | |
404 package does not exist for your system, you can find PCRE sources | |
405 at http://www.pcre.org | |
406 | |
407 ** The ARPACK library is no longer distributed with Octave. | |
408 If you need the eigs or svds functions you must provide an | |
409 external ARPACK through a package manager or by compiling it | |
410 yourself. If a pre-compiled package does not exist for your system, | |
411 you can find the current ARPACK sources at | |
412 http://forge.scilab.org/index.php/p/arpack-ng | |
413 | |
414 ** Many of Octave's binary operators (.*, .^, +, -, ...) now perform | |
415 automatic broadcasting for array operations which allows you to use | |
416 operator notation instead of calling bsxfun or expanding arrays (and | |
417 unnecessarily wasting memory) with repmat or similar idioms. For | |
418 example, to scale the columns of a matrix by the elements of a row | |
419 vector, you may now write | |
420 | |
421 rv .* M | |
422 | |
423 In this expression, the number of elements of rv must match the | |
424 number of columns of M. The following operators are affected: | |
425 | |
426 plus + .+ | |
427 minus - .- | |
428 times .* | |
429 rdivide ./ | |
430 ldivide .\ | |
431 power .^ .** | |
432 lt < | |
433 le <= | |
434 eq == | |
435 gt > | |
436 ge >= | |
437 ne != ~= | |
438 and & | |
439 or | | |
440 atan2 | |
441 hypot | |
442 max | |
443 min | |
444 mod | |
445 rem | |
446 xor | |
447 | |
448 additionally, since the A op= B assignment operators are equivalent | |
449 to A = A op B, the following operators are also affected: | |
450 | |
451 += -= .+= .-= .*= ./= .\= .^= .**= &= |= | |
452 | |
453 See the "Broadcasting" section in the new "Vectorization and Faster | |
454 Code Execution" chapter of the manual for more details. | |
455 | |
456 ** Octave now features a profiler, thanks to the work of Daniel Kraft | |
457 under the Google Summer of Code mentorship program. The manual has | |
458 been updated to reflect this addition. The new user-visible | |
459 functions are profile, profshow, and profexplore. | |
460 | |
461 ** Overhaul of statistical distribution functions | |
462 | |
463 Functions now return "single" outputs for inputs of class "single". | |
464 | |
465 75% reduction in memory usage through use of logical indexing. | |
466 | |
467 Random sample functions now use the same syntax as rand and accept | |
468 a comma separated list of dimensions or a dimension vector. | |
469 | |
470 Functions have been made Matlab-compatible with regard to special | |
471 cases (probability on boundaries, probabilities for values outside | |
472 distribution, etc.). This may cause subtle changes to existing | |
473 scripts. | |
474 | |
475 negative binomial function has been extended to real, non-integer | |
476 inputs. The discrete_inv function now returns v(1) for 0 instead of | |
477 NaN. The nbincdf function has been recoded to use a closed form | |
478 solution with betainc. | |
479 | |
480 ** strread, textscan, and textread have been completely revamped. | |
481 | |
482 They now support nearly all Matlab functionality including: | |
483 | |
484 * Matlab-compatible whitespace and delimiter defaults | |
485 | |
486 * Matlab-compatible options: 'whitespace', treatasempty', format | |
487 string repeat count, user-specified comment style, uneven-length | |
488 output arrays, %n and %u conversion specifiers (provisionally) | |
489 | |
490 ** All .m string functions have been modified for better performance or | |
491 greater Matlab compatibility. Performance gains of 15X-30X have | |
492 been demonstrated. Operations on cell array of strings no longer pay | |
493 quite as high a penalty as those on 2-D character arrays. | |
494 | |
495 deblank: Now requires character or cellstr input. | |
496 | |
497 strtrim: Now requires character or cellstr input. | |
498 No longer trims nulls ("\0") from string for Matlab | |
499 compatibility. | |
500 | |
501 strmatch: Follows documentation precisely and ignores trailing spaces | |
502 in pattern and in string. Note that this is documented | |
503 Matlab behavior but the implementation apparently does | |
504 not always follow it. | |
505 | |
506 substr: Now possible to specify a negative LEN option which | |
507 extracts to within LEN of the end of the string. | |
508 | |
509 strtok: Now accepts cellstr input. | |
510 | |
511 base2dec, bin2dec, hex2dec: | |
512 Now accept cellstr inputs. | |
513 | |
514 dec2base, dec2bin, dec2hex: | |
515 Now accept cellstr inputs. | |
516 | |
517 index, rindex: | |
518 Now accept 2-D character array input. | |
519 | |
520 strsplit: Now accepts 2-D character array input. | |
521 | |
522 ** Geometry functions derived from Qhull (convhull, delaunay, voronoi) | |
523 have been revamped. The options passed to the underlying qhull | |
524 command have been changed for better results or for Matlab | |
525 compatibility. | |
526 | |
527 convhull: Default options are "Qt" for 2D, 3D, 4D inputs | |
528 Default options are "Qt Qx" for 5D and higher | |
529 | |
530 delaunay: Default options are "Qt Qbb Qc Qz" for 2D and 3D inputs | |
531 Default options are "Qt Qbb Qc Qx" for 4D and higher | |
532 | |
533 voronoi: No default arguments | |
534 | |
535 ** Date/Time functions updated. Millisecond support with FFF format | |
536 string now supported. | |
537 | |
538 datestr: Numerical formats 21, 22, 29 changed to match Matlab. | |
539 Now accepts cellstr input. | |
540 | |
541 ** The following warning IDs have been removed: | |
542 | |
543 Octave:associativity-change | |
544 Octave:complex-cmp-ops | |
545 Octave:empty-list-elements | |
546 Octave:fortran-indexing | |
547 Octave:precedence-change | |
548 | |
549 ** The warning ID Octave:string-concat has been renamed to | |
550 Octave:mixed-string-concat. | |
551 | |
552 ** Octave now includes the following Matlab-compatible preference | |
553 functions: | |
554 | |
555 addpref getpref ispref rmpref setpref | |
556 | |
557 ** The following Matlab-compatible handle graphics functions have been | |
558 added: | |
559 | |
560 guidata uipanel uitoolbar | |
561 guihandles uipushtool uiwait | |
562 uicontextmenu uiresume waitfor | |
563 uicontrol uitoggletool | |
564 | |
565 The uiXXX functions above are experimental. | |
566 | |
567 Except for uiwait and uiresume, the uiXXX functions are not | |
568 supported with the FLTK+OpenGL graphics toolkit. | |
569 | |
570 The gnuplot graphics toolkit does not support any of the uiXXX | |
571 functions nor the waitfor function. | |
572 | |
573 ** New keyword parfor (parallel for loop) is now recognized as a valid | |
574 keyword. Implementation, however, is still mapped to an ordinary | |
575 for loop. | |
576 | |
577 ** Other new functions added in 3.6.0: | |
578 | |
579 bicg nthargout usejava | |
580 is_dq_string narginchk waitbar | |
581 is_sq_string python zscore | |
582 is_function_handle register_graphics_toolkit | |
583 loaded_graphics_toolkits recycle | |
584 | |
585 ** Deprecated functions. | |
586 | |
587 The following functions were deprecated in Octave 3.2 and have been | |
588 removed from Octave 3.6. | |
589 | |
590 create_set spcholinv splu | |
591 dmult spcumprod spmax | |
592 iscommand spcumsum spmin | |
593 israwcommand spdet spprod | |
594 lchol spdiag spqr | |
595 loadimage spfind spsum | |
596 mark_as_command sphcat spsumsq | |
597 mark_as_rawcommand spinv spvcat | |
598 spatan2 spkron str2mat | |
599 spchol splchol unmark_command | |
600 spchol2inv split unmark_rawcommand | |
601 | |
602 The following functions have been deprecated in Octave 3.6 and will | |
603 be removed from Octave 3.10 (or whatever version is the second major | |
604 release after 3.6): | |
605 | |
606 cut is_duplicate_entry | |
607 cor polyderiv | |
608 corrcoef shell_cmd | |
609 __error_text__ studentize | |
610 error_text sylvester_matrix | |
611 | |
612 ** The following functions have been modified for Matlab compatibility: | |
613 | |
614 randperm | |
615 | |
616 Summary of important user-visible changes for version 3.4.3: | |
617 ----------------------------------------------------------- | |
618 | |
619 ** Octave 3.4.3 is a bug fixing release. | |
620 | |
621 Summary of important user-visible changes for version 3.4.2: | |
622 ----------------------------------------------------------- | |
623 | |
624 ** Octave 3.4.2 fixes some minor installation problems that affected | |
625 version 3.4.1. | |
626 | |
627 Summary of important user-visible changes for version 3.4.1: | |
628 ----------------------------------------------------------- | |
629 | |
630 ** Octave 3.4.1 is primarily a bug fixing release. | |
631 | |
632 ** IMPORTANT note about binary incompatibility in this release: | |
633 | |
634 Binary compatibility for all 3.4.x releases was originally planned, | |
635 but this is impossible for the 3.4.1 release due to a bug in the way | |
636 shared libraries were built in Octave 3.4.0. Because of this bug, | |
637 .oct files built for Octave 3.4.0 must be recompiled before they | |
638 will work with Octave 3.4.1. | |
639 | |
640 Given that there would be binary incompatibilities with shared | |
641 libraries going from Octave 3.4.0 to 3.4.1, the following | |
642 incompatible changes were also made in this release: | |
643 | |
644 * The Perl Compatible Regular Expression (PCRE) library is now | |
645 required to build Octave. | |
646 | |
647 * Octave's libraries and .oct files are now installed in | |
648 subdirectories of $libdir instead of $libexecdir. | |
649 | |
650 Any future Octave 3.4.x release versions should remain binary | |
651 compatible with Octave 3.4.1 as proper library versioning is now | |
652 being used as recommended by the libtool manual. | |
653 | |
654 ** The following functions have been deprecated in Octave 3.4.1 and will | |
655 be removed from Octave 3.8 (or whatever version is the second major | |
656 release after 3.4): | |
657 | |
658 cquad is_duplicate_entry perror strerror | |
659 | |
660 ** The following functions are new in 3.4.1: | |
661 | |
662 colstyle gmres iscolumn isrow mgorth nproc rectangle | |
663 | |
664 ** The get_forge_pkg function is now private. | |
665 | |
666 ** The rectangle_lw, rectangle_sw, triangle_lw, and triangle_sw | |
667 functions are now private. | |
668 | |
669 ** The logistic_regression_derivatives and logistic_regression_likelihood | |
670 functions are now private. | |
671 | |
672 ** ChangeLog files in the Octave sources are no longer maintained | |
673 by hand. Instead, there is a single ChangeLog file generated from | |
674 the Mercurial version control commit messages. Older ChangeLog | |
675 information can be found in the etc/OLD-ChangeLogs directory in the | |
676 source distribution. | |
677 | |
678 Summary of important user-visible changes for version 3.4: | |
679 --------------------------------------------------------- | |
680 | |
681 ** BLAS and LAPACK libraries are now required to build Octave. The | |
682 subset of the reference BLAS and LAPACK libraries has been removed | |
683 from the Octave sources. | |
684 | |
685 ** The ARPACK library is now distributed with Octave so it no longer | |
686 needs to be available as an external dependency when building | |
687 Octave. | |
688 | |
689 ** The `lookup' function was extended to be more useful for | |
690 general-purpose binary searching. Using this improvement, the | |
691 ismember function was rewritten for significantly better | |
692 performance. | |
693 | |
694 ** Real, integer and logical matrices, when used in indexing, will now | |
695 cache the internal index_vector value (zero-based indices) when | |
696 successfully used as indices, eliminating the conversion penalty for | |
697 subsequent indexing by the same matrix. In particular, this means it | |
698 is no longer needed to avoid repeated indexing by logical arrays | |
699 using find for performance reasons. | |
700 | |
701 ** Logical matrices are now treated more efficiently when used as | |
702 indices. Octave will keep the index as a logical mask unless the | |
703 ratio of true elements is small enough, using a specialized | |
704 code. Previously, all logical matrices were always first converted | |
705 to index vectors. This results in savings in both memory and | |
706 computing time. | |
707 | |
708 ** The `sub2ind' and `ind2sub' functions were reimplemented as compiled | |
709 functions for better performance. These functions are now faster, | |
710 can deliver more economized results for ranges, and can reuse the | |
711 index cache mechanism described in previous paragraph. | |
712 | |
713 ** The built-in function equivalents to associative operators (`plus', | |
714 `times', `mtimes', `and', and `or') have been extended to accept | |
715 multiple arguments. This is especially useful for summing | |
716 (multiplying, etc.) lists of objects (of possibly distinct types): | |
717 | |
718 matrix_sum = plus (matrix_list{:}); | |
719 | |
720 ** An FTP object type based on libcurl has been implemented. These | |
721 objects allow ftp connections, downloads and uploads to be | |
722 managed. For example, | |
723 | |
724 fp = ftp ("ftp.octave.org); | |
725 cd (fp, "gnu/octave"); | |
726 mget (fp, "octave-3.2.3.tar.bz2"); | |
727 close (fp); | |
728 | |
729 ** The default behavior of `assert (observed, expected)' has been | |
730 relaxed to employ less strict checking that does not require the | |
731 internals of the values to match. This avoids previously valid | |
732 tests from breaking due to new internal classes introduced in future | |
733 Octave versions. | |
734 | |
735 For instance, all of these assertions were true in Octave 3.0.x | |
736 but false in 3.2.x due to new optimizations and improvements: | |
737 | |
738 assert (2*linspace (1, 5, 5), 2*(1:5)) | |
739 assert (zeros (0, 0), []) | |
740 assert (2*ones (1, 5), (2) (ones (1,5))) | |
741 | |
742 ** The behavior of library functions `ismatrix', `issquare', and | |
743 `issymmetric' has been changed for better consistency. | |
744 | |
745 * The `ismatrix' function now returns true for all numeric, | |
746 logical and character 2-D or N-D matrices. Previously, `ismatrix' | |
747 returned false if the first or second dimension was zero. | |
748 Hence, `ismatrix ([])' was false, | |
749 while `ismatrix (zeros (1,2,0))' was true. | |
750 | |
751 * The `issquare' function now returns a logical scalar, and is | |
752 equivalent to the expression | |
753 | |
754 ismatrix (x) && ndims (x) == 2 && rows (x) == columns (x) | |
755 | |
756 The dimension is no longer returned. As a result, `issquare ([])' | |
757 now yields true. | |
758 | |
759 * The `issymmetric' function now checks for symmetry instead of | |
760 Hermitianness. For the latter, ishermitian was created. Also, | |
761 logical scalar is returned rather than the dimension, so | |
762 `issymmetric ([])' is now true. | |
763 | |
764 ** Function handles are now aware of overloaded functions. If a | |
765 function is overloaded, the handle determines at the time of its | |
766 reference which function to call. A non-overloaded version does not | |
767 need to exist. | |
768 | |
769 ** Overloading functions for built-in classes (double, int8, cell, | |
770 etc.) is now compatible with Matlab. | |
771 | |
772 ** Function handles can now be compared with the == and != operators, | |
773 as well as the `isequal' function. | |
774 | |
775 ** Performance of concatenation (using []) and the functions `cat', | |
776 `horzcat', and `vertcat' has been improved for multidimensional | |
777 arrays. | |
778 | |
779 ** The operation-assignment operators +=, -=, *= and /= now behave more | |
780 efficiently in certain cases. For instance, if M is a matrix and S a | |
781 scalar, then the statement | |
782 | |
783 M += S; | |
784 | |
785 will operate on M's data in-place if it is not shared by another | |
786 variable, usually increasing both time and memory efficiency. | |
787 | |
788 Only selected common combinations are affected, namely: | |
789 | |
790 matrix += matrix | |
791 matrix -= matrix | |
792 matrix .*= matrix | |
793 matrix ./= matrix | |
794 | |
795 matrix += scalar | |
796 matrix -= scalar | |
797 matrix *= scalar | |
798 matrix /= scalar | |
799 | |
800 logical matrix |= logical matrix | |
801 logical matrix &= logical matrix | |
802 | |
803 where matrix and scalar belong to the same class. The left-hand | |
804 side must be a simple variable reference. | |
805 | |
806 Moreover, when unary operators occur in expressions, Octave will | |
807 also try to do the operation in-place if it's argument is a | |
808 temporary expression. | |
809 | |
810 ** The effect of comparison operators (<, >, <=, and >=) applied to | |
811 complex numbers has changed to be consistent with the strict | |
812 ordering defined by the `max', `min', and `sort' functions. More | |
813 specifically, complex numbers are compared by lexicographical | |
814 comparison of the pairs `[abs(z), arg(z)]'. Previously, only real | |
815 parts were compared; this can be trivially achieved by converting | |
816 the operands to real values with the `real' function. | |
817 | |
818 ** The automatic simplification of complex computation results has | |
819 changed. Octave will now simplify any complex number with a zero | |
820 imaginary part or any complex matrix with all elements having zero | |
821 imaginary part to a real value. Previously, this was done only for | |
822 positive zeros. Note that the behavior of the complex function is | |
823 unchanged and it still produces a complex value even if the | |
824 imaginary part is zero. | |
825 | |
826 ** As a side effect of code refactoring in liboctave, the binary | |
827 logical operations are now more easily amenable to compiler | |
828 optimizations and are thus significantly faster. | |
829 | |
830 ** Octave now allows user-defined `subsasgn' methods to optimize out | |
831 redundant copies. For more information, see the manual. | |
832 | |
833 ** More efficient matrix division handling. Octave is now able to | |
834 handle the expressions | |
835 | |
836 M' \ V | |
837 M.' \ V | |
838 V / M | |
839 | |
840 (M is a matrix and V is a vector) more efficiently in certain cases. | |
841 In particular, if M is triangular, all three expressions will be | |
842 handled by a single call to xTRTRS (from LAPACK), with appropriate | |
843 flags. Previously, all three expressions required a physical | |
844 transpose of M. | |
845 | |
846 ** More efficient handling of certain mixed real-complex matrix | |
847 operations. For instance, if RM is a real matrix and CM a complex | |
848 matrix, | |
849 | |
850 RM * CM | |
851 | |
852 can now be evaluated either as | |
853 | |
854 complex (RM * real (CM), RM * imag (CM)) | |
855 | |
856 or as | |
857 | |
858 complex (RM) * CM, | |
859 | |
860 depending on the dimensions. The first form requires more | |
861 temporaries and copying, but halves the FLOP count, which normally | |
862 brings better performance if RM has enough rows. Previously, the | |
863 second form was always used. | |
864 | |
865 Matrix division is similarly affected. | |
866 | |
867 ** More efficient handling of triangular matrix factors returned from | |
868 factorizations. The functions for computing QR, LU and Cholesky | |
869 factorizations will now automatically return the triangular matrix | |
870 factors with proper internal matrix_type set, so that it won't need | |
871 to be computed when the matrix is used for division. | |
872 | |
873 ** The built-in `sum' function now handles the non-native summation | |
874 (i.e., double precision sum of single or integer inputs) more | |
875 efficiently, avoiding a temporary conversion of the whole input | |
876 array to doubles. Further, `sum' can now accept an extra option | |
877 argument, using a compensated summation algorithm rather than a | |
878 straightforward sum, which significantly improves precision if lots | |
879 of cancellation occurs in the summation. | |
880 | |
881 ** The built-in `bsxfun' function now uses optimized code for certain | |
882 cases where built-in operator handles are passed in. Namely, the | |
883 optimizations concern the operators `plus', `minus', `times', | |
884 `ldivide', `rdivide', `power', `and', `or' (for logical arrays), | |
885 the relational operators `eq', `ne', `lt', `le', `gt', `ge', and the | |
886 functions `min' and `max'. Optimizations only apply when both | |
887 operands are of the same built-in class. Mixed real/complex and | |
888 single/double operations will first convert both operands to a | |
889 common type. | |
890 | |
891 ** The `strfind' and `strrep' functions now have compiled | |
892 implementations, facilitating significantly more efficient searching | |
893 and replacing in strings, especially with longer patterns. The code | |
894 of `strcat' has been vectorized and is now much more efficient when | |
895 many strings are concatenated. The `strcmpi' and `strncmpi' | |
896 functions are now built-in functions, providing better performance. | |
897 | |
898 ** 'str2double' now has a compiled implementation and the API conforms | |
899 to Matlab. The additional Octave-specific features of returning a | |
900 boolean matrix indicating which elements were successfully converted | |
901 has been removed. | |
902 | |
903 ** Matlab-style ignoring input and output function arguments using | |
904 tilde (~) is now supported. Ignored output arguments may be | |
905 detected from a function using the built-in function `isargout'. | |
906 For more details, consult the manual. | |
907 | |
908 ** The list datatype, deprecated since the introduction of cells, has | |
909 been removed. | |
910 | |
911 ** The accumarray function has been optimized and is now significantly | |
912 faster in certain important cases. | |
913 | |
914 ** The behavior of isreal and isnumeric functions was changed to be more | |
915 Matlab-compatible. | |
916 | |
917 ** The integer math & conversion warnings (Octave:int-convert-nan, | |
918 Octave:int-convert-non-int-val, Octave:int-convert-overflow, | |
919 Octave:int-math-overflow) have been removed. | |
920 | |
921 ** rem and mod are now built-in functions. They also handle integer | |
922 types efficiently using integer arithmetic. | |
923 | |
924 ** Sparse indexing and indexed assignment has been mostly rewritten. | |
925 Since Octave uses compressed column storage for sparse matrices, | |
926 major attention is devoted to operations manipulating whole columns. | |
927 Such operations are now significantly faster, as well as some other | |
928 important cases. | |
929 | |
930 Further, it is now possible to pre-allocate a sparse matrix and | |
931 subsequently fill it by assignments, provided they meet certain | |
932 conditions. For more information, consult the `spalloc' function, | |
933 which is no longer a mere dummy. Consequently, nzmax and nnz are no | |
934 longer always equal in Octave. Octave may also produce a matrix | |
935 with nnz < nzmax as a result of other operations, so you should | |
936 consistently use nnz unless you really want to use nzmax (i.e., the | |
937 space allocated for nonzero elements). | |
938 | |
939 Sparse concatenation is also affected, and concatenating sparse | |
940 matrices, especially larger collections, is now significantly more | |
941 efficient. This applies to both the [] operator and the | |
942 cat/vertcat/horzcat functions. | |
943 | |
944 ** It is now possible to optionally employ the xGESDD LAPACK drivers | |
945 for computing the singular value decomposition using svd, instead | |
946 of the default xGESVD, using the configuration pseudo-variable | |
947 svd_driver. The xGESDD driver can be up to 6x times faster when | |
948 singular vectors are requested, but is reported to be somewhat less | |
949 robust on highly ill-conditioned matrices. | |
950 | |
951 ** Configuration pseudo-variables, such as page_screen_output or | |
952 confirm_recursive_rmdir (or the above mentioned svd_driver), now | |
953 accept a "local" option as second argument, requesting the change | |
954 to be undone when the current function returns: | |
955 | |
956 function [status, msg] = rm_rf (dir) | |
957 confirm_recursive_rmdir (false, "local"); | |
958 [status, msg] = rmdir (dir, "s"); | |
959 ... | |
960 endfunction | |
961 | |
962 Upon return, confirm_recursive_rmdir will be restored to the value | |
963 it had on entry to the function, even if there were subsequent | |
964 changes to the variable in function rm_rf or any of the functions | |
965 it calls. | |
966 | |
967 ** pkg now accepts a -forge option for downloading and installing | |
968 packages from Octave Forge automatically. For example, | |
969 | |
970 pkg install -forge general | |
971 | |
972 will automatically download the latest release of the general | |
973 package and attempt to install it. No automatic resolving of | |
974 dependencies is provided. Further, | |
975 | |
976 pkg list -forge | |
977 | |
978 can be used to list all available packages. | |
979 | |
980 ** The internal data representation of structs has been completely | |
981 rewritten to make certain optimizations feasible. The field data | |
982 can now be shared between structs with equal keys but different | |
983 dimensions or values, making operations that preserve the fields | |
984 faster. Economized storage is now used for scalar structs (just | |
985 like most other scalars), making their usage more | |
986 memory-efficient. Certain array-like operations on structs | |
987 (concatenation, uniform cellfun, num2cell) have gained a | |
988 significant speed-up. Additionally, the octave_scalar_map class | |
989 now provides a simpler interface to work with scalar structs within | |
990 a C++ DLD function. | |
991 | |
992 ** Two new formats are available for displaying numbers: | |
993 | |
994 format short eng | |
995 format long eng | |
996 | |
997 Both display numbers in engineering notation, i.e., mantissa + | |
998 exponent where the exponent is a multiple of 3. | |
999 | |
1000 ** The following functions are new in Octave 3.4: | |
1001 accumdim erfcx nfields pqpnonneg uigetdir | |
1002 bitpack fileread nth_element quadcc uigetfile | |
1003 bitunpack fminbnd onCleanup randi uiputfile | |
1004 blkmm fskipl pbaspect repelems uimenu | |
1005 cbrt ifelse pie3 reset whitebg | |
1006 curl ishermitian powerset rsf2csf | |
1007 chop isindex ppder saveas | |
1008 daspect luupdate ppint strread | |
1009 divergence merge ppjumps textread | |
1010 | |
1011 ** Using the image function to view images with external programs such | |
1012 as display, xv, and xloadimage is no longer supported. The | |
1013 image_viewer function has also been removed. | |
1014 | |
1015 ** The behavior of struct assignments to non-struct values has been | |
1016 changed. Previously, it was possible to overwrite an arbitrary | |
1017 value: | |
1018 | |
1019 a = 1; | |
1020 a.x = 2; | |
1021 | |
1022 This is no longer possible unless a is an empty matrix or cell | |
1023 array. | |
1024 | |
1025 ** The dlmread function has been extended to allow specifying a custom | |
1026 value for empty fields. | |
1027 | |
1028 ** The dlmread and dlmwrite functions have been modified to accept | |
1029 file IDs (as returned by fopen) in addition to file names. | |
1030 | |
1031 ** Octave can now optimize away the interpreter overhead of an | |
1032 anonymous function handle, if the function simply calls another | |
1033 function or handle with some of its parameters bound to certain | |
1034 values. Example: | |
1035 | |
1036 f = @(x) sum (x, 1); | |
1037 | |
1038 When f is called, the call is forwarded to @sum with the constant 1 | |
1039 appended, and the anonymous function call does not occur on the | |
1040 call stack. | |
1041 | |
1042 ** For compatibility with Matlab, mu2lin (x) is now equivalent to | |
1043 mu2lin (x, 0). | |
1044 | |
1045 ** The new function `history_control' may be used to control the way | |
1046 command lines are added to the history list when Octave is using | |
1047 readline for command-line editing. For example | |
1048 | |
1049 history_control ("ignoredups") | |
1050 | |
1051 tells Octave to avoid adding duplicate lines to the history list. | |
1052 | |
1053 ** Octave now uses the gnulib library for improved portability and to | |
1054 avoid bugs in operating system functions. | |
1055 | |
1056 ** Deprecated functions. | |
1057 | |
1058 The following functions were deprecated in Octave 3.0 and have been | |
1059 removed from Octave 3.4. | |
1060 | |
1061 beta_cdf geometric_pdf pascal_pdf | |
1062 beta_inv geometric_rnd pascal_rnd | |
1063 beta_pdf hypergeometric_cdf poisson_cdf | |
1064 beta_rnd hypergeometric_inv poisson_inv | |
1065 binomial_cdf hypergeometric_pdf poisson_pdf | |
1066 binomial_inv hypergeometric_rnd poisson_rnd | |
1067 binomial_pdf intersection polyinteg | |
1068 binomial_rnd is_bool setstr | |
1069 chisquare_cdf is_complex struct_contains | |
1070 chisquare_inv is_list struct_elements | |
1071 chisquare_pdf is_matrix t_cdf | |
1072 chisquare_rnd is_scalar t_inv | |
1073 clearplot is_square t_pdf | |
1074 clg is_stream t_rnd | |
1075 com2str is_struct uniform_cdf | |
1076 exponential_cdf is_symmetric uniform_inv | |
1077 exponential_inv is_vector uniform_pdf | |
1078 exponential_pdf isstr uniform_rnd | |
1079 exponential_rnd lognormal_cdf weibcdf | |
1080 f_cdf lognormal_inv weibinv | |
1081 f_inv lognormal_pdf weibpdf | |
1082 f_pdf lognormal_rnd weibrnd | |
1083 f_rnd meshdom weibull_cdf | |
1084 gamma_cdf normal_cdf weibull_inv | |
1085 gamma_inv normal_inv weibull_pdf | |
1086 gamma_pdf normal_pdf weibull_rnd | |
1087 gamma_rnd normal_rnd wiener_rnd | |
1088 geometric_cdf pascal_cdf | |
1089 geometric_inv pascal_inv | |
1090 | |
1091 The following functions were deprecated in Octave 3.2 and will | |
1092 be removed from Octave 3.6 (or whatever version is the second major | |
1093 release after 3.2): | |
1094 | |
1095 create_set spcholinv splu | |
1096 dmult spcumprod spmax | |
1097 iscommand spcumsum spmin | |
1098 israwcommand spdet spprod | |
1099 lchol spdiag spqr | |
1100 loadimage spfind spsum | |
1101 mark_as_command sphcat spsumsq | |
1102 mark_as_rawcommand spinv spvcat | |
1103 spatan2 spkron str2mat | |
1104 spchol splchol unmark_command | |
1105 spchol2inv split unmark_rawcommand | |
1106 | |
1107 The following functions have been deprecated in Octave 3.4 and will | |
1108 be removed from Octave 3.8 (or whatever version is the second major | |
1109 release after 3.4): | |
1110 | |
1111 autocor cellidx gammai is_global replot values | |
1112 autocov dispatch glpkmex krylovb saveimage | |
1113 betai fstat intwarning perror strerror | |
1114 | |
1115 Summary of important user-visible changes for version 3.2: | |
1116 --------------------------------------------------------- | |
1117 | |
1118 ** Compatibility with Matlab graphics has been improved. | |
1119 | |
1120 The hggroup object and associated listener callback functions have | |
1121 been added allowing the inclusion of group objects. Data sources | |
1122 have been added to these group objects such that | |
1123 | |
1124 x = 0:0.1:10; | |
1125 y = sin (x); | |
1126 plot (x, y, "ydatasource", "y"); | |
1127 for i = 1 : 100 | |
1128 pause(0.1) | |
1129 y = sin (x + 0.1 * i); | |
1130 refreshdata (); | |
1131 endfor | |
1132 | |
1133 works as expected. This capability has be used to introduce | |
1134 stem-series, bar-series, etc., objects for better Matlab | |
1135 compatibility. | |
1136 | |
1137 ** New graphics functions: | |
1138 | |
1139 addlistener ezcontour gcbo refresh | |
1140 addproperty ezcontourf ginput refreshdata | |
1141 allchild ezmesh gtext specular | |
1142 available_graphics_toolkits ezmeshc intwarning surfl | |
1143 graphics_toolkit ezplot ishghandle trisurf | |
1144 cla ezplot3 isocolors waitforbuttonpress | |
1145 clabel ezpolar isonormals | |
1146 comet ezsurf isosurface | |
1147 dellistener findall linkprop | |
1148 diffuse gcbf plotmatrix | |
1149 | |
1150 ** New experimental OpenGL/FLTK based plotting system. | |
1151 | |
1152 An experimental plotting system based on OpenGL and the FLTK | |
1153 toolkit is now part of Octave. This graphics toolkit is disabled by | |
1154 default. You can switch to using it with the command | |
1155 | |
1156 graphics_toolkit ("fltk") | |
1157 | |
1158 for all future figures or for a particular figure with the command | |
1159 | |
1160 graphics_toolkit (h, "fltk") | |
1161 | |
1162 where "h" is a valid figure handle. | |
1163 | |
1164 ** Functions providing direct access to gnuplot have been removed. | |
1165 | |
1166 The functions __gnuplot_plot__, __gnuplot_set__, __gnuplot_raw__, | |
1167 __gnuplot_show__, __gnuplot_replot__, __gnuplot_splot__, | |
1168 __gnuplot_save_data__ and __gnuplot_send_inline_data__ have been | |
1169 removed from Octave. These function were incompatible with the | |
1170 high level graphics handle code. | |
1171 | |
1172 ** The Control, Finance and Quaternion functions have been removed. | |
1173 | |
1174 These functions are now available as separate packages from | |
1175 | |
1176 http://octave.sourceforge.net/packages.html | |
1177 | |
1178 and can be reinstalled using the Octave package manager (see | |
1179 the pkg function). | |
1180 | |
1181 ** Specific sparse matrix functions removed. | |
1182 | |
1183 The following functions, which handled only sparse matrices have | |
1184 been removed. Instead of calling these functions directly, you | |
1185 should use the corresponding function without the "sp" prefix. | |
1186 | |
1187 spatan2 spcumsum spkron spprod | |
1188 spchol spdet splchol spqr | |
1189 spchol2inv spdiag splu spsum | |
1190 spcholinv spfind spmax spsumsqk | |
1191 spcumprod spinv spmin | |
1192 | |
1193 ** Improvements to the debugger. | |
1194 | |
1195 The interactive debugging features have been improved. Stopping | |
1196 on statements with dbstop should work correctly now. Stepping | |
1197 into and over functions, and stepping one statement at a time | |
1198 (with dbstep) now works. Moving up and down the call stack with | |
1199 dbup and dbdown now works. The dbstack function is now available | |
1200 to print the current function call stack. The new dbquit function | |
1201 is available to exit the debugging mode. | |
1202 | |
1203 ** Improved traceback error messages. | |
1204 | |
1205 Traceback error messages are much more concise and easier to | |
1206 understand. They now display information about the function call | |
1207 stack instead of the stack of all statements that were active at | |
1208 the point of the error. | |
1209 | |
1210 ** Object Oriented Programming. | |
1211 | |
1212 Octave now includes OOP features and the user can create their own | |
1213 class objects and overloaded functions and operators. For | |
1214 example, all methods of a class called "myclass" will be found in | |
1215 a directory "@myclass" on the users path. The class specific | |
1216 versions of functions and operators take precedence over the | |
1217 generic versions of these functions. | |
1218 | |
1219 New functions related to OOP include | |
1220 | |
1221 class inferiorto isobject loadobj methods superiorto | |
1222 | |
1223 See the Octave manual for more details. | |
1224 | |
1225 ** Parsing of Command-style Functions. | |
1226 | |
1227 Octave now parses command-style functions without needing to first | |
1228 declare them with "mark_as_command". The rules for recognizing a | |
1229 command-style function calls are | |
1230 | |
1231 * A command must appear as the first word in a statement, | |
1232 followed by a space. | |
1233 | |
1234 * The first character after the space must not be '=' or '(' | |
1235 | |
1236 * The next token after the space must not look like a binary | |
1237 operator. | |
1238 | |
1239 These rules should be mostly compatible with the way Matlab parses | |
1240 command-style function calls and allow users to define commands in | |
1241 .m files without having to mark them as commands. | |
1242 | |
1243 Note that previous versions of Octave allowed expressions like | |
1244 | |
1245 x = load -text foo.dat | |
1246 | |
1247 but an expression like this will now generate a parse error. In | |
1248 order to assign the value returned by a function to a variable, | |
1249 you must use the normal function call syntax: | |
1250 | |
1251 x = load ("-text", "foo.dat"); | |
1252 | |
1253 ** Block comments. | |
1254 | |
1255 Commented code can be between matching "#{" and "#}" or "%{" and | |
1256 "%}" markers, even if the commented code spans several line. This | |
1257 allows blocks code to be commented, without needing to comment | |
1258 each line. For example, | |
1259 | |
1260 function [s, t] = func (x, y) | |
1261 s = 2 * x; | |
1262 #{ | |
1263 s *= y; | |
1264 t = y + x; | |
1265 #} | |
1266 endfunction | |
1267 | |
1268 the lines "s *= y;" and "t = y + x" will not be executed. | |
1269 | |
1270 ** If any subfunction in a file ends with "end" or "endfunction", then | |
1271 they all must end that way. Previously, Octave accepted | |
1272 | |
1273 function main () | |
1274 ... | |
1275 # no endfunction here. | |
1276 function sub () | |
1277 ... | |
1278 endfunction | |
1279 | |
1280 but this is no longer allowed. | |
1281 | |
1282 ** Special treatment in the parser of expressions like "a' * b". | |
1283 | |
1284 In these cases the transpose is no longer explicitly formed and | |
1285 BLAS libraries are called with the transpose flagged, | |
1286 significantly improving performance for these kinds of | |
1287 operations. | |
1288 | |
1289 ** Single Precision data type. | |
1290 | |
1291 Octave now includes a single precision data type. Single | |
1292 precision variables can be created with the "single" command, or | |
1293 from functions like ones, eye, etc. For example, | |
1294 | |
1295 single (1) | |
1296 ones (2, 2, "single") | |
1297 zeros (2, 2, "single") | |
1298 eye (2, 2, "single") | |
1299 Inf (2, 2, "single") | |
1300 NaN (2, 2, "single") | |
1301 NA (2, 2, "single") | |
1302 | |
1303 all create single precision variables. For compatibility with | |
1304 Matlab, mixed double/single precision operators and functions | |
1305 return single precision types. | |
1306 | |
1307 As a consequence of this addition to Octave the internal | |
1308 representation of the double precision NA value has changed, and | |
1309 so users that make use of data generated by Octave with R or | |
1310 visa-versa are warned that compatibility might not be assured. | |
1311 | |
1312 ** Improved array indexing. | |
1313 | |
1314 The underlying code used for indexing of arrays has been | |
1315 completely rewritten and indexing is now significantly faster. | |
1316 | |
1317 ** Improved memory management. | |
1318 | |
1319 Octave will now attempt to share data in some cases where previously | |
1320 a copy would be made, such as certain array slicing operations or | |
1321 conversions between cells, structs and cs-lists. This usually reduces | |
1322 both time and memory consumption. | |
1323 Also, Octave will now attempt to detect and optimize usage of a vector | |
1324 as a stack, when elements are being repeatedly inserted at/removed from | |
1325 the end of the vector. | |
1326 | |
1327 ** Improved performance for reduction operations. | |
1328 | |
1329 The performance of the sum, prod, sumsq, cumsum, cumprod, any, all, | |
1330 max and min functions has been significantly improved. | |
1331 | |
1332 ** Sorting and searching. | |
1333 | |
1334 The performance of sort has been improved, especially when sorting | |
1335 indices are requested. An efficient built-in issorted | |
1336 implementation was added. The sortrows function now uses a more | |
1337 efficient algorithm, especially in the homogeneous case. The lookup | |
1338 function is now a built-in function performing a binary search, | |
1339 optimized for long runs of close elements. Lookup also works with | |
1340 cell arrays of strings. | |
1341 | |
1342 ** Range arithmetics | |
1343 | |
1344 For some operations on ranges, Octave will attempt to keep the | |
1345 result as a range. These include negation, adding a scalar, | |
1346 subtracting a scalar, and multiplying by a scalar. Ranges with zero | |
1347 increment are allowed and can be constructed using the built-in | |
1348 function `ones'. | |
1349 | |
1350 ** Various performance improvements. | |
1351 | |
1352 Performance of a number of other built-in operations and functions | |
1353 was improved, including: | |
1354 | |
1355 * logical operations | |
1356 * comparison operators | |
1357 * element-wise power | |
1358 * accumarray | |
1359 * cellfun | |
1360 * isnan | |
1361 * isinf | |
1362 * isfinite | |
1363 * nchoosek | |
1364 * repmat | |
1365 * strcmp | |
1366 | |
1367 ** 64-bit integer arithmetic. | |
1368 | |
1369 Arithmetic with 64-bit integers (int64 and uint64 types) is fully | |
1370 supported, with saturation semantics like the other integer types. | |
1371 Performance of most integer arithmetic operations has been | |
1372 improved by using integer arithmetic directly. Previously, Octave | |
1373 performed integer math with saturation semantics by converting the | |
1374 operands to double precision, performing the operation, and then | |
1375 converting the result back to an integer value, truncating if | |
1376 necessary. | |
1377 | |
1378 ** Diagonal and permutation matrices. | |
1379 | |
1380 The interpreter can now treat diagonal and permutation matrices as | |
1381 special objects that store only the non-zero elements, rather than | |
1382 general full matrices. Therefore, it is now possible to construct | |
1383 and use these matrices in linear algebra without suffering a | |
1384 performance penalty due to storing large numbers of zero elements. | |
1385 | |
1386 ** Improvements to fsolve. | |
1387 | |
1388 The fsolve function now accepts an option structure argument (see | |
1389 also the optimset function). The INFO values returned from fsolve | |
1390 have changed to be compatible with Matlab's fsolve function. | |
1391 Additionally, fsolve is now able to solve overdetermined systems, | |
1392 complex-differentiable complex systems, systems with a sparse | |
1393 jacobian and can work in single precision if given single precision | |
1394 inputs. It can also be called recursively. | |
1395 | |
1396 ** Improvements to the norm function. | |
1397 | |
1398 The norm function is now able to compute row or column norms of a | |
1399 matrix in a single call, as well as general matrix p-norms. | |
1400 | |
1401 ** New functions for computing some eigenvalues or singular values. | |
1402 | |
1403 The eigs and svds functions have been included in Octave. These | |
1404 functions require the ARPACK library (now distributed under a | |
1405 GPL-compatible license). | |
1406 | |
1407 ** New QR and Cholesky factorization updating functions. | |
1408 | |
1409 choldelete cholshift qrdelete qrshift | |
1410 cholinsert cholupdate qrinsert qrupdate | |
1411 | |
1412 ** New quadrature functions. | |
1413 | |
1414 dblquad quadgk quadv triplequad | |
1415 | |
1416 ** New functions for reading and writing images. | |
1417 | |
1418 The imwrite and imread functions have been included in Octave. | |
1419 These functions require the GraphicsMagick library. The new | |
1420 function imfinfo provides information about an image file (size, | |
1421 type, colors, etc.) | |
1422 | |
1423 ** The input_event_hook function has been replaced by the pair of | |
1424 functions add_input_event_hook and remove_input_event_hook so that | |
1425 more than one hook function may be installed at a time. | |
1426 | |
1427 ** Other miscellaneous new functions. | |
1428 | |
1429 addtodate hypot reallog | |
1430 bicgstab idivide realpow | |
1431 cellslices info realsqrt | |
1432 cgs interp1q rectint | |
1433 command_line_path isdebugmode regexptranslate | |
1434 contrast isfloat restoredefaultpath | |
1435 convn isstrprop roundb | |
1436 cummin log1p rundemos | |
1437 cummax lsqnonneg runlength | |
1438 datetick matlabroot saveobj | |
1439 display namelengthmax spaugment | |
1440 expm1 nargoutchk strchr | |
1441 filemarker pathdef strvcat | |
1442 fstat perl subspace | |
1443 full prctile symvar | |
1444 fzero quantile treelayout | |
1445 genvarname re_read_readline_init_file validatestring | |
1446 histc | |
1447 | |
1448 ** Changes to strcat. | |
1449 | |
1450 The strcat function is now compatible with Matlab's strcat | |
1451 function, which removes trailing whitespace when concatenating | |
1452 character strings. For example | |
1453 | |
1454 strcat ('foo ', 'bar') | |
1455 ==> 'foobar' | |
1456 | |
1457 The new function cstrcat provides the previous behavior of | |
1458 Octave's strcat. | |
1459 | |
1460 ** Improvements to the help functions. | |
1461 | |
1462 The help system has been mostly re-implemented in .m files to make | |
1463 it easier to modify. Performance of the lookfor function has been | |
1464 greatly improved by caching the help text from all functions that | |
1465 are distributed with Octave. The pkg function has been modified | |
1466 to generate cache files for external packages when they are | |
1467 installed. | |
1468 | |
1469 ** Deprecated functions. | |
1470 | |
1471 The following functions were deprecated in Octave 3.0 and will be | |
1472 removed from Octave 3.4 (or whatever version is the second major | |
1473 release after 3.0): | |
1474 | |
1475 beta_cdf geometric_pdf pascal_pdf | |
1476 beta_inv geometric_rnd pascal_rnd | |
1477 beta_pdf hypergeometric_cdf poisson_cdf | |
1478 beta_rnd hypergeometric_inv poisson_inv | |
1479 binomial_cdf hypergeometric_pdf poisson_pdf | |
1480 binomial_inv hypergeometric_rnd poisson_rnd | |
1481 binomial_pdf intersection polyinteg | |
1482 binomial_rnd is_bool setstr | |
1483 chisquare_cdf is_complex struct_contains | |
1484 chisquare_inv is_list struct_elements | |
1485 chisquare_pdf is_matrix t_cdf | |
1486 chisquare_rnd is_scalar t_inv | |
1487 clearplot is_square t_pdf | |
1488 clg is_stream t_rnd | |
1489 com2str is_struct uniform_cdf | |
1490 exponential_cdf is_symmetric uniform_inv | |
1491 exponential_inv is_vector uniform_pdf | |
1492 exponential_pdf isstr uniform_rnd | |
1493 exponential_rnd lognormal_cdf weibcdf | |
1494 f_cdf lognormal_inv weibinv | |
1495 f_inv lognormal_pdf weibpdf | |
1496 f_pdf lognormal_rnd weibrnd | |
1497 f_rnd meshdom weibull_cdf | |
1498 gamma_cdf normal_cdf weibull_inv | |
1499 gamma_inv normal_inv weibull_pdf | |
1500 gamma_pdf normal_pdf weibull_rnd | |
1501 gamma_rnd normal_rnd wiener_rnd | |
1502 geometric_cdf pascal_cdf | |
1503 geometric_inv pascal_inv | |
1504 | |
1505 The following functions are now deprecated in Octave 3.2 and will | |
1506 be removed from Octave 3.6 (or whatever version is the second major | |
1507 release after 3.2): | |
1508 | |
1509 create_set spcholinv spmax | |
1510 dmult spcumprod spmin | |
1511 iscommand spcumsum spprod | |
1512 israwcommand spdet spqr | |
1513 lchol spdiag spsum | |
1514 loadimage spfind spsumsq | |
1515 mark_as_command spinv str2mat | |
1516 mark_as_rawcommand spkron unmark_command | |
1517 spatan2 splchol unmark_rawcommand | |
1518 spchol split | |
1519 spchol2inv splu | |
1520 | |
1 Summary of important user-visible changes for version 3.0: | 1521 Summary of important user-visible changes for version 3.0: |
2 --------------------------------------------------------- | 1522 --------------------------------------------------------- |
3 | 1523 |
4 ** Compatibility with Matlab graphics is much better now. We now | 1524 ** Compatibility with Matlab graphics is much better now. We now |
5 have some graphics features that work like Matlab's Handle | 1525 have some graphics features that work like Matlab's Handle |
194 ** For compatibility with Matlab, gamcdf, gaminv, gampdf, gamrnd, | 1714 ** For compatibility with Matlab, gamcdf, gaminv, gampdf, gamrnd, |
195 expcdf, expinv, exppdf and exprnd have been modified to compute | 1715 expcdf, expinv, exppdf and exprnd have been modified to compute |
196 the distributions using the standard scale factor rather than | 1716 the distributions using the standard scale factor rather than |
197 one over the scale factor. | 1717 one over the scale factor. |
198 | 1718 |
1719 --------------------------------------------------------- | |
199 | 1720 |
200 See NEWS.2 for old news. | 1721 See NEWS.2 for old news. |