The value of DefaultFigurePosition must be a four element vector with the x and y coordinates for the figure, followed by its width and height. The code above sets the default image to be placed at the top of the monitor, with the width of the monitor and the same height previously set as default.

To get rid of the long help message with the link to the Octave homepage place this in your startup file usually at ~/.octaverc (if it does not exist, create it). See the documentation for more information.

The problem with this approach is if there's path manipulation on the octave.rc file, such as addpath. A workaround is needed for each case since it is not possible to obtain a reliable list of what's in Octave load path. But basically should be to undo what the file does, before source ("~/.octaverc").

If there's a pkg unload all on it, this would also unload all packages. The following adjustment will keep the packages loaded

If you use octave too much, you'll find yourself trying to use help instead of man on bash. This function will fix that so you can use man in your octave instance (you can also do the opposite, create a help alias in bash but man has fewwer characters).

This is a table of matrix operations commonly performed in Octave and their equivalents in C++ when using the octave libraries.

Operation

Octave

C++

add

A+B

A+B

subtract

A-B

A-B

matrix multiplication

A*B

A*B

element multiplication

A.*B

product(A,B)

element division

A./B

quotient(A,B)

transpose*

A.'

A.transpose()

select element m,n of A**

A(m,n)

A(m-1,n-1)

select row N of A**

A(N,:)

A.row(N-1)

select column N of A**

A(:,N)

A.column(N-1)

extract submatrix of A

A(a:b,c:d)

A.extract(a-1,c-1,b-1,d-1)

absolute value of A

abs(A)

A.abs()

comparison to scalar***

A>2

mx_el_gt(A,2)

A<2

mx_el_lt(A,2)

A==2

mx_el_eq(A,2)

A~=2

mx_el_ne(A,2)

A>=2

mx_el_ge(A,2)

A<=2

mx_el_le(A,2)

matrix of zeros

A=zeros(m,n)

A.fill(0.0)

matrix of ones

A=ones(m,n)

A.fill(1.0)

identity matrix

eye(N)

identity_matrix(N,N)

inverse of A

inv(A)

A.inverse()

pseudoinverse of A

pinv(A)

A.pseudo_inverse()

diagonal elements of A

diag(A)

A.diag()

column vector

A(:)

ColumnVector(A.reshape (dim_vector(A.length())))

row vector

A(:)'

RowVector(A.reshape (dim_vector(A.length())))

check for Inf or NaN

any(~isfinite(A))

A.any_element_is_inf_or_nan()

stack two matrices vertically

A=[B;C]

B.stack(C)

uniform random matrix

rand(a,b)

octave_rand::distribution("uniform"); octave_rand::matrix(a,b)

normal random matrix

randn(a,b)

octave_rand::distribution("normal"); octave_rand::matrix(a,b)

sum squares of columns

sumsq(A)

A.sumsq()

sum along columns

sum(A,1)

A.sum(0)

sum along rows

sum(A,2)

A.sum(1)

product along columns

prod(A,1)

A.prod(0)

product along rows

prod(A,2)

A.prod(1)

cumsum along columns

cumsum(A,1)

A.cumsum(0)

cumsum along rows

cumsum(A,2)

A.cumsum(1)

cumproduct along columns

cumprod(A,1)

A.cumprod(0)

cumproduct along rows

cumprod(A,2)

A.cumprod(1)

number of rows

size(A,1)

A.rows()

number of columns

size(A,2)

A.cols()

range

0.1:0.2:0.9

Range (0.1, 0.9, 0.2).matrix_value ()

Notes:

Transpose, addition, and multiplication operations also apply to RowVector, ComplexRowVector, ColumnVector, and ComplexColumnVector data types when the dimensions are in agreement.

The difference is due to the fact that arrays are zero-based in C++, but one-based in Octave.

The names of Octave internal functions, such as mx_el_gt, are not documented and are subject to change. Functions such as mx_el_gt may eventually be available at both the scripting level and in C++ under more common names such as gt.

Many Octave functions are wrappers to optimized numerical libraries, notably BLAS and ATLAS. It is possible to achieve impressive performance gains by simply using a library tuned to your platform. One example is using OpenBLAS to replace the default BLAS implementation (further details).

On some Linux distributions, this just takes a few commands. For instance, on Ubuntu, it usually suffices to run