Octave Tutorial Daniel Lamprecht Graz University of Technology - - PowerPoint PPT Presentation

octave
SMART_READER_LITE
LIVE PREVIEW

Octave Tutorial Daniel Lamprecht Graz University of Technology - - PowerPoint PPT Presentation

Octave Tutorial Daniel Lamprecht Graz University of Technology March 26, 2012 Slides based on previous work by Ingo Holzmann Introduction Language basics Scripts and Functions Plotting Introduction What is Octave? GNU Octave is a


slide-1
SLIDE 1

Octave

Tutorial Daniel Lamprecht

Graz University of Technology

March 26, 2012

Slides based on previous work by Ingo Holzmann

slide-2
SLIDE 2

Introduction Language basics Scripts and Functions Plotting

Introduction

What is Octave?

  • GNU Octave is a high-level interactive language for numerical

computations

  • mostly compatible to MATLAB

http://www.octave.org/wiki/index.php?title=FAQ# How_is_Octave_different_from_Matlab.3F Why use Octave?

  • fast prototyping
  • little syntactic overhead
  • free software

Octave Daniel Lamprecht

slide-3
SLIDE 3

Introduction Language basics Scripts and Functions Plotting

Installing Octave

How to get Octave?

  • part of most Linux repositories
  • http://www.gnu.org/software/octave/
  • be sure to use one of the 3.2.x versions
  • assignments will be tested with 3.2.4

Libraries:

  • Gnuplot: www.gnuplot.info

Octave Daniel Lamprecht

slide-4
SLIDE 4

Introduction Language basics Scripts and Functions Plotting

Introduction

  • Octave does not come with its own IDE
  • there are a few available
  • OctaveNB NetBeans IDE Integration
  • QtOctave Qt based IDE front-end
  • octavede GTK based IDE front-end
  • Kalculus, Xoctave

Or just use any text editor and a command shell!

Octave Daniel Lamprecht

slide-5
SLIDE 5

Introduction Language basics Scripts and Functions Plotting

Operators and Variables

Numbers: n = 25 % Numeric n = 25.5 % Numeric

  • no variable declarations
  • dynamically typed

String delimiters: s = ” Hello world !” % S t r i n g s = ’ Hello world ! ’ % S t r i n g

Octave Daniel Lamprecht

slide-6
SLIDE 6

Introduction Language basics Scripts and Functions Plotting

Operators and Variables

Basic Operations: 6 ∗ 5 # ans = 30

  • results will be stored in the variable ans, if not otherwise

specified number = 25 + pi # number = 28.142 number = number + 5;

  • predefined constants pi, e, i ...
  • use semicolon to suppress output

Octave Daniel Lamprecht

slide-7
SLIDE 7

Introduction Language basics Scripts and Functions Plotting

Structs

Defining a Struct: c o o r d i n a t e s . x = 5; c o o r d i n a t e s . y = 8; c o o r d i n a t e s # c o o r d i n a t e s = # { # x = 5 # y = 8 # } Accessing a Single Member of a Struct: c o o r d i n a t e s . x # ans = 5

Octave Daniel Lamprecht

slide-8
SLIDE 8

Introduction Language basics Scripts and Functions Plotting

Comparators

Comparing Values: 25 ˜= 25 # ans = 0

  • 0, false are false
  • 1, true and all other numeric values are true

Comparing Strings: ” h e l l o ” == ” h e l l o ” # ans = 1 1 1 1 1

Octave Daniel Lamprecht

slide-9
SLIDE 9

Introduction Language basics Scripts and Functions Plotting

Vectors and Matrices

Defining a Vector: v ec t or = [1 2 3 ] ;

  • lines are separated by spaces or commas

Defining a Matrix: matrix = [1 2; 3 4 ] ;

  • rows are separated by semicolons

Octave Daniel Lamprecht

slide-10
SLIDE 10

Introduction Language basics Scripts and Functions Plotting

Vectors and Matrices

