cythonmagic

rmagic

### This Page

Warning

This documentation is for an old version of IPython. You can find docs for newer versions here.

# octavemagic¶

Magics for interacting with Octave via oct2py.

Note

The oct2py module needs to be installed separately and can be obtained using easy_install or pip.

You will also need a working copy of GNU Octave.

## Usage¶

To enable the magics below, execute %load_ext octavemagic.

%octave

%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 : %octave X = [1 2; 3 4]; mean(X) Out: array([[ 2., 3.]])

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

```In : %%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 : Z = np.array([1, 4, 5, 10])

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

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

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

The size and format of output plots can be specified:

```In : %%octave -s 600,800 -f svg
...: plot([1, 2, 3]);
```
positional arguments:
code
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).

%octave_push

Line-level magic that pushes a variable to Octave.

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

```In : import numpy as np

In : X = np.arange(5)

In : X.mean()
Out: 2.0

In : %octave_push X

In : %octave mean(X)
Out: 2.0
```

%octave_pull

Line-level magic that pulls a variable from Octave.

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

In : %octave_pull x y

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

[ 3., 4.]])

In : y Out: ‘hello’