1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200
|
Summary of important user-visible changes for version 3.0:
---------------------------------------------------------
** Compatibility with Matlab graphics is much better now. We now
have some graphics features that work like Matlab's Handle
Graphics (tm):
+ You can make a subplot and then use the print function to
generate a file with the plot.
+ RGB line colors are supported if you use gnuplot 4.2. Octave
can still use gnuplot 4.0, but there is no way to set arbitrary
line colors with it when using the Matlab-style plot functions.
There never was any way to do this reliably with older versions
of gnuplot (whether run from Octave or not) since it only
provided a limited set to choose from, and they were terminal
dependent, so choosing color 1 with the X11 terminal would be
different from color 1 with the PostScript terminal. Valid RGB
colors for gnuplot 4.0 are the eight possible combinations of 0
and 1 for the R, G and B values. Invalid values are all mapped
to the same color.
This also affects patch objects used in the bar, countour, meshc
and surfc functions, where the bars and contours will be
monochrome. A workaround for this is to type "colormap gmap40"
that loads a colormap that in many cases will be adequate for
simple bar and contour plots.
+ You can control the width of lines using (for example):
line (x, y, "linewidth", 4, "color", [1, 0, 0.5]);
(this also shows the color feature).
+ With gnuplot 4.2, image data is plotted with gnuplot and may be
combined with other 2-d plot data.
+ Lines for contour plots are generated with an Octave function, so
contour plots are now 2-d plots instead of special 3-d plots, and
this allows you to plot additional 2-d data on top of a contour
plot.
+ With the gnuplot "extended" terminals the TeX interpreter is
emulated. However, this means that the TeX interpreter is only
supported on the postscript terminals with gnuplot 4.0. Under
gnuplot 4.2 the terminals aqua, dumb, png, jpeg, gif, pm, windows,
wxt, svg and x11 are supported as well.
+ The following plot commands are now considered obsolete and will
be removed from a future version of Octave:
__gnuplot_set__
__gnuplot_show__
__gnuplot_plot__
__gnuplot_splot__
__gnuplot_replot__
Additionally, these functions no longer have any effect on plots
created with the Matlab-style plot commands (plot, line, mesh,
semilogx, etc.).
+ Plot property values are not extensively checked. Specifying
invalid property values may produce unpredictible results.
+ Octave now sends data over the same pipe that is used to send
commands to gnuplot. While this avoids the problem of
cluttering /tmp with data files, it is no longer possible to use
the mouse to zoom in on plots. This is a limitation of gnuplot,
which is unable to zoom when the data it plots is not stored in
a file. Some work has been done to fix this problem in newer
versions of gnuplot (> 4.2.2). See for example, this thread
http://www.nabble.com/zooming-of-inline-data-tf4357017.html#a12416496
on the gnuplot development list.
** The way Octave handles search paths has changed. Instead of
setting the built-in variable LOADPATH, you must use addpath,
rmpath, or path to manipulate the function search path. These
functions will maintain "." at the head of the path, for
compatibility with Matlab.
Leading, trailing or doubled colons are no longer special.
Now, all elements of the search path are explicitly included in
the path when Octave starts. To display the path, use the path
function.
Path elements that end in // are no longer searched recursively.
Instead, you may use addpath and the genpath function to add an
entire directory tree to the path. For example,
addpath (genpath ("~/octave"));
will add ~/octave and all directories below it to the head of the
path.
** Previous versions of Octave had a number of built-in variables to
control warnings (for example, warn_divide_by_zero). These
variables have been replaced by warning identifiers that are used
with the warning function to control the state of warnings.
For example, instead of writing
warn_divide_by_zero = false;
to disable divide-by-zero warnings, you should write
warning ("off", "Octave:divide-by-zero");
You may use the same technique in your own code to control
warnings. For example, you can use
warning ("My-package:phase-of-the-moon",
"the phase of the moon could cause trouble today");
to allow users to control this warning using the
"My-package:phase-of-the-moon" warning identifier.
You may also enable or disable all warnings, or turn them into
errors:
warning ("on", "all");
warning ("off", "all");
warning ("error", "Octave:divide-by-zero");
warning ("error", "all");
You can query the state of current warnings using
warning ("query", ID)
warning ("query")
(only those warning IDs which have been explicitly set are
returned).
A partial list and description of warning identifiers is available
using
help warning_ids
** All built-in variables have been converted to functions. This
change simplifies the interpreter and allows a consistent
interface to internal variables for user-defined packages and the
core functions distributed with Octave. In most cases, code that
simply accesses internal variables does not need to change. Code
that sets internal variables will change. For example, instead of
writing
PS1 = ">> ";
you will need to write
PS1 (">> ");
If you need write code that will run in both old and new versions
of Octave, you can use something like
if (exist ("OCTAVE_VERSION") == 5)
## New:
PS1 (">> ");
else
## Old:
PS1 = ">> ";
endif
** For compatibility with Matlab, the output order of Octave's
"system" function has changed from
[output, status] = system (cmd);
to
[status, output] = system (cmd);
** For compatibility with Matlab, the output of Octave's fsolve
function has been changed from
[x, info, msg] = fsolve (...);
to
[x, fval, info] = fsolve (...);
** For compatibility with Matlab, normcdf, norminv, normpdf, and
normrnd have been modified to compute distributions using the
standard deviation instead of the variance.
** For compatibility with Matlab, gamcdf, gaminv, gampdf, gamrnd,
expcdf, expinv, exppdf and exprnd have been modified to compute
the distributions using the standard scale factor rather than
one over the scale factor.
See NEWS.2 for old news.
|