February 23, 2019
News for version 9 8 7 6 5 4.4 4.2 4 3.8 3.6 3.4 3.2 3 2 1 (Release History)
The Octave plotting system now supports high resolution screens, i.e., those with greater than 96 DPI which are referred to as HiDPI/Retina monitors.
Unicode character support for files and folders in Windows.
A new core function movfun
will apply a function to a sliding
window of arbitrary size on a dataset and accumulate the results.
Many common cases have been implemented using the naming
scheme movXXX
where XXX
is the function that will be applied.
For example, the moving average over a dataset is movmean
.
New moving window functions:
movfun
movslice
movmad
movmax
movmean
movmedian
movmin
movprod
movstd
movsum
movvar
The fsolve
function has been tweaked to use larger step sizes when
calculating the Jacobian of a function with finite differences.
This leads to faster convergence.
The ranks
function has been recoded for performance and is now 25X
faster. In addition, it now supports a third argument that specifies
how to resolve the ranking of tie values.
The function randi
has been recoded to produce an unbiased (all
results are equally likely) sample of integers. This may produce
different results in existing code. If it is necessary to reproduce
the exact random integer sequence as in previous versions use
ri = imin + floor ((imax - imin + 1) * rand ());
The function isdefinite
now returns true
or false
rather than
-1
, 0
, or 1
. To test for a positive semi-definite matrix (old
output of 0
) check whether the following two conditions hold:
isdefinite (A) => 0
and isdefinite (A + 5*TOL, TOL) => 1
The intmax
, intmin
, and flintmax
functions now accept a variable
as input. Existing code to query the range of an existing variable can
be simplified by removing the call to class
that was previously
required. For example defining the variable x = int8 (3)
in the
workspace, calls like
range = [ intmin(class(x)), intmax(class(x)) ]
can in Octave 5 be simplified to range = [ intmin(x), intmax(x) ]
.
The path handling functions no longer perform variable or brace expansion on path elements and Octave’s load-path is no longer subject to these expansions.
A new printing device is available, "-ddumb"
, which produces ASCII
art for plots. This device is only available with the gnuplot toolkit.
The GUI requires Qt libraries. The minimum Qt4 version supported is Qt4.8. Qt5 of any version is preferred.
The OSMesa library is no longer used. To print invisible figures
when using OpenGL graphics, the Qt QOFFSCREENSURFACE
feature must be
available and you must use the qt graphics toolkit.
The FFTW library is now required to perform FFT calculations. The FFTPACK sources have been removed from Octave.
The determination of an object’s dimensions, size, and shape by the
functions ndims
, rows
, columns
, isscalar
, isvector
,
isrow
, iscolumn
, ismatrix
, and issquare
now fully depends
on the function size. Thus, any user-defined object can ensure correct
treatment by the aforementioned functions by properly overloading the
size
function.
The functions issymmetric
and ishermitian
accept an option
"nonskew"
or "skew"
to calculate the symmetric or skew-symmetric
property of a matrix. Performance has also been increased.
The issorted
function now uses a direction option of "ascend"
or "descend"
. Change all uses of "ascending"
and "descending"
in existing code to the new options.
The strncmp
and strncmpi
functions now return true
if the two
input strings match, even though the number of characters specified
by n
exceeds the string length. For Example:
strncmp ("abc", "abc", 100)
returns true
in Octave 5 and false
in older versions of Octave.
The str2func
function no longer accepts a second "global"
argument.
This argument was typically used to allow functions that accept
function names as arguments to avoid conflicts with subfunctions or
nested functions. Instead, it’s best to avoid this situation
entirely and require users to pass function handles rather than
function names.
Using clear
with no arguments now removes only local variables
from the current workspace. Global variables will no longer be
visible, but they continue to exist in the global workspace and
possibly other workspaces such as the base workspace.
Several default solver options have been changed to be Matlab compatible. This may result in existing code producing different results.
fsolve
Option | New Default | Old Default |
---|---|---|
FinDiffType |
"forward" |
"central" |
MaxFunEvals |
100*length(x0) |
Inf |
TolFun |
1e-6 |
1e-7 |
TolX |
1e-6 |
1e-7 |
Updating |
"off" |
"on" |
fminsearch
Option | New Default | Old Default |
---|---|---|
TolFun |
1e-7 |
1e-4 |
fminbnd
Option | New Default | Old Default |
---|---|---|
MaxFunEvals |
500 |
Inf |
MaxIter |
500 |
Inf |
TolX |
1e-4 |
1e-8 |
fminunc
Option | New Default | Old Default |
---|---|---|
FinDiffType |
"forward" |
"central" |
MaxFunEvals |
100*length(x0) |
Inf |
TolX |
1e-6 |
1e-7 |
TolFun |
1e-6 |
1e-7 |
Figure graphic objects have a new property "Number"
which is
read-only and will return the handle (number) of the figure.
However, if the property "IntegerHandle"
has been set to "off"
then the property will return an empty matrix []
.
Patch and surface graphic objects now use the "FaceNormals"
property
for flat lighting.
"FaceNormals"
and "VertexNormals"
for patch and surface graphic
objects are now calculated only when necessary to improve graphics
performance. In order for any normals to be calculated the
"FaceLighting"
property must be set to "flat"
(FaceNormals) or
"gouraud"
(VertexNormals), and a light object must be present
in the axes.
The "Margin"
property of text
-objects has a new default of 3
rather than 2
.
Printing to raster formats (bitmaps like PNG or JPEG) now uses an
OpenGL-based method by default. The print options "-opengl"
(raster) and "-painters"
(vector) have been added (“qt” toolkit
only). The figure property "renderer"
specifies which renderer to
use. When the property "renderermode"
is "auto"
Octave will select
"-opengl"
for a raster output format and "-painters"
for a vector
output format.
A new print option "-RGBImage"
has been added which captures the
pixels of a figure as an image. This is similar to screen capture
tools, except that print formatting options can be used to, for
example, change the resolution or display the image in black and
white.
Two new print options for page-based formats (PDF, PostScript) have
been added. The "-fillpage"
option will stretch the plot to occupy
the entire page with 0.25 inch margins all around. The "-bestfit"
option will expand the plot to take up as much room as possible on
the page without distorting the original aspect ratio of the plot.
Printing using the "-dtiff"
output device will now create compressed
images using LZW compression. To produce uncompressed images use the
"-dtiffn"
device.
The following functions have been declared legacy functions which means they are obsolete and should not be used in any new code. Unlike deprecated functions, however, their removal from Octave has not yet been scheduled.
Function | Replacement |
---|---|
findstr |
strfind |
flipdim |
flip |
isdir |
isfolder or dir_in_loadpath |
isequalwithequalnans |
isequaln |
isstr |
ischar |
setstr |
char |
strmatch |
strncmp or strcmp |
strread |
textscan |
textread |
textscan |
The following functions and graphics properties have been deprecated in Octave 5 and will be removed from Octave 7 (or whatever version is the second major release after 5):
Functions
Function | Replacement |
---|---|
output_max_field_width |
output_precision |
is_keyword |
iskeyword |
Graphics properties
Object | Property | Value |
---|---|---|
text |
fontangle |
"oblique" |
uibuttongroup |
fontangle |
"oblique" |
uicontrol |
fontangle |
"oblique" |
uipanel |
fontangle |
"oblique" |
uitable |
fontangle |
"oblique" |
Specifying legend
position with a numeric argument is deprecated.
Use a string argument instead.
The environment variable used by mkoctfile
for linker flags is now
LDFLAGS
rather than LFLAGS
. LFLAGS
is deprecated, and a warning
is emitted if is used, but it will continue to work.
The following functions and properties were deprecated in Octave 4.2 and have been removed from Octave 5.
Functions
Function | Replacement |
---|---|
bitmax |
flintmax |
mahalanobis |
mahal in Octave Forge statistics pkg |
md5sum |
hash |
octave_config_info |
__octave_config_info__ |
onenormest |
normest1 |
sleep |
pause |
usleep |
pause |
wavread |
audioread |
wavwrite |
audiowrite |
Properties
Object | Property | Value |
---|---|---|
axes |
xaxislocation |
"zero" |
yaxislocation |
"zero" |
|
hggroup |
erasemode |
|
image |
erasemode |
|
line |
erasemode |
|
patch |
erasemode |
|
patch |
normalmode |
|
surface |
erasemode |
|
surface |
normalmode |
|
text |
erasemode |
clearvars
isfile
isfolder
matlab.lang.makeUniqueStrings
matlab.lang.makeValidName
movegui
movfun
movie
movmad
movmax
movmean
movmedian
movmin
movprod
movslice
movstd
movsum
movvar
openfig
ordeig
savefig
uitable