215
|
1 --- |
|
2 layout: page |
|
3 title: GNU Octave Version 3.2 |
|
4 menu: false |
|
5 permalink: NEWS-3.2.html |
|
6 --- |
|
7 |
|
8 ## Summary of important user-visible changes |
|
9 |
|
10 June 5, 2009 |
|
11 |
|
12 {% include release_news_select.md %} |
|
13 |
|
14 <pre> |
|
15 ** Compatibility with Matlab graphics has been improved. |
|
16 |
|
17 The hggroup object and associated listener callback functions have |
|
18 been added allowing the inclusion of group objects. Data sources |
|
19 have been added to these group objects such that |
|
20 |
|
21 x = 0:0.1:10; |
|
22 y = sin (x); |
|
23 plot (x, y, "ydatasource", "y"); |
|
24 for i = 1 : 100 |
|
25 pause(0.1) |
|
26 y = sin (x + 0.1 * i); |
|
27 refreshdata(); |
|
28 endfor |
|
29 |
|
30 works as expected. This capability has be used to introduce |
|
31 stem-series, bar-series, etc., objects for better Matlab |
|
32 compatibility. |
|
33 |
|
34 ** New graphics functions: |
|
35 |
|
36 addlistener ezcontour gcbo refresh |
|
37 addproperty ezcontourf ginput refreshdata |
|
38 allchild ezmesh gtext specular |
|
39 available_backends ezmeshc intwarning surfl |
|
40 backend ezplot ishghandle trisurf |
|
41 cla ezplot3 isocolors waitforbuttonpress |
|
42 clabel ezpolar isonormals |
|
43 comet ezsurf isosurface |
|
44 dellistener findall linkprop |
|
45 diffuse gcbf plotmatrix |
|
46 |
|
47 ** New experimental OpenGL/FLTK based plotting system. |
|
48 |
|
49 An experimental plotting system based on OpenGL and the FLTK |
|
50 toolkit is now part of Octave. This backend is disabled by |
|
51 default. You can switch to using it with the command |
|
52 |
|
53 backend ("fltk") |
|
54 |
|
55 for all future figures or for a particular figure with the command |
|
56 |
|
57 backend (h, "fltk") |
|
58 |
|
59 where "h" is a valid figure handle. Please note that this backend |
|
60 does not yet support text objects. Obviously, this is a necessary |
|
61 feature before it can be considered usable. We are looking for |
|
62 volunteers to help implement this missing feature. |
|
63 |
|
64 ** Functions providing direct access to gnuplot have been removed. |
|
65 |
|
66 The functions __gnuplot_plot__, __gnuplot_set__, __gnuplot_raw__, |
|
67 __gnuplot_show__, __gnuplot_replot__, __gnuplot_splot__, |
|
68 __gnuplot_save_data__ and __gnuplot_send_inline_data__ have been |
|
69 removed from Octave. These function were incompatible with the |
|
70 high level graphics handle code. |
|
71 |
|
72 ** The Control, Finance and Quaternion functions have been removed. |
|
73 |
|
74 These functions are now available as separate packages from |
|
75 |
|
76 http://octave.sourceforge.net/packages.html |
|
77 |
|
78 and can be reinstalled using the Octave package manager (see |
|
79 the pkg function). |
|
80 |
|
81 ** Specific sparse matrix functions removed. |
|
82 |
|
83 The following functions, which handled only sparse matrices have |
|
84 been removed. Instead of calling these functions directly, you |
|
85 should use the corresponding function without the "sp" prefix. |
|
86 |
|
87 spatan2 spcumsum spkron spprod |
|
88 spchol spdet splchol spqr |
|
89 spchol2inv spdiag splu spsum |
|
90 spcholinv spfind spmax spsumsqk |
|
91 spcumprod spinv spmin |
|
92 |
|
93 ** Improvements to the debugger. |
|
94 |
|
95 The interactive debugging features have been improved. Stopping |
|
96 on statements with dbstop should work correctly now. Stepping |
|
97 into and over functions, and stepping one statement at a time |
|
98 (with dbstep) now works. Moving up and down the call stack with |
|
99 dbup and dbdown now works. The dbstack function is now available |
|
100 to print the current function call stack. The new dbquit function |
|
101 is available to exit the debugging mode. |
|
102 |
|
103 ** Improved traceback error messages. |
|
104 |
|
105 Traceback error messages are much more concise and easier to |
|
106 understand. They now display information about the function call |
|
107 stack instead of the stack of all statements that were active at |
|
108 the point of the error. |
|
109 |
|
110 ** Object Oriented Programming. |
|
111 |
|
112 Octave now includes OOP features and the user can create their own |
|
113 class objects and overloaded functions and operators. For |
|
114 example, all methods of a class called "myclass" will be found in |
|
115 a directory "@myclass" on the users path. The class specific |
|
116 versions of functions and operators take precedence over the |
|
117 generic versions of these functions. |
|
118 |
|
119 New functions related to OOP include |
|
120 |
|
121 class inferiorto isobject loadobj methods superiorto |
|
122 |
|
123 See the Octave manual for more details. |
|
124 |
|
125 ** Parsing of Command-style Functions. |
|
126 |
|
127 Octave now parses command-style functions without needing to first |
|
128 declare them with "mark_as_command". The rules for recognizing a |
|
129 command-style function calls are |
|
130 |
|
131 * A command must appear as the first word in a statement, |
|
132 followed by a space. |
|
133 |
|
134 * The first character after the space must not be '=' or '(' |
|
135 |
|
136 * The next token after the space must not look like a binary |
|
137 operator. |
|
138 |
|
139 These rules should be mostly compatible with the way Matlab parses |
|
140 command-style function calls and allow users to define commands in |
|
141 .m files without having to mark them as commands. |
|
142 |
|
143 Note that previous versions of Octave allowed expressions like |
|
144 |
|
145 x = load -text foo.dat |
|
146 |
|
147 but an expression like this will now generate a parse error. In |
|
148 order to assign the value returned by a function to a variable, |
|
149 you must use the normal function call syntax: |
|
150 |
|
151 x = load ("-text", "foo.dat"); |
|
152 |
|
153 ** Block comments. |
|
154 |
|
155 Commented code can be between matching "#{" and "#}" or "%{" and |
|
156 "%}" markers, even if the commented code spans several line. This |
|
157 allows blocks code to be commented, without needing to comment |
|
158 each line. For example, |
|
159 |
|
160 function [s, t] = func (x, y) |
|
161 s = 2 * x; |
|
162 #{ |
|
163 s *= y; |
|
164 t = y + x; |
|
165 #} |
|
166 endfunction |
|
167 |
|
168 the lines "s *= y;" and "t = y + x" will not be executed. |
|
169 |
|
170 ** Special treatment in the parser of expressions like "a' * b". |
|
171 |
|
172 In these cases the transpose is no longer explicitly formed and |
|
173 BLAS libraries are called with the transpose flagged, |
|
174 significantly improving performance for these kinds of |
|
175 operations. |
|
176 |
|
177 ** Single Precision data type. |
|
178 |
|
179 Octave now includes a single precision data type. Single |
|
180 precision variables can be created with the "single" command, or |
|
181 from functions like ones, eye, etc. For example, |
|
182 |
|
183 single (1) |
|
184 ones (2, 2, "single") |
|
185 zeros (2, 2, "single") |
|
186 eye (2, 2, "single") |
|
187 Inf (2, 2, "single") |
|
188 NaN (2, 2, "single") |
|
189 NA (2, 2, "single") |
|
190 |
|
191 all create single precision variables. For compatibility with |
|
192 Matlab, mixed double/single precision operators and functions |
|
193 return single precision types. |
|
194 |
|
195 As a consequence of this addition to Octave the internal |
|
196 representation of the double precision NA value has changed, and |
|
197 so users that make use of data generated by Octave with R or |
|
198 visa-versa are warned that compatibility might not be assured. |
|
199 |
|
200 ** Improved array indexing. |
|
201 |
|
202 The underlying code used for indexing of arrays has been |
|
203 completely rewritten and indexing is now significantly faster. |
|
204 |
|
205 ** Improved memory management. |
|
206 |
|
207 Octave will now attempt to share data in some cases where previously |
|
208 a copy would be made, such as certain array slicing operations or |
|
209 conversions between cells, structs and cs-lists. This usually reduces |
|
210 both time and memory consumption. |
|
211 Also, Octave will now attempt to detect and optimize usage of a vector |
|
212 as a stack, when elements are being repeatedly inserted at/removed from |
|
213 the end of the vector. |
|
214 |
|
215 ** Improved performance for reduction operations. |
|
216 |
|
217 The performance of the sum, prod, sumsq, cumsum, cumprod, any, all, |
|
218 max and min functions has been significantly improved. |
|
219 |
|
220 ** Sorting and searching. |
|
221 |
|
222 The performance of sort has been improved, especially when sorting |
|
223 indices are requested. An efficient built-in issorted implementation |
|
224 was added. sortrows now uses a more efficient algorithm, especially |
|
225 in the homegeneous case. lookup is now a built-in function performing |
|
226 a binary search, optimized for long runs of close elements. Lookup |
|
227 also works with cell arrays of strings. |
|
228 |
|
229 ** Range arithmetics |
|
230 |
|
231 For some operations on ranges, Octave will attempt to keep the result as a |
|
232 range. These include negation, adding a scalar, subtracting a scalar, and |
|
233 multiplying by a scalar. Ranges with zero increment are allowed and can be |
|
234 constructed using the built-in function `ones'. |
|
235 |
|
236 ** Various performance improvements. |
|
237 |
|
238 Performance of a number of other built-in operations and functions was |
|
239 improved, including: |
|
240 |
|
241 * logical operations |
|
242 * comparison operators |
|
243 * element-wise power |
|
244 * accumarray |
|
245 * cellfun |
|
246 * isnan |
|
247 * isinf |
|
248 * isfinite |
|
249 * nchoosek |
|
250 * repmat |
|
251 * strcmp |
|
252 |
|
253 ** 64-bit integer arithmetic. |
|
254 |
|
255 Arithmetic with 64-bit integers (int64 and uint64 types) is fully |
|
256 supported, with saturation semantics like the other integer types. |
|
257 Performance of most integer arithmetic operations has been |
|
258 improved by using integer arithmetic directly. Previously, Octave |
|
259 performed integer math with saturation semantics by converting the |
|
260 operands to double precision, performing the operation, and then |
|
261 converting the result back to an integer value, truncating if |
|
262 necessary. |
|
263 |
|
264 ** Diagonal and permutation matrices. |
|
265 |
|
266 The interpreter can now treat diagonal and permutation matrices as |
|
267 special objects that store only the non-zero elements, rather than |
|
268 general full matrices. Therefore, it is now possible to construct |
|
269 and use these matrices in linear algebra without suffering a |
|
270 performance penalty due to storing large numbers of zero elements. |
|
271 |
|
272 ** Improvements to fsolve. |
|
273 |
|
274 The fsolve function now accepts an option structure argument (see |
|
275 also the optimset function). The INFO values returned from fsolve |
|
276 have changed to be compatible with Matlab's fsolve function. |
|
277 Additionally, fsolve is now able to solve overdetermined systems, |
|
278 complex-differentiable complex systems, systems with a sparse |
|
279 jacobian and can work in single precision if given single precision |
|
280 inputs. It can also be called recursively. |
|
281 |
|
282 ** Improvements to the norm function. |
|
283 |
|
284 The norm function is now able to compute row or column norms of a |
|
285 matrix in a single call, as well as general matrix p-norms. |
|
286 |
|
287 ** New functions for computing some eigenvalues or singular values. |
|
288 |
|
289 The eigs and svds functions have been included in Octave. These |
|
290 functions require the ARPACK library (now distributed under a |
|
291 GPL-compatible license). |
|
292 |
|
293 ** New QR and Cholesky factorization updating functions. |
|
294 |
|
295 choldelete cholshift qrdelete qrshift |
|
296 cholinsert cholupdate qrinsert qrupdate |
|
297 |
|
298 ** New quadrature functions. |
|
299 |
|
300 dblquad quadgk quadv triplequad |
|
301 |
|
302 ** New functions for reading and writing images. |
|
303 |
|
304 The imwrite and imread functions have been included in Octave. |
|
305 These functions require the GraphicsMagick library. The new |
|
306 function imfinfo provides information about an image file (size, |
|
307 type, colors, etc.) |
|
308 |
|
309 ** The input_event_hook function has been replaced by the pair of |
|
310 functions add_input_event_hook and remove_input_event_hook so that |
|
311 more than one hook function may be installed at a time. |
|
312 |
|
313 ** Other miscellaneous new functions. |
|
314 |
|
315 addtodate hypot reallog |
|
316 bicgstab idivide realpow |
|
317 cellslices info realsqrt |
|
318 cgs interp1q rectint |
|
319 command_line_path isdebugmode regexptranslate |
|
320 contrast isfloat restoredefaultpath |
|
321 convn isstrprop roundb |
|
322 cummin log1p rundemos |
|
323 cummax lsqnonneg runlength |
|
324 datetick matlabroot saveobj |
|
325 display namelengthmax spaugment |
|
326 expm1 nargoutchk strchr |
|
327 filemarker pathdef strvcat |
|
328 fstat perl subspace |
|
329 full prctile symvar |
|
330 fzero quantile treelayout |
|
331 genvarname re_read_readline_init_file validatestring |
|
332 histc |
|
333 |
|
334 ** Changes to strcat. |
|
335 |
|
336 The strcat function is now compatible with Matlab's strcat |
|
337 function, which removes trailing whitespace when concatenating |
|
338 character strings. For example |
|
339 |
|
340 strcat ('foo ', 'bar') |
|
341 ==> 'foobar' |
|
342 |
|
343 The new function cstrcat provides the previous behavior of |
|
344 Octave's strcat. |
|
345 |
|
346 ** Improvements to the help functions. |
|
347 |
|
348 The help system has been mostly re-implemented in .m files to make |
|
349 it easier to modify. Performance of the lookfor function has been |
|
350 greatly improved by caching the help text from all functions that |
|
351 are distributed with Octave. The pkg function has been modified |
|
352 to generate cache files for external packages when they are |
|
353 installed. |
|
354 |
|
355 ** Deprecated functions. |
|
356 |
|
357 The following functions were deprecated in Octave 3.0 and will be |
|
358 removed in Octave 3.4 (or whatever version is the second major |
|
359 release after 3.0): |
|
360 |
|
361 beta_cdf geometric_pdf pascal_pdf |
|
362 beta_inv geometric_rnd pascal_rnd |
|
363 beta_pdf hypergeometric_cdf poisson_cdf |
|
364 beta_rnd hypergeometric_inv poisson_inv |
|
365 binomial_cdf hypergeometric_pdf poisson_pdf |
|
366 binomial_inv hypergeometric_rnd poisson_rnd |
|
367 binomial_pdf intersection polyinteg |
|
368 binomial_rnd is_bool setstr |
|
369 chisquare_cdf is_complex struct_contains |
|
370 chisquare_inv is_list struct_elements |
|
371 chisquare_pdf is_matrix t_cdf |
|
372 chisquare_rnd is_scalar t_inv |
|
373 clearplot is_square t_pdf |
|
374 clg is_stream t_rnd |
|
375 com2str is_struct uniform_cdf |
|
376 exponential_cdf is_symmetric uniform_inv |
|
377 exponential_inv is_vector uniform_pdf |
|
378 exponential_pdf isstr uniform_rnd |
|
379 exponential_rnd lognormal_cdf weibcdf |
|
380 f_cdf lognormal_inv weibinv |
|
381 f_inv lognormal_pdf weibpdf |
|
382 f_pdf lognormal_rnd weibrnd |
|
383 f_rnd meshdom weibull_cdf |
|
384 gamma_cdf normal_cdf weibull_inv |
|
385 gamma_inv normal_inv weibull_pdf |
|
386 gamma_pdf normal_pdf weibull_rnd |
|
387 gamma_rnd normal_rnd wiener_rnd |
|
388 geometric_cdf pascal_cdf |
|
389 geometric_inv pascal_inv |
|
390 |
|
391 The following functions are now deprecated in Octave 3.2 and will |
|
392 be removed in Octave 3.6 (or whatever version is the second major |
|
393 release after 3.2): |
|
394 |
|
395 create_set spcholinv spmax |
|
396 dmult spcumprod spmin |
|
397 iscommand spcumsum spprod |
|
398 israwcommand spdet spqr |
|
399 lchol spdiag spsum |
|
400 loadimage spfind spsumsq |
|
401 mark_as_command spinv str2mat |
|
402 mark_as_rawcommand spkron unmark_command |
|
403 spatan2 splchol unmark_rawcommand |
|
404 spchol split |
|
405 spchol2inv splu |
|
406 |
|
407 See NEWS.3 for old news. |
|
408 </pre> |