Introduction
Octave is a free, each free as in beer and free as in speech, MATLAB suitable numerical programming software out there underneath the GNU Common Public License. MATLAB, an abbreviation for “Matrix Laboratory”, is presently essentially the most extensively used industrial, proprietary numerical programming software. Even a single license for the MATLAB software program is a considerable value. MATLAB is basically a scripting language much like Perl, Python, or PHP with a complete, extremely built-in set of numerical, statistical, mathematical, and graphical features together with, for instance, the Fourier rework, matrix inversion, and histograms. Partially as a result of MATLAB has grow to be the de facto business normal for numerical programming, Octave is of explicit curiosity to people, corporations, and organizations engaged in numerical and mathematical programming and analysis and growth.
Presently (2011), there may be appreciable curiosity in utilizing machine studying and different superior mathematical methods to extend gross sales by detecting and predicting the shopping for patterns of finish customers of cell gadgets similar to iPhones and Android telephones, social networks similar to Fb and LinkedIn, and search engines like google and yahoo similar to Google and Yahoo. Octave has lengthy been used for knowledge evaluation, modeling, and machine studying. Along with its intensive built-in options, Octave has add on packages for optimization and mathematical mannequin becoming, econometrics, sign processing, picture processing, neural networks, and quite a few different areas used within the “cell social search” house. Octave can also be properly fitted to the event and implementation of algorithms for picture and video compression, audio compression, picture and video processing, audio processing, speech recognition, sample recognition, synthetic intelligence, design and simulation of machines, and lots of different sensible makes use of.
Generally, it’s quicker and simpler to develop mathematical algorithms in Octave and related instruments than compiled languages similar to C, C++, and Fortran. As a result of analysis and growth normally entails giant quantities of trial and error, Octave and related instruments have been used historically to prototype algorithms, analyze knowledge from experiments, and so forth, and solely sometimes for “manufacturing code” or industrial merchandise. Historically, as soon as a proof of idea existed in Octave or an identical software, it was typically translated to a quicker compiled language similar to C, C++, or Fortran, typically a time consuming, tedious, and expensive course of. Octave at present is sort of quick and fashionable computer systems are extraordinarily quick and cheap, in order that there are lots of initiatives, similar to knowledge mining within the backend of a site, that may in all probability skip the time consuming and expensive step of conversion to a compiled language. Sooner or later, simply in time (JIT) compilers and related capabilities will in all probability be added to Octave and related instruments in order that the remaining velocity distinction between Octave and conventional compiled languages similar to C, C++, and Fortran will vanish.
A big downside with utilizing Octave and lots of different free packages is making Octave work cost-effectively with different packages. It’s not often potential to make use of Octave for real-world initiatives as a purely standalone program. It’s typically essential to share knowledge and switch the management circulate between Octave and different packages together with working techniques, databases, spreadsheets, internet sites, and so forth. Many packages, particularly proprietary packages, obtain buyer lock-in by customized, typically secret, knowledge codecs and so forth. Microsoft Workplace is infamous for introducing new Workplace file codecs with every “improve” that aren’t backward suitable with earlier variations of Workplace. Thus, customers discover themselves receiving spreadsheets, paperwork, and so forth that they can not learn with their outdated model of Workplace, forcing an “improve” at substantial value.
This proliferation of ever-changing knowledge codecs, API’s, programming languages, and miscellaneous different requirements, presents a continuous downside for utilizing free software program. Finish customers typically spend hours, even days or perhaps weeks, determining the way to convert from one format to a different. Software program builders typically spend hours, days, weeks, and even months writing features to learn and write unsupported codecs, whether or not new or outdated. This makes it troublesome for finish customers or software program builders so as to add actual worth by inventing substantive new options, capabilities, and algorithms.
This text covers quite a few strategies, particular instructions and particular packages to make Octave work cost-effectively with different packages. There are various glorious on-line and revealed paperwork on the syntax of Octave and its add-on packages. Readers with particular questions of this kind are referred to the wonderful present documentation. Fairly, this text discusses among the points with making Octave work with different packages which are typically not lined explicitly or properly in the usual Octave or free software program literature.
Utilizing Easy Human Readable Recordsdata to Scale back Prices
There are a number of benefits to utilizing easy human readable recordsdata (sometimes ASCII or UTF8) similar to normal tab delimited recordsdata or comma separated values (CSV) recordsdata to export knowledge, import knowledge, and retailer knowledge. One can view the recordsdata in any textual content editor or phrase processor. Most packages similar to spreadsheets, databases, and lots of others can simply learn and write tab-delimited and comma separated values (CSV) recordsdata. Many scripting languages have direct assist for tab-delimited and typically comma separated values recordsdata. Basically all laptop programming languages can simply learn and write tab-delimited recordsdata; it’s only a few strains of code. Basically all laptop programming languages can learn and write comma separated values recordsdata; it requires extra programming, extra strains of code, however it may be performed. Octave can learn and write tab delimited recordsdata utilizing its built-in dlmread and dlmwrite features. Octave may also learn and write comma separated values recordsdata utilizing its built-in csvread and csvwrite features.
Traditionally, disk drives have been small. Networks had very restricted bandwidth. Computer systems had restricted velocity to learn and course of recordsdata. Therefore, binary file codecs had very clear benefits over bulkier human readable codecs similar to tab delimited recordsdata. With terabyte drives, 100 Megabit per second networks, and cheap 3 GHz multi-core computer systems, that is a lot much less true at present. Thus, there’s a sturdy case for utilizing easy human readable file codecs similar to tab delimited recordsdata to scale back excessive finish consumer and growth prices, keep away from buyer lock-in (a expensive proposition in case you are the shopper), and restrict the expensive perpetual improve cycle to real enhancements within the services.
Easy human readable recordsdata, notably tab delimited recordsdata, allow customers and builders to share knowledge between Octave and different packages shortly and simply. There are a number of caveats to pay attention to.
First, the fundamental knowledge kind in Octave is a “matrix,” initially a double precision two-dimensional array. The MATLAB/Octave “matrix” has been prolonged to a number of dimensions and likewise to assist characters and strings. The character/string assist in MATLAB and Octave is one thing of a patch. Thus, the dlmread and dlmwrite instructions in Octave deal with matrices or arrays of numbers wonderful however map character strings in tab-delimited recordsdata to zero (0). That is typically not a problem for the numerical programming and evaluation that Octave is normally used for. The string and textual content manipulation capabilities in Octave are restricted, so one ought to contemplate different instruments similar to Perl, Python, or Ruby for closely textual content or string oriented work.
The precision of floating level numbers may be a problem utilizing human readable recordsdata similar to tab delimited recordsdata that characterize floating level numbers as character strings similar to “1.123456” or “1.1234567890123456”. Octave, MATLAB, and most laptop packages use the IEEE-754 normal for floating level numbers, or extensions of this normal. On this normal, a single precision floating level quantity (e.g. a float within the C household of programming languages) requires six decimal digits after the decimal level to characterize the floating level quantity as a personality string similar to “1.123456”. An IEEE-754 double precision floating level quantity requires 16 decimal digits after the decimal level to characterize the double as a personality string such “1.1234567890123456”.
Many packages and programming languages default to writing floating level numbers as character strings with six decimal digits similar to “1.123456”. For instance, the usual printf() operate within the C programming language defaults to 6 decimal digits of precisoin when its %f format specifier for floating level numbers is used:
double worth = 1.12345678901234456; print("my quantity: %fn", worth); // defaults to 6 decimal digits of precision
normally prints:
my quantity: 1.123456
Thus, if a mathematical algorithm in Octave is dependent upon double precision, it might be needed to arrange a human readable enter knowledge file with 16 decimal digit character strings for the floating level numbers.
In Octave, one can use the command format lengthy to show numbers at full precision:
Octave>format lengthy
Exchanging Binary Recordsdata Between Octave and Different Packages
Octave helps a comparatively small set of binary file codecs instantly. This can be a frequent downside with free software program. Each customers and software program builders can discover themselves spending hours, days, even weeks occasionally (time is cash) changing to and from different binary codecs utilized by different packages. There are nevertheless quite a few free packages that may shortly convert between a variety of binary codecs, thus vastly decreasing or eliminating this overhead.
The free GIMP (The GNU Picture Manipulation Program) program can learn and write practically all extensively used nonetheless picture file codecs and lots of obscure nonetheless picture codecs. GIMP is out there as each pre-compiled binaries and supply code for all three main computing platforms: Microsoft Home windows, Linux/Unix, and Mac OS X.
The extensively used, free Audacity audio-editing program can learn and write uncooked audio recordsdata, Microsoft uncompressed WAV recordsdata, and the open Ogg Vorbis audio file format. By default Audacity can learn MP3 audio recordsdata nevertheless it can’t write them because of the onerous MP3 licensing restrictions. Customers can set up the LAME MP3 encoding library on all three main computing platforms — Microsoft Home windows, Linux/Unix, and Mac OS X — after which Audacity can use this add on library to encode audio as MP3. Audacity is out there as supply code and precompiled binaries for all three main computing platforms.
The extensively used, free sox (Sound Trade) audio conversion utility can learn and write a broad vary of audio codecs. Like Audacity, it wants the LAME encoding library to be individually put in to encode MP3 recordsdata because of the MP3 licensing restrictions. Customers ought to think about using the free ogg vorbis audio format to keep away from the MP3 licensing points altogether. sox is out there as each supply code and precompiled binaries for all three main computing platforms.
The extensively used, (largely) free ffmpeg video and picture sequence conversion utility can learn and write a broad vary of video file codecs. Like Audacity and sox, sure video encoding codecs have licensing restrictions. Once more, customers could want to contemplate the free ogg theora video format to keep away from among the licensing points with higher identified video codecs similar to h.264.
Putting in Octave Add-On Packages
Octave has intensive built-in capabilities. It additionally has a lot of add-on packages out there by the Octave Forge mission and site. These embrace an intensive library of normal optimization features such because the Nelder-Mead methodology utilized in mannequin becoming, statistics, sign processing, econometrics, and so forth. A few of the Octave Forge packages are moderately restricted, however a quantity are very intensive and a quantity prolong Octave’s compatibility with MATLAB.
For instance, MATLAB has a operate xcorr which computes the cross-correlation of a knowledge collection or knowledge set. Octave doesn’t have xcorr in its base set of built-in features. There are a selection of implementations of xcorr on the internet as xcorr.m recordsdata, however xcorr can also be discovered within the Octave Forge sign package deal which gives a lot of normal sign processing features.
The writer discovered the reasons of the Octave pkg set up process on the Octave and Octave Forge internet sites a bit complicated. Here’s a fuller clarification. Octave packages are downloaded as normal *.tar.gz gzipped (compressed) Unix tar (tape archive) recordsdata. The Unix tar (tape archive) command combines a bunch of recordsdata and/or folders and their contents right into a single big file with out compressing the recordsdata. They’re loosely concatenated collectively. Traditionally, the tar command was used to retailer recordsdata, folders, even whole file techniques on backup tapes. The Unix gzip utility compresses recordsdata. On Unix, a *.tar.gz or *.tgz file is a file that has been tarred after which compressed utilizing gzip. The Octave packages are distributed as *.tar.gz recordsdata.
Octave has a inbuilt command pkg set up which installs the packages. NOTE: pkg set up works instantly on *.tar.gz or *.tar recordsdata. There isn’t any have to uncompress or unpack the *.tar or *tar.gz recordsdata. On the Macintosh, the Mac OS could robotically unzip the file when downloaded, making a *.tar file.
In Octave, merely swap the folder the place the *.tar.gz or *.tar file has been downloaded, then kind
Octave> pkg set up package-name.tar.gz
or
Octave> pkg set up pakcage-name.tar
if the working system has robotically unzipped the package deal.
The Octave pkg set up command will robotically create the folders for the brand new package deal within the Octave set up and replica the package deal recordsdata to those folders and carry out all different setup.
Many Octave packages include C, C++, or Fortran supply code. Octave robotically installs a compiler when it’s put in. It might compile these recordsdata. There isn’t any want for the Octave consumer to compile them by hand, run the make utility or something like that. Octave has a built-in mkoctfile command to compile C, C++, or Fortran extensions to Octave and add them to the built-in instructions of Octave. The Octave pkg set up command will run mkoctfile if wanted to construct and set up the package deal. On the Macintosh (see beneath) it might be needed to change the mkoctfile command to put in most of the Octave packages.
Extending Octave with Quick, Compiled Languages
Builders could need to prolong Octave by including C, C++, or Fortran packages to the built-in features of Octave. This can be performed as a result of the compiled packages can be quicker to execute than Octave or so as to add present C, C++, or Fortran code to Octave.
mkoctfile [-options] file
The mkoctfile operate compiles supply code written in C, C++, or Fortran. Relying on the choices used with mkoctfile, the compiled code may be referred to as inside Octave or can be utilized as a stand-alone utility. mkoctfile may be referred to as from the shell immediate or from the Octave immediate.
Making Octave Work with Emacs
Emacs is a extensively used free source-code and textual content editor. Emacs is out there on all three main computing platforms: Microsoft Home windows, Unix/Linux, and Mac OS. The writer has had good experiences utilizing the free Aquamacs model of Emacs on the Macintosh. Emacs has an “the whole lot together with the kitchen-sink” philosophy. Emacs has intensive built-in capabilities. There may be intensive and glorious on-line and revealed documentation on Emacs. Once more, this text will solely talk about some key gotchas which are more likely to come up utilizing Emacs together with Octave.
Emacs has a MATLAB mode for modifying MATLAB or Octave supply code. The MATLAB code modifying mode handles indenting, highlights key phrases, and so forth. Emacs additionally has an Goal C mode. Since Goal C “methodology” or “message” supply recordsdata additionally use the .m file extension utilized by MATLAB and Octave, this could trigger issues. There may be additionally an Goal C mode for Emacs. The writer has encountered variations of Emacs configured to make use of the Goal C mode for .m recordsdata and different variations of Emacs configured to make use of the MATLAB mode for .m recordsdata.
The Emacs consumer can explicitly swap to the MATLAB mode by typing Meta-X the place the mysterious Emacs Meta secret is normally the Escape (Esc) key on most keyboards after which typing matlab-mode on the Emacs command immediate.
If the matlab mode is just not preinstalled within the consumer’s model of Emacs, one can get an Emacs MATLAB mode add on package deal from the net, for instance at https://www.mathworks.com/matlabcentral/fileexchange/104
Emacs may be reconfigured to make use of the MATLAB mode robotically for .m recordsdata as an alternative of the Goal C mode if wanted.
As mentioned, along with supply code, it’s typically essential to share knowledge between Octave and different packages. Easy human readable file codecs such because the frequent tab delimited file format or easy uncompressed binary file codecs similar to Microsoft WAV audio recordsdata are sometimes the simplest and most cost-effective means to do that. Working with recordsdata of this kind typically requires analyzing the recordsdata, for instance to detect or rule out errors similar to non-printing characters or incorrect header data. Emacs can be utilized to do that.
Emacs has a few particular modes which are helpful for analyzing knowledge recordsdata and typically supply code. Emacs has a hexadecimal viewer/editor mode that may be invoked by typing hexl-mode on the Emacs command immediate. The Emacs hexl-mode is helpful for analyzing binary file codecs and sometimes human readable codecs. Emacs has a particular whitespace mode that shows whitespace characters similar to tab, carriage return, newline, and so forth. Sort whitespace-mode on the Emacs command immediate. This will helpful for analyzing human readable knowledge recordsdata and likewise supply code recordsdata the place the whitespace characters could also be incorrect or complicated.
Making Octave Work on the Macintosh
There are a few gotchas to creating Octave work on the Macintosh platform. By default, on MacOS X, Octave is just not set as much as show plots by the X server on the Macintosh. It’s essential to set an atmosphere variable in order that Octave can show plots. That is performed by getting into the next command on the Octave immediate.
Octave> setenv GNUTERM 'x11'
By default, Octave makes use of the gnuplot package deal, which it installs if wanted, to show plots. This atmosphere variable tells gnuplot to make use of ‘x11’, the X Home windows server on the Macintosh, to show plots.
As mentioned above, Octave has a lot of add-on packages out there by the Octave Forge site. By default, quite a few these packages don’t construct and set up accurately on MacOS. One will get a cryptic error. It is because the mkoctfile command in Octave defaults to constructing 64 bit variations on the Macintosh. This may be mounted by including the strains:
CFLAGS="-m32 ${CFLAGS}" FFLAGS="-m32 ${FFLAGS}" CPPFLAGS="-m32 ${CPPFLAGS}" CXXFLAGS="-m32 ${CXXFLAGS}" LDFLAGS="-m32 ${LDFLAGS}"
within the file Octave.app/Contents/Assets/bin/mkoctfile-3.2.3 simply after the “set -e” line. The issue is that in Snow Leopard (code identify for a current model of Mac OS X) compilers strive all the time to construct in 64bit, whereas the libraries shipped with Octave are 32 bit. The -m32 flag forces the compiler to construct 32 bit packages.
Display screen Seize with Octave
Utilizing Octave or related packages typically entails making plots, histograms, and different graphics that the consumer needs or wants to share with others, connect to e-mails, embed in publications, and so forth. One fast means to do that on Microsoft Home windows and Macintosh platforms is thru the built-in display screen seize capabilities of the working system and the gnuplot package deal utilized by Octave.
On Microsoft Home windows, there’s a “Print Display screen” button on keyboards that may seize your entire display screen to the MS Home windows clipboard. One can then use GIMP or many different picture editors to create a file from the contents of the clipboard. One can then edit the picture file to pick out desired areas and so forth. On MS Home windows, the gnuplot show window has a window seize characteristic. One can kind Management-C within the plot window to seize the plot window to the Home windows clipboard. One may also choose the plot window menu by clicking the icon within the higher left nook of the plot window, then “Choices” from the menu, after which “Copy to Clipboard” from the Choices menu.
The Macintosh has quite a few keyboard shortcuts to seize both your entire display screen or a area of the display screen to the clipboard or to a file on the Macintosh desktop. These keyboard shortcuts are (Apple Command)-Shift-3 to seize your entire display screen to a file on the Desktop, (Apple Command Key)-Shift-4 to seize a area to a file on the Desktop, (Apple Command Key)-Management-Shift-3 to seize your entire display screen to the Macintosh clipboard, and (Apple Command Key)-Management-Shift-4 to seize a area to the Macintosh clipboard. The area instructions flip the mouse cursor right into a cross-hairs icon; the consumer can choose a area to seize by clicking and dragging on the display screen with the cross hairs.
Conclusion
Octave is free, each free as in beer and free as in speech. Octave has many virtues, notably that it’s largely suitable with MATLAB, which is presently the de facto normal for numerical and mathematical programming. Octave can be utilized to shortly develop software program for a variety of sensible issues together with the prediction of shopping for patterns, picture and sign processing, pure and utilized scientific analysis, and the invention and design of recent machines, to call only some. With the instruments, strategies, and instructions mentioned above, it’s potential to make Octave work shortly and cost-effectively with a variety of different packages on all three main computing platforms: MS Home windows, Linux/Unix, and Macintosh.
© 2011 John F. McGowan
Concerning the Writer
John F. McGowan, Ph.D. is a software program developer, analysis scientist, and advisor. He works primarily within the space of advanced algorithms that embody superior mathematical and logical ideas, together with speech recognition and video compression applied sciences. He has intensive expertise creating software program in C, C++, Visible Primary, Mathematica, MATLAB, and lots of different programming languages. He’s in all probability greatest identified for his AVI Overview, an Web FAQ (Continuously Requested Questions) on the Microsoft AVI (Audio Video Interleave) file format. He has labored as a contractor at NASA Ames Analysis Heart concerned within the analysis and growth of picture and video processing algorithms and expertise. He has revealed articles on the origin and evolution of life, the exploration of Mars (anticipating the invention of methane on Mars), and low-cost entry to house. He has a Ph.D. in physics from the College of Illinois at Urbana-Champaign and a B.S. in physics from the California Institute of Expertise (Caltech). He may be reached at [email protected].
Sponsor’s message: Try Math Higher Defined, an insightful e-book and screencast collection that may make it easier to see math in a brand new mild and expertise extra of these superior “aha!” moments when concepts all of a sudden click on.