Difference between revisions of "Octave"

From ArchWiki
Jump to: navigation, search
(categorize)
(Octave-Forge: packaging)
(11 intermediate revisions by 5 users not shown)
Line 1: Line 1:
 
[[Category:Mathematics and science]]
 
[[Category:Mathematics and science]]
[[Wikipedia:GNU_Octave|Octave]] is a high-level language, primarily intended for numerical computations
+
{{Article summary start}}
 +
{{Article summary text|This article contains information about the installation, configuration and use of GNU Octave.}}
 +
{{Article summary heading|Related}}
 +
{{Article summary wiki|Matlab}}
 +
{{Article summary wiki|Sage-mathematics}}
 +
{{Article summary wiki|Mathematica}}
 +
{{Article summary end}}
 +
From the [http://www.gnu.org/software/octave/ official website]:
 +
 
 +
:''GNU Octave is a high-level interpreted language, primarily intended for numerical computations. It provides capabilities for the numerical solution of linear and nonlinear problems, and for performing other numerical experiments. It also provides extensive graphics capabilities for data visualization and manipulation. Octave is normally used through its interactive command line interface, but it can also be used to write non-interactive programs. The Octave language is quite similar to Matlab so that most programs are easily portable.''
  
 
== Installation ==
 
== Installation ==
 +
Octave can be [[Pacman|installed]] with the package {{Pkg|octave}}, available in the [[official repositories]].
  
{{Pkg|octave}} can be installed from the [[Official Repositories|official repositories]].
+
== Octave-Forge ==
  
=== Octave-Forge ===
+
Octave provides a set of packages, similar to Matlab's Toolboxes, through [http://octave.sourceforge.net/index.html Octave-Forge]. Some of these packages may be found in the AUR ([https://aur.archlinux.org/packages.php?O=0&K=octave-&do_Search=Go search packages]). A non-exhaustive list:
 +
* {{App|Image|Provides functions for processing images.|http://octave.sourceforge.net/image/index.html|{{AUR|octave-image}}}}
 +
* {{App|Statistics|Provides additional statistical functions.|http://octave.sourceforge.net/statistics/index.html|{{AUR|octave-statistics}}}}
 +
* {{App|IO|Provides input and output in external formats such as XML, CSV or XLS.|http://octave.sourceforge.net/io/index.html|{{AUR|octave-io}}}}
 +
* {{App|Signal|Provides functions for processing images|http://octave.sourceforge.net/image/index.html|{{AUR|octave-signal}}}}
 +
* {{App|Multicore|Provides functions for parallel processing on multiple cores.|http://octave.sourceforge.net/multicore/index.html|{{AUR|octave-multicore}}}}
  
Extra packages for GNU Octave can be find in [http://octave.sourceforge.net/packages.php Octave-Forge]. They are comparable like toolboxes in Matlab. Some may be find in AUR: {{Aur|Octave}}.
+
A complete list can be found on [http://octave.sourceforge.net/packages.php Octave-Forge].
For those who don't exist in AUR, you got two options.
+
  
1. Feel free to build an PKGBUILD for the missing extra package. ''(recommended & costlier)''
+
=== Packaging ===
  
2. Download the tar.gz package from Octave-Forge and install it directly with octave. ''(Just a userspace installation)''
+
Creating an Octave-forge package for Arch is easy using the [https://github.com/drizzd/octave-forge-archlinux#readme Octave-forge helper scripts for Archlinux].
  
  octave:1> pkg install package_file_name.tar.gz
+
=== Using Octave's installer ===
  
=== xlsread ===
+
Packages can also be managed using Octave's installer. To install a package:
 +
 
 +
# Download the {{ic|.tar.gz}} package from Octave-Forge.
 +
# Install it from Octave as user by executing:
 +
 
 +
octave:1> pkg install packagename.tar.gz
 +
 
 +
Packages have dependencies which you have to install before installing your package, if you want to bypass this use:
 +
 
 +
octave:2> pkg install -no-deps packagename.tar.gz
 +
 
 +
To uninstall a package:
 +
 +
octave:3> pkg uninstall packagename.tar.gz
 +
 
 +
Some packages get loaded automatically by Octave, for those which do not:
 +
 
 +
octave:4> pkg load packagename
 +
 
 +
or
 +
 
 +
octave:5> pkg load all
 +
 
 +
To see which packages have been loaded use {{ic|pkg list}}, the packages with an asterisk are the ones that are already loaded.
 +
 
 +
== Plotting ==
 +
 
 +
Octave has two official plotting backends:
 +
* {{App|[[Wikipedia:Gnuplot|Gnuplot]]|A classic Linux plotting utility.|http://www.gnuplot.info/|{{Pkg|gnuplot}}}}
 +
* {{App|FLTK Backend|A new experimental OpenGL backend based on the [[Wikipedia:FLTK|FLTK]] GUI toolkit.|http://www.gnu.org/software/octave/|{{Pkg|octave}}}}
 +
{{Note|To enable the FLTK backend, you need to install the {{Pkg|fltk}} package.}}
 +
 
 +
GnuPlot is still the default, but it can be changed by:
 +
 
 +
octave:1> graphics_toolkit("fltk");
 +
 
 +
To make this change permanent add it to your {{ic|~/.octaverc}} file.
 +
 
 +
== Graphical interfaces ==
 +
 
 +
There are very few graphical interfaces for Octave and none of them are official:
 +
* {{App|Cantor|A graphical user interface that delegates its mathematical operations to one of several back ends (Scilab, Maxima, Octave and others).|http://edu.kde.org/cantor/|{{Pkg|kdeedu-cantor}}}}
 +
* {{App|QtOctave|A Qt frontend for Octave.|https://forja.rediris.es/projects/csl-qtoctave/|{{AUR|qtoctave}}}}
 +
 
 +
== Reading Microsoft Excel Spreadsheets ==
  
 
There are several ways to read Microsoft Excel files with Octave.
 
There are several ways to read Microsoft Excel files with Octave.
  
==== Converting (recommended) ====
+
==== Converting to an open format ====
  
Open the xls/xlsx file with LibreOffice ''(Is limited to 1024 Columns!)''/CalligraOffice ''(Is limited to 32768 Columns)''/... and save/export it as a .csv file. Octave-core has a built-in function called ''csvread''.
+
The easiest way to use {{ic|.xls}} files in Octave would be to convert them to {{ic|.csv}} or {{ic|.ods}} using Calc (limited to 1024 columns) from [[Libreoffice]] or [http://www.calligra.org/sheets/ Sheets](limited to 32768 columns) from the the [http://www.calligra-suite.org/ Calligra Suite].
  octave:2> csvread('myfile.csv');
+
Otherwise you can save/export as .ods file, and import it with octave using the {{Aur|octave-io}} package.
+
  octave:3> odsread('myfile.ods');
+
  
Another try if Office Suits are failing is {{Aur|xlsx2csv}} from AUR to convert the xlsx file to csv file.
+
After the conversion is complete you can use the build-in Octave function {{ic|csvread}} for {{ic|.csv}} files:
   xlsx2csv -t where/to/save/ -x mylousy.xlsx
+
    
 +
octave:1> csvread('myfile.csv');
  
==== Reading directly xls file with Octave ====
+
For {{ic|.ods}} files the {{AUR|octave-io}} package is necessary which contains the {{ic|odsread}} function:
  
If converting to .csv/.ods is no option, or don't work, Octave is able to read xls files using {{Aur|octave-io}} package.
+
octave:1> odsread('myfile.ods');
But xlsread function is needing java.
+
  pacman -S jdk7-openjdk jre7-openjdk jre7-openjdk-headless
+
And while octave have to use java, you'll need [http://octave.sourceforge.net/java/index.html Octave-Java] too.
+
  octave:4> pkg install java-1.2.8.tar.gz
+
Finaly, octave-java searches in a wrong folder for ''libjvm.so''
+
  sudo mkdir /usr/lib/jvm/java-7-openjdk/jre/lib/amd64/client
+
  sudo ln -s /usr/lib/jvm/java-7-openjdk/jre/lib/amd64/server/libjvm.so /usr/lib/jvm/java-7-openjdk/jre/lib/amd64/client/libjvm.so
+
Checking if java is working correct in octave, compare the following output
+
  
   octave:4> javaclasspath  
+
For {{ic|.xlsx}} files you can use the {{AUR|xlsx2csv}} package from [[AUR]]:
 +
 
 +
  xlsx2csv -t /path/to/save/location -x /path/to/myfile.xlsx
 +
 
 +
==== Reading xls files directly from Octave ====
 +
 
 +
If you must work with XLS files and you cannot convert them to CSV or ODS, for whatever reason, you can use the {{ic|xlsread}} function from the {{AUR|octave-io}} package.
 +
 
 +
{{ic|xlsread}} is Java-based and as such requires some [[Java]] libraries to enable support for XLS files.
 +
 
 +
The steps necessary to make it work are:
 +
:1. [[Pacman|Install]] {{Pkg|jdk7-openjdk}}, available in the [[official repositories]].
 +
 
 +
{{Note|A common problem is that Octave cannot find the JDK path. To fix this execute the following commands in your shell:
 +
$ export JAVA_HOME=/usr/lib/jvm/java-7-openjdk
 +
You may also want to add this to your {{ic|~/.bashrc}} and append it to your {{ic|PATH}}.}}
 +
 
 +
:2. Install a Java XLS library for {{ic|xlsread}}. There are more such libraries available, a comparison can be found at [http://octave.org/wiki/index.php?title=IO_package#Comparison_of_interfaces_.26_usage here]. The recommended library is {{AUR|apache-poi}}, available in the [[AUR]].
 +
 
 +
:3. Finally, install the {{AUR|octave-java}} package from [[AUR]].
 +
 
 +
To check if Java is working correctly in Octave, see the output of:
 +
 
 +
   octave:1> javaclasspath  
 
   STATIC JAVA PATH
 
   STATIC JAVA PATH
 
       - empty -
 
       - empty -
Line 49: Line 120:
 
       - empty -
 
       - empty -
  
Now you'll need Java XLS Libraries. Take one of this: http://octave.org/wiki/index.php?title=IO_package#Required_support_software_2 ''(recommended poi)''
+
To load the selected library in Octave, check if it is in the Java path. If not:
 +
  octave:1> javaaddpath path/to/file.jar
 +
In the case you chose {{AUR|apache-poi}}, the relevant JAR files can be found in {{ic|/usr/share/java/apache-poi/poi-3.x.jar}} and {{ic|/usr/share/java/apache-poi/poi-ooxml-3.x.jar}}.
  
These are the differences: http://octave.org/wiki/index.php?title=IO_package#Comparison_of_interfaces_.26_usage
+
To check if it works
 +
  octave:1> chk_spreadsheet_support
  
 
+
The output should be > 0:
To load one of them in octave
+
  octave:5> javaaddpath path/to/file.jar
+
To check if it works
+
  octave:6> chk_spreadsheet_support
+
return should be > 0
+
 
                     0 No spreadsheet I/O support found
 
                     0 No spreadsheet I/O support found
 
                   ---------- XLS (Excel) interfaces: ----------
 
                   ---------- XLS (Excel) interfaces: ----------
Line 72: Line 141:
 
                   128 = UNO (Java / UNO bridge - OpenOffice.org)
 
                   128 = UNO (Java / UNO bridge - OpenOffice.org)
  
Now you can try to read xls files with
+
To make this permanent add the {{ic|javaaddpath}} commands to your {{ic|~/.octaverc}} file.
  octave:6> m=xlsread('mylousy.xls');
+
Maybe it works, may be not... :)
+

Revision as of 09:35, 20 October 2012

Template:Article summary start Template:Article summary text Template:Article summary heading Template:Article summary wiki Template:Article summary wiki Template:Article summary wiki Template:Article summary end From the official website:

GNU Octave is a high-level interpreted language, primarily intended for numerical computations. It provides capabilities for the numerical solution of linear and nonlinear problems, and for performing other numerical experiments. It also provides extensive graphics capabilities for data visualization and manipulation. Octave is normally used through its interactive command line interface, but it can also be used to write non-interactive programs. The Octave language is quite similar to Matlab so that most programs are easily portable.

Installation

Octave can be installed with the package octave, available in the official repositories.

Octave-Forge

Octave provides a set of packages, similar to Matlab's Toolboxes, through Octave-Forge. Some of these packages may be found in the AUR (search packages). A non-exhaustive list:

  • Image — Provides functions for processing images.
http://octave.sourceforge.net/image/index.html || octave-imageAUR
  • Statistics — Provides additional statistical functions.
http://octave.sourceforge.net/statistics/index.html || octave-statisticsAUR
  • IO — Provides input and output in external formats such as XML, CSV or XLS.
http://octave.sourceforge.net/io/index.html || octave-ioAUR
  • Signal — Provides functions for processing images
http://octave.sourceforge.net/image/index.html || octave-signalAUR
  • Multicore — Provides functions for parallel processing on multiple cores.
http://octave.sourceforge.net/multicore/index.html || octave-multicoreAUR

A complete list can be found on Octave-Forge.

Packaging

Creating an Octave-forge package for Arch is easy using the Octave-forge helper scripts for Archlinux.

Using Octave's installer

Packages can also be managed using Octave's installer. To install a package:

  1. Download the .tar.gz package from Octave-Forge.
  2. Install it from Octave as user by executing:
octave:1> pkg install packagename.tar.gz

Packages have dependencies which you have to install before installing your package, if you want to bypass this use:

octave:2> pkg install -no-deps packagename.tar.gz

To uninstall a package:

octave:3> pkg uninstall packagename.tar.gz

Some packages get loaded automatically by Octave, for those which do not:

octave:4> pkg load packagename

or

octave:5> pkg load all

To see which packages have been loaded use pkg list, the packages with an asterisk are the ones that are already loaded.

Plotting

Octave has two official plotting backends:

  • Gnuplot — A classic Linux plotting utility.
http://www.gnuplot.info/ || gnuplot
  • FLTK Backend — A new experimental OpenGL backend based on the FLTK GUI toolkit.
http://www.gnu.org/software/octave/ || octave
Note: To enable the FLTK backend, you need to install the fltk package.

GnuPlot is still the default, but it can be changed by:

octave:1> graphics_toolkit("fltk");

To make this change permanent add it to your ~/.octaverc file.

Graphical interfaces

There are very few graphical interfaces for Octave and none of them are official:

  • Cantor — A graphical user interface that delegates its mathematical operations to one of several back ends (Scilab, Maxima, Octave and others).
http://edu.kde.org/cantor/ || kdeedu-cantor
  • QtOctave — A Qt frontend for Octave.
https://forja.rediris.es/projects/csl-qtoctave/ || qtoctaveAUR

Reading Microsoft Excel Spreadsheets

There are several ways to read Microsoft Excel files with Octave.

Converting to an open format

The easiest way to use .xls files in Octave would be to convert them to .csv or .ods using Calc (limited to 1024 columns) from Libreoffice or Sheets(limited to 32768 columns) from the the Calligra Suite.

After the conversion is complete you can use the build-in Octave function csvread for .csv files:

octave:1> csvread('myfile.csv');

For .ods files the octave-ioAUR package is necessary which contains the odsread function:

octave:1> odsread('myfile.ods');

For .xlsx files you can use the xlsx2csvAUR package from AUR:

 xlsx2csv -t /path/to/save/location -x /path/to/myfile.xlsx 

Reading xls files directly from Octave

If you must work with XLS files and you cannot convert them to CSV or ODS, for whatever reason, you can use the xlsread function from the octave-ioAUR package.

xlsread is Java-based and as such requires some Java libraries to enable support for XLS files.

The steps necessary to make it work are:

1. Install jdk7-openjdk, available in the official repositories.
Note: A common problem is that Octave cannot find the JDK path. To fix this execute the following commands in your shell:
$ export JAVA_HOME=/usr/lib/jvm/java-7-openjdk
You may also want to add this to your ~/.bashrc and append it to your PATH.
2. Install a Java XLS library for xlsread. There are more such libraries available, a comparison can be found at here. The recommended library is apache-poiAUR, available in the AUR.
3. Finally, install the octave-javaAUR package from AUR.

To check if Java is working correctly in Octave, see the output of:

 octave:1> javaclasspath 
  STATIC JAVA PATH
     - empty -
  DYNAMIC JAVA PATH
     - empty -

To load the selected library in Octave, check if it is in the Java path. If not:

 octave:1> javaaddpath path/to/file.jar

In the case you chose apache-poiAUR, the relevant JAR files can be found in /usr/share/java/apache-poi/poi-3.x.jar and /usr/share/java/apache-poi/poi-ooxml-3.x.jar.

To check if it works

 octave:1> chk_spreadsheet_support 

The output should be > 0:

                   0 No spreadsheet I/O support found
                 ---------- XLS (Excel) interfaces: ----------
                   1 = COM (ActiveX / Excel)
                   2 = POI (Java / Apache POI)
                   4 = POI+OOXML (Java / Apache POI)
                   8 = JXL (Java / JExcelAPI)
                  16 = OXS (Java / OpenXLS)
                 --- ODS (OpenOffice.org Calc) interfaces ----
                  32 = OTK (Java/ ODF Toolkit)
                  64 = JOD (Java / jOpenDocument)
                 ----------------- XLS & ODS: ----------------
                 128 = UNO (Java / UNO bridge - OpenOffice.org)

To make this permanent add the javaaddpath commands to your ~/.octaverc file.