Indexing starts with 1 A = [1 2 3; 4 5 6 ; 7 8 9] A(2 ,3) % #ans = 6 A( 1 , : ) % #ans = 1 2 3 A(4) % #ans = 4 a b s o l u t e i n d e x i n g A ( : ) % r e t u r n s a l l elements in a column ve c to r Subscripted Indexing A( [ 3 , 5 ] ) % #ans = 7 5 A( [ 2 : 3 , 1 ] ) % #ans = 4 7 1

Octave Daniel Lamprecht

slide-11
SLIDE 11

Introduction Language basics Scripts and Functions Plotting

Vectors and Matrices

Matrix Operations: matrix a = [1 2; 3 4 ] ; matrix b = [5 6; 7 8 ] ; matrix a + matrix b # ans = # 6 8 # 10 12 matrix a ∗ matrix b # ans = # 19 22 # 43 50 % element−wise m u l t i p l i c a t i o n matrix a .∗ matrix b

Octave Daniel Lamprecht

slide-12
SLIDE 12

Introduction Language basics Scripts and Functions Plotting

Vectors and Matrices

Transpose of a Matrix: matrix = [1 2 3; 4 5 6; 7 8 9 ] ; matrix ’ #ans = # 1 4 7 # 2 5 8 # 3 6 9 Inverse of a Matrix: inv ( matrix ) #ans = # −4.5036e+15 9.0072 e+15 −4.5036e+15 # 9.0072 e+15 −1.8014e+16 9.0072 e+15 # −4.5036e+15 9.0072 e+15 −4.5036e+15

Octave Daniel Lamprecht

slide-13
SLIDE 13

Introduction Language basics Scripts and Functions Plotting

Control Structures

If Statement: i f length ( v ec t or ) < 4 v ec t or (4) = 0; e l s e v ec t or (4) end Loops: f o r i = 1:10 % loop from 1 to 10 i endfor while i <= 10 % loop from 1 to 10 i++ endwhile

Octave Daniel Lamprecht

slide-14
SLIDE 14

Introduction Language basics Scripts and Functions Plotting

Vectorizing

Octave works well with array operations and can be slow when using loops. (Matlab = Matrix Laboratory) D = [ −0.2 1.0 1.5 3.0 −1.0 4.2 3 . 1 ] ; H = [ 2.1 2.4 1.8 2.6 2.6 2.2 1 . 8 ] ; f o r n = 1: length (D) V(n) = 1/12∗ pi ∗(D(n )ˆ2)∗H(n ) ; end A vectorized version of the same code is V = 1/12∗ pi ∗(D. ˆ 2 ) . ∗H;

Octave Daniel Lamprecht

slide-15
SLIDE 15

Introduction Language basics Scripts and Functions Plotting

Vectorizing

Set all entries < 4 to 0 A =[1 2 4; 5 6 3; 9 8 8] A(A<4) = 0 Vectorizing Sums a = [1 3 4 5 4 2 7 1] b = [1 1 2 3 5 8 13 21] r = 0 f o r i = 1: length ( a ) r = r + a ( i ) ∗ b( i ) ; end This is just the scalar product of a and b: r = a ∗ b ’

Octave Daniel Lamprecht

slide-16
SLIDE 16

Introduction Language basics Scripts and Functions Plotting

Built-In Functions

Useful Built-In Functions:

  • the length of a vector or matrix:

matrix = [1 2 3; 4 5 6; 7 8 9 ] ; length ( matrix ) # ans = 3

  • the size of a matrix:

s i z e ( matrix ) # ans = # 3 3

  • the diagonal of a matrix:

diag ( matrix ) ’ # ans = 1 5 9

Octave Daniel Lamprecht

slide-17
SLIDE 17

Introduction Language basics Scripts and Functions Plotting

Built-In Functions

  • the sum:

matrix = [1 2 3; 4 5 6; 7 8 9 ] ; sum( matrix ) # ans = 12 15 18

  • the minimum and maximum:

min (max( matrix )) # ans = 7

  • identity matrix:

