First, follow the installation guide
to install GNU Octave on your system. Then, launch the interactive prompt by
octave in a terminal or by clicking the icon in the programs menu.
For further guidance, see the manual page on
Assign values to variables with
= (Note: assignment is pass-by-value).
Read more about variables.
a = 1;
% start a comment line, that continues to the end of the line.
Read more about comments.
The output of every command is printed to the console unless terminated with
;. The disp command can be used to print output
anywhere. Use exit or quit to quit the console.
Read more about command evaluation.
t = 99 + 1 # prints 't = 100'
t = 100
t = 99 + 1; # nothing is printed disp(t);
Many mathematical operators are available in addition to the standard arithmetic. Operations are floating-point. Read more about elementary math.
x = 3/4 * pi; y = sin (x)
y = 0.70711
Arrays in Octave are called matrices. One-dimensional matrices are referred
to as vectors. Use a space or a comma
, to separate elements in a row and
; to start a new row. Read more
rowVec = [8 6 4]
rowVec = 8 6 4
columnVec = [8; 6; 4]
columnVec = 8 6 4
mat = [8 6 4; 2 0 -2]
mat = 8 6 4 2 0 -2
ans = 2 3
ans = 3
Many common linear algebra operations are simple to program using Octave’s matrix syntax. Read more about linear algebra.
columnVec * rowVec
ans = 64 48 32 48 36 24 32 24 16
rowVec * columnVec
ans = 116
ans = 8 6 4
Octave is 1-indexed. Matrix elements are accessed as
matrix(rowNum, columnNum). Read more
about accessing elements.
ans = -2
Control flow with loops
while loops, as well as other control flow
structures. Read more
about control flow.
x = zeros (50,1); for i = 1:2:100 # iterate from 1 to 100 with step size 2 x(i) = i^2; endfor y = zeros (50,1); k = 1; step = 2; while (k <= (100-step)) y(i) = k^2; k = k + step; endwhile
For-loops can often be replaced or simplified using vector syntax. The
^ all support element-wise operations writing
. before the operators. Many other functions operate element-wise
by default (sin,
-, etc.). Read more
i = 1:2:100; # create an array with 50-elements x = i.^2; # each element is squared y = x + 9; # add 9 to each element z = y./i; # divide each element in y by the corresponding value in i w = sin (i / 10); # take the sine of each element divided by 10
plot (i / 10, w); title ('w = sin (i / 10)'); xlabel ('i / 10'); ylabel ('w');
firstString = "hello world"; secondString = "!"; [firstString, secondString] # concatenate both strings
ans = hello world!
fprintf ("%s %.10f \n", "The number is:", 10)
The number is: 10.0000000000
Conditional statements can be used to create branching logic in your code. Read more in the manual.
# Print 'Foo' if divisible by 7, # 'Fizz' if divisible by 3, # 'Buzz' if divisible by 5, # 'FizzBuzz' if divisible by 3 and 5 for i = 1:1:20 outputString = ""; if (rem (i, 3) == 0) # rem is the remainder function outputString = [outputString, "Fizz"]; endif if (rem (i, 5) == 0) outputString = [outputString, "Buzz"]; elseif (rem(i,7) == 0) outputString = "Foo"; else outputString = outputString; endif fprintf("i=%g: %s \n", i, outputString); endfor
i=1: i=2: i=3: Fizz i=4: i=5: Buzz i=6: Fizz i=7: Foo i=8: i=9: Fizz i=10: Buzz i=11: i=12: Fizz i=13: i=14: Foo i=15: FizzBuzz i=16: i=17: i=18: Fizz i=19: i=20: Buzz
help plot doc plot
Octave forge packages
Community-developed packages can be added from the Octave Forge website to extend the functionality of Octave’s core library. (Matlab users: Forge packages act similarly to Matlab’s toolboxes.) The pkg command is used to manage these packages. For example, to use the image processing library from the Forge, use:
pkg install -forge image # install package pkg load image # load new functions into workspace