215
|
1 --- |
|
2 layout: page |
|
3 title: GNU Octave Version 3.8 |
|
4 menu: false |
|
5 permalink: NEWS-3.8.html |
|
6 --- |
|
7 |
|
8 ## Summary of important user-visible changes |
|
9 |
|
10 December 27, 2013 |
|
11 |
|
12 {% include release_news_select.md %} |
|
13 |
|
14 <pre> |
|
15 ** One of the biggest new features for Octave 3.8 is a graphical user |
|
16 interface. It is the one thing that users have requested most |
|
17 often over the last few years and now it is almost ready. But |
|
18 because it is not quite as polished as we would like, we have |
|
19 decided to wait until the 4.0.x release series before making the |
|
20 GUI the default interface (until then, you can use the --force-gui |
|
21 option to start the GUI). |
|
22 |
|
23 Given the length of time and the number of bug fixes and |
|
24 improvements since the last major release Octave, we also decided |
|
25 against delaying the release of all these new improvements any |
|
26 longer just to perfect the GUI. So please enjoy the 3.8 release of |
|
27 Octave and the preview of the new GUI. We believe it is working |
|
28 reasonably well, but we also know that there are some obvious rough |
|
29 spots and many things that could be improved. |
|
30 |
|
31 WE NEED YOUR HELP. There are many ways that you can help us fix |
|
32 the remaining problems, complete the GUI, and improve the overall |
|
33 user experience for both novices and experts alike: |
|
34 |
|
35 * If you are a skilled software developer, you can help by |
|
36 contributing your time to help with Octave's development. See |
|
37 http://octave.org/get-involved.html for more information. |
|
38 |
|
39 * If Octave does not work properly, you are encouraged |
|
40 report the problems you find. See http://octave.org/bugs.html |
|
41 for more information about how to report problems. |
|
42 |
|
43 * Whether you are a user or developer, you can help to fund the |
|
44 project. Octave development takes a lot of time and expertise. |
|
45 Your contributions help to ensure that Octave will continue to |
|
46 improve. See http://octave.org/donate.html for more details. |
|
47 |
|
48 We hope you find Octave to be useful. Please help us make it even |
|
49 better for the future! |
|
50 |
|
51 ** Octave now uses OpenGL graphics by default with FLTK widgets. If |
|
52 OpenGL libraries or FLTK widgets are not available when Octave is |
|
53 built, gnuplot is used. You may also choose to use gnuplot for |
|
54 graphics by executing the command |
|
55 |
|
56 graphics_toolkit ("gnuplot") |
|
57 |
|
58 Adding this command to your ~/.octaverc file will set the default |
|
59 for each session. |
|
60 |
|
61 ** Printing or saving figures with OpenGL graphics requires the |
|
62 gl2ps library which is no longer distributed with Octave. The |
|
63 software is widely available in most package managers. If a |
|
64 pre-compiled package does not exist for your system, you can find |
|
65 the current sources at http://www.geuz.org/gl2ps/. |
|
66 |
|
67 ** Octave now supports nested functions with scoping rules that are |
|
68 compatible with Matlab. A nested function is one declared and defined |
|
69 within the body of another function. The nested function is only |
|
70 accessible from within the enclosing function which makes it one |
|
71 method for making private functions whose names do not conflict with those |
|
72 in the global namespace (See also subfunctions and private functions). |
|
73 In addition, variables in the enclosing function are visible within the |
|
74 nested function. This makes it possible to have a pseudo-global variable |
|
75 which can be seen by a group of functions, but which is not visible in |
|
76 the global namespace. |
|
77 |
|
78 Example: |
|
79 function outerfunc (...) |
|
80 ... |
|
81 function nested1 (...) |
|
82 ... |
|
83 function nested2 (...) |
|
84 ... |
|
85 endfunction |
|
86 endfunction |
|
87 |
|
88 function nested3 (...) |
|
89 ... |
|
90 endfunction |
|
91 endfunction |
|
92 |
|
93 ** Line continuations inside character strings have changed. |
|
94 |
|
95 The sequence '...' is no longer recognized as a line continuation |
|
96 inside a character string. A backslash '\' followed by a newline |
|
97 character is no longer recognized as a line continuation inside |
|
98 single-quoted character strings. Inside double-quoted character |
|
99 strings, a backslash followed by a newline character is still |
|
100 recognized as a line continuation, but the backslash character must |
|
101 be followed *immediately* by the newline character. No whitespace or |
|
102 end-of-line comment may appear between them. |
|
103 |
|
104 ** Backslash as a continuation marker outside of double-quoted strings |
|
105 is now deprecated. |
|
106 |
|
107 Using '\' as a continuation marker outside of double quoted strings |
|
108 is now deprecated and will be removed from a future version of |
|
109 Octave. When that is done, the behavior of |
|
110 |
|
111 (a \ |
|
112 b) |
|
113 |
|
114 will be consistent with other binary operators. |
|
115 |
|
116 ** Redundant terminal comma accepted by parser |
|
117 |
|
118 A redundant terminal comma is now accepted in matrix |
|
119 definitions which allows writing code such as |
|
120 |
|
121 [a,... |
|
122 b,... |
|
123 c,... |
|
124 ] = deal (1,2,3) |
|
125 |
|
126 ** Octave now has limited support for named exceptions |
|
127 |
|
128 The following syntax is now accepted: |
|
129 |
|
130 try |
|
131 statements |
|
132 catch exception-id |
|
133 statements |
|
134 end |
|
135 |
|
136 The exception-id is a structure with the fields "message" and |
|
137 "identifier". For example |
|
138 |
|
139 try |
|
140 error ("Octave:error-id", "error message"); |
|
141 catch myerr |
|
142 printf ("identifier: %s\n", myerr.identifier); |
|
143 printf ("message: %s\n", myerr.message); |
|
144 end_try_catch |
|
145 |
|
146 When classdef-style classes are added to Octave, the exception-id |
|
147 will become an MException object. |
|
148 |
|
149 ** Warning states may now be set temporarily, until the end of the |
|
150 current function, using the syntax |
|
151 |
|
152 warning STATE ID "local" |
|
153 |
|
154 in which STATE may be "on", "off", or "error". Changes to warning |
|
155 states that are set locally affect the current function and all |
|
156 functions called from the current scope. The previous warning state |
|
157 is restored on return from the current function. The "local" |
|
158 option is ignored if used in the top-level workspace. |
|
159 |
|
160 ** Warning IDs renamed: |
|
161 |
|
162 Octave:array-as-scalar => Octave:array-to-scalar |
|
163 Octave:array-as-vector => Octave:array-to-vector |
|
164 |
|
165 ** 'emptymatch', 'noemptymatch' options added to regular expressions. |
|
166 |
|
167 With this addition Octave now accepts the entire set of Matlab options |
|
168 for regular expressions. 'noemptymatch' is the default, but 'emptymatch' |
|
169 has certain uses where you need to match an assertion rather than actual |
|
170 characters. For example, |
|
171 |
|
172 regexprep ('World', '^', 'Hello ', 'emptymatch') |
|
173 => Hello World |
|
174 |
|
175 where the pattern is actually the assertion '^' or start-of-line. |
|
176 |
|
177 ** For compatibility with Matlab, the regexp, regexpi, and regexprep |
|
178 functions now process backslash escape sequences in single-quoted pattern |
|
179 strings. In addition, the regexprep function now processes backslash |
|
180 escapes in single-quoted replacement strings. For example, |
|
181 |
|
182 regexprep (str, '\t', '\n') |
|
183 |
|
184 would search the variable str for a TAB character (escape sequence \t) |
|
185 and replace it with a NEWLINE (escape sequence \n). Previously the |
|
186 expression would have searched for a literal '\' followed by 't' and |
|
187 replaced the two characters with the sequence '\', 'n'. |
|
188 |
|
189 ** A TeX parser has been implemented for the FLTK toolkit and is the default |
|
190 for any text object including titles and axis labels. The TeX parser is |
|
191 supported only for display on a monitor, not for printing. |
|
192 |
|
193 A quick summary of features: |
|
194 |
|
195 Code Feature Example Comment |
|
196 ----------------------------------------------------------------- |
|
197 _ subscript H_2O formula for water |
|
198 ^ exponent y=x^2 formula for parabola |
|
199 \char symbol \beta Greek symbol beta |
|
200 \fontname font \fontname{Arial} set Arial font |
|
201 \fontsize fontsize \fontsize{16} set fontsize 16 |
|
202 \color[rgb] fontcolor \color[rgb]{1 0 1} set magenta color |
|
203 \bf bold \bfBold Text bold font |
|
204 \it italic \itItalic Text italic font |
|
205 \sl slanted \slOblique Text slanted font |
|
206 \rm normal \bfBold\rmNormal normal font |
|
207 {} group {\bf Bold}Normal group objects |
|
208 e^{i*\pi} = -1 group objects |
|
209 |
|
210 ** The m-files in the plot directory have been overhauled. |
|
211 |
|
212 The plot functions now produce output that is nearly visually compatible |
|
213 with Matlab. Plot performance has also increased, dramatically for some |
|
214 functions such as comet and waitbar. Finally, the documentation for most |
|
215 functions has been updated so it should be clearer both how to use a |
|
216 function and when a function is appropriate. |
|
217 |
|
218 ** The m-files in the image directory have been overhauled. |
|
219 |
|
220 The principal benefit is that Octave will now no longer automatically |
|
221 convert images stored with integers to doubles. Storing images as uint8 |
|
222 or uint16 requires only 1/8 or 1/4 the memory of an image stored using |
|
223 doubles. For certain operations, such as fft2, the image must still be |
|
224 converted to double in order to work. |
|
225 |
|
226 Other changes include fixes to the way indexed images are read from a |
|
227 colormap depending on the image class (integer images have a -1 offset to |
|
228 the colormap row number). |
|
229 |
|
230 ** The imread and imwrite functions have been completely rewritten. |
|
231 |
|
232 The main changes relate to the alpha channel, support for reading and |
|
233 writing of floating point images, implemented writing of indexed images, |
|
234 and appending images to multipage image files. |
|
235 |
|
236 The issues that may arise due to backwards incompatibility are: |
|
237 |
|
238 * imwrite no longer interprets a length of 2 or 4 in the third dimension |
|
239 as grayscale or RGB with alpha channel (a length of 4 will be saved |
|
240 as a CMYK image). Alpha channel must be passed as separate argument. |
|
241 |
|
242 * imread will always return the colormap indexes when reading an indexed |
|
243 image, even if the colormap is not requested as output. |
|
244 |
|
245 * transparency values are now inverted from previous Octave versions |
|
246 (0 is for completely transparent instead of completely opaque). |
|
247 |
|
248 In addition, the function imformats has been implemented to expand |
|
249 reading and writing of images of different formats through imread |
|
250 and imwrite. |
|
251 |
|
252 ** The colormap function now provides new options--"list", "register", |
|
253 and "unregister"--to list all available colormap functions, and to |
|
254 add or remove a function name from the list of known colormap |
|
255 functions. Packages that implement extra colormaps should use these |
|
256 commands with PKG_ADD and PKG_DEL statements. |
|
257 |
|
258 ** strsplit has been modified to be compatible with Matlab. There |
|
259 are two instances where backward compatibility is broken. |
|
260 |
|
261 (1) Delimiters are now string vectors, not scalars. |
|
262 |
|
263 Octave's legacy behavior |
|
264 |
|
265 strsplit ("1 2, 3", ", ") |
|
266 ans = |
|
267 { |
|
268 [1,1] = 1 |
|
269 [1,2] = 2 |
|
270 [1,3] = |
|
271 [1,4] = 3 |
|
272 } |
|
273 |
|
274 Matlab compatible behavior |
|
275 |
|
276 strsplit ("1 2, 3", ", ") |
|
277 ans = |
|
278 { |
|
279 [1,1] = 1 2 |
|
280 [1,2] = 3 |
|
281 } |
|
282 |
|
283 (2) By default, Matlab treats consecutive delimiters as a single |
|
284 delimiter. By default, Octave's legacy behavior was to return an |
|
285 empty string for the part between the delmiters. |
|
286 |
|
287 Where legacy behavior is desired, the call to strsplit() may be |
|
288 replaced by ostrsplit(), which is Octave's original implementation of |
|
289 strsplit(). |
|
290 |
|
291 ** The datevec function has been extended for better Matlab compatibility. |
|
292 It now accepts string inputs in the following numerical formats: 12, 21, |
|
293 22, 26, 29, 31. This is undocumented, but verifiable, Matlab behavior. |
|
294 In addition, the default for formats which do not specify a date is |
|
295 January 1st of the current year. The previous default was the current day, |
|
296 month, and year. This may produce changes in existing scripts. |
|
297 |
|
298 ** The error function and its derivatives has been extended to accept complex |
|
299 arguments. The following functions now accept complex inputs: |
|
300 |
|
301 erf erfc erfcx |
|
302 |
|
303 In addition two new error functions erfi (imaginary error function) and |
|
304 dawson (scaled imaginary error function) have been added. |
|
305 |
|
306 ** The glpk function has been modified to reflect changes in the GLPK |
|
307 library. The "round" and "itcnt" options have been removed. The |
|
308 "relax" option has been replaced by the "rtest" option. The numeric |
|
309 values of error codes and of some options have also changed. |
|
310 |
|
311 ** The kurtosis function has changed definition to be compatible with |
|
312 Matlab. It now returns the base kurtosis instead of the "excess kurtosis". |
|
313 The old behavior can be had by changing scripts to normalize with -3. |
|
314 |
|
315 "excess kurtosis" = kurtosis (x) - 3 |
|
316 |
|
317 ** The moment function has changed definition to be compatible with |
|
318 Matlab. It now returns the central moment instead of the raw moment. |
|
319 The old behavior can be had by passing the type argument "r" for raw. |
|
320 |
|
321 ** The default name of the Octave crash dump file is now |
|
322 "octave-workspace" instead of "octave-core". The exact name can |
|
323 always be customized with the octave_core_file_name function. |
|
324 |
|
325 ** A citation command has been added to display information on how to |
|
326 cite Octave and packages in publications. The package system will |
|
327 look for and install CITATION files from packages. |
|
328 |
|
329 ** The java package from Octave Forge is now part of core Octave. The |
|
330 following new functions are available for interacting with Java |
|
331 directly from Octave: |
|
332 |
|
333 debug_java java_matrix_autoconversion |
|
334 isjava java_unsigned_autoconversion |
|
335 java2mat javaaddpath |
|
336 javaArray javaclasspath |
|
337 javaMethod javamem |
|
338 javaObject javarmpath |
|
339 usejava |
|
340 |
|
341 In addition, the following functions that use the Java interface |
|
342 are now available (provided that Octave is compiled with support for |
|
343 Java enabled): |
|
344 |
|
345 helpdlg listdlg questdlg |
|
346 inputdlg msgbox warndlg |
|
347 |
|
348 ** Other new functions added in 3.8.0: |
|
349 |
|
350 atan2d erfi lines |
|
351 base64_decode expint linsolve |
|
352 base64_encode findfigs missing_component_hook |
|
353 betaincinv flintmax polyeig |
|
354 built_in_docstrings_file fminsearch prefdir |
|
355 cmpermute gallery preferences |
|
356 cmunique gco readline_re_read_init_file |
|
357 colorcube hdl2struct readline_read_init_file |
|
358 copyobj history_save rgbplot |
|
359 dawson imformats save_default_options |
|
360 dblist importdata shrinkfaces |
|
361 desktop isaxes splinefit |
|
362 doc_cache_create iscolormap stemleaf |
|
363 ellipj isequaln strjoin |
|
364 ellipke jit_debug struct2hdl |
|
365 erfcinv jit_enable tetramesh |
|
366 jit_startcnt waterfall |
|
367 |
|
368 ** Deprecated functions. |
|
369 |
|
370 The following functions were deprecated in Octave 3.4 and have been |
|
371 removed from Octave 3.8. |
|
372 |
|
373 autocor dispatch is_global setstr |
|
374 autocov fstat krylovb strerror |
|
375 betai gammai perror values |
|
376 cellidx glpkmex replot |
|
377 cquad is_duplicate_entry saveimage |
|
378 |
|
379 The following functions have been deprecated in Octave 3.8 and will |
|
380 be removed from Octave 3.12 (or whatever version is the second major |
|
381 release after 3.8): |
|
382 |
|
383 default_save_options java_new |
|
384 gen_doc_cache java_set |
|
385 interp1q java_unsigned_conversion |
|
386 isequalwithequalnans javafields |
|
387 java_convert_matrix javamethods |
|
388 java_debug re_read_readline_init_file |
|
389 java_get read_readline_init_file |
|
390 java_invoke saving_history |
|
391 |
|
392 |
|
393 The following keywords have been deprecated in Octave 3.8 and will |
|
394 be removed from Octave 3.12 (or whatever version is the second major |
|
395 release after 3.8): |
|
396 |
|
397 static |
|
398 |
|
399 The following configuration variables have been deprecated in Octave |
|
400 3.8 and will be removed from Octave 3.12 (or whatever version is the |
|
401 second major release after 3.8): |
|
402 |
|
403 CC_VERSION (now GCC_VERSION) |
|
404 CXX_VERSION (now GXX_VERSION) |
|
405 |
|
406 The internal class Octave_map has been deprecated in Octave 3.8 and |
|
407 will be removed from Octave 3.12 (or whatever version is the second |
|
408 major release after 3.8). Replacement classes are octave_map |
|
409 (struct array) or octave_scalar_map for a single structure. |
|
410 </pre> |