eye (3) # ans = # 1 # 1 # 1

Octave Daniel Lamprecht

slide-18
SLIDE 18

Introduction Language basics Scripts and Functions Plotting

Built-In Functions

Other Useful Functions:

  • abs: the absolute value of a number
  • ones: a matrix containing only ones
  • zeros: a matrix containing only zeros
  • repmat: returns a matrix composed of multiple other matrices
  • factorial: the faculty of a number
  • any: detecting rows containing only zeros in matrices
  • Many functions have overloaded signatures
  • Use the help system to get the one you need

help functionname % sh or t d e s c r i p t i o n doc functionname % documentation

  • The Matlab help might also be useful

www.mathworks.com/help/techdoc/

Octave Daniel Lamprecht

slide-19
SLIDE 19

Introduction Language basics Scripts and Functions Plotting

Scripts

script.m: p r i n t f (” Octave T u t o r i a l Test S c r i p t \n ” ) ; number = 3; p r i n t f (”Number = %d\n” , number ) ; s c r i p t % c a l l s c r i p t # Octave T u t o r i a l Test S c r i p t # Number = 3

  • multiple commands can be stored in a script-file
  • call the script without the .m extension
  • file must be placed in Octave paths or in the current directory
  • use addpath to add a folder to Octave paths

Octave Daniel Lamprecht

slide-20
SLIDE 20

Introduction Language basics Scripts and Functions Plotting

Functions

Faculty Function: f u n c t i o n r e s u l t = f a c u l t y ( value ) r e s u l t = 1; f o r i = 1: value r e s u l t ∗= i ; endfor endfunction

  • function result-values = function-name(parameters)
  • if stored in a file function name and file name have to be equal

f a c u l t y (4) # ans = 24

Octave Daniel Lamprecht

slide-21
SLIDE 21

Introduction Language basics Scripts and Functions Plotting

Functions

Multiple Return Values: f u n c t i o n [ r e s a r e s b ] = swap ( val a , v a l b ) r e s a = v a l b ; r e s b = v a l a ; endfunction [ val c , v a l d ] = swap (5 ,8) # v a l c = 8 # v a l d = 5

  • if a function has more than one return value you have to store

them in different variables

  • otherwise only the first return value will be stored

Octave Daniel Lamprecht

slide-22
SLIDE 22

Introduction Language basics Scripts and Functions Plotting

Two-Dimensional Plotting

v ec t or = [5 3 9 8 1 4 ] ; p l o t ( v e ct or ) Saving a Plot to a File: p r i n t (” my plot . png ” ) ;

Octave Daniel Lamprecht

slide-23
SLIDE 23

Introduction Language basics Scripts and Functions Plotting

Two-Dimensional Plotting

Additional Commands: % c r e a t e new f i g u r e and s e t a property f = f i g u r e ( ’ v i s i b l e ’ , ’ off ’ ) ; x l a b e l (” x ” ) ; % naming the x−a x i s x l a b e l (” y ” ) ; % naming the y−a x i s t i t l e (” MyPlot ” ) ; % s e t the p l o t t i t l e % p r i n t without d i s p l a y i n g the p l o t window p r i n t (” MyPlot . png ”)

Octave Daniel Lamprecht

slide-24
SLIDE 24

Introduction Language basics Scripts and Functions Plotting

Two-Dimensional Plotting

  • all plotting functions use gnuplot
  • download from www.gnuplot.info
  • included in the installer for MS Windows
  • plot could be used with many different input parameters
  • use the help system

help p l o t % s ho rt d e s c r i p t i o n

  • f

p l o t doc p l o t % p l o t documentation

Octave Daniel Lamprecht

slide-25
SLIDE 25

Further reading

Octave Documentation (www.gnu.org/software/octave/doc/interpreter) A Short Octave Tutorial (German) (www.christianherta.de/octaveMatlabTutorial.html) Octave Programming Tutorial at Wikibooks (http://en.wikibooks.org/wiki/Octave Programming Tutorial)

Octave Daniel Lamprecht