
GNU Octave è la principale alternativa open source a Matlab.
GNU Octave è un linguaggio di programmazione di alto livello. Fornisce un'interfaccia a riga di comando orientata a risolvere problemi di calcolo numerico, utilizzando un linguaggio estremamente simile a Matlab e per certi versi compatibile con esso.
In ambito ingegneristico Matlab é molto usato e Octave si presenta come una valida alternativa open source. Con la nuova versione di sviluppo, gli sviluppatori cercano di implementare le stesse funzioni con lo stesso nome di Matlab in octave
Octave possiede numerose librerie che permettono di risolvere problemi numerici di algebra lineare, di trovare le radici di equazioni non lineari, integrare funzioni ordinarie, manipolare espressioni polinomiali, integrare equazioni differenziali e alle differenze algebriche, e altro ancora. Tramite altre librerie presenti in Octave è possibile ottenere con facilità grafici bidimensionali e tridimensionali, e effettuare operazioni di input/output.
Octave è facilmente estendibile e customizzabile, sia attraverso funzioni scritte nel linguaggio nativo di Octave, sia attraverso moduli caricabili dinamicamente che possono essere scritti in C, C++, Fortran e altri linguaggi.
Per chi utilizza Matlab e cerca un'alternativa funzionale e open source, Octave è senz'altro la scelta migliore.
Nota: Octave è anche disponibile per Mac come parte del progetto Fink. Chi fosse interessato può trovare ulteriori informazioni direttamente sul sito del progetto Fink
Vantaggi:
- Facilissimo da utilizzare per chi conosce Matlab
- Per un utilizzo generale offre gli stessi tool di Matlab
Svantaggi:
- La compatilità con Matlab è parziale
- Mancano diversi tool presenti in Matlab per utilizzi particolari
News for Octave Version 3
- Compatibility with Matlab graphics is much better. 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 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 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"." at the head of the path, for compatibility with Matlab. to manipulate the function search path. These functions will maintain
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, normcdf, norminv, normpdf, and normrnd have been modified to compute distributions using the standard deviation instead of the variance.
- 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.



digg it
del.icio.us









Non c’è ancora nessun commento. »