IPython Documentation

Table Of Contents

Previous topic


Next topic


This Page


Magics for interacting with Octave via oct2py.


The oct2py module needs to be installed separately, and in turn depends on h5py. Both can be obtained using easy_install or pip.



%octave [-i INPUT] [-o OUTPUT] [-s SIZE] [-f FORMAT] [code [code ...]]

Execute code in Octave, and pull some of the results back into the Python namespace.

In [9]: %octave X = [1 2; 3 4]; mean(X) Out[9]: array([[ 2., 3.]])

As a cell, this will run a block of Octave code, without returning any value:

In [10]: %%octave
   ....: p = [-2, -1, 0, 1, 2]
   ....: polyout(p, 'x')

-2*x^4 - 1*x^3 + 0*x^2 + 1*x^1 + 2

In the notebook, plots are published as the output of the cell, e.g.

%octave plot([1 2 3], [4 5 6])

will create a line plot.

Objects can be passed back and forth between Octave and IPython via the -i and -o flags in line:

In [14]: Z = np.array([1, 4, 5, 10])

In [15]: %octave -i Z mean(Z)
Out[15]: array([ 5.])

In [16]: %octave -o W W = Z * mean(Z)
Out[16]: array([  5.,  20.,  25.,  50.])

In [17]: W
Out[17]: array([  5.,  20.,  25.,  50.])

The size and format of output plots can be specified:

In [18]: %%octave -s 600,800 -f svg
    ...: plot([1, 2, 3]);
positional arguments:
optional arguments:
-i INPUT, --input INPUT
 Names of input variables to be pushed to Octave. Multiple names can be passed, separated by commas with no whitespace.
-o OUTPUT, --output OUTPUT
 Names of variables to be pulled from Octave after executing cell body. Multiple names can be passed, separated by commas with no whitespace.
-s SIZE, --size SIZE
 Pixel size of plots, “width,height”. Default is “-s 400,250”.
-f FORMAT, --format FORMAT
 Plot format (png, svg or jpg).


Line-level magic that pushes a variable to Octave.

line should be made up of whitespace separated variable names in the IPython namespace:

In [7]: import numpy as np

In [8]: X = np.arange(5)

In [9]: X.mean()
Out[9]: 2.0

In [10]: %octave_push X

In [11]: %octave mean(X)
Out[11]: 2.0


Line-level magic that pulls a variable from Octave.

In [18]: _ = %octave x = [1 2; 3 4]; y = ‘hello’

In [19]: %octave_pull x y

In [20]: x Out[20]: array([[ 1., 2.],

[ 3., 4.]])

In [21]: y Out[21]: ‘hello’