Octave/Matlab Tutorial

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Τύποι δεδομένων και τελεστές,
Advertisements

ΕΙΣΑΓΩΓΗ ΣΤΟ DOS (Disk Operating System)
Εισαγωγή στην Επιστήμη των Η/Υ ΙΙ Μάθημα 6 Παλινδρόμηση – Δημιουργία Video - Συναρτήσεις - GUI
Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές
Μάθημα 2 Εισαγωγή στην Επιστήμη των Η/Υ ΙΙ
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Φροντιστήρια Εισηγητής: Σπύρος Αργυρόπουλος Μέλος ΕΤΕΠ Εργαστήριο Προγραμματισμού & Τεχνολογίας Ευφυών Συστημάτων.
Τεχνολογία ΛογισμικούSlide 1 Έλεγχος Καταψύκτη (Ada) Τεχνολογία ΛογισμικούSlide 39 with Pump, Temperature_dial, Sensor, Globals, Alarm; use Globals ; procedure.
Λανθάνουσα Σημασιολογική Ανάλυση (Latent Semantic Analysis)
ΗΜΥ 100 Εισαγωγή στην Τεχνολογία 7 Νοεμβρίου 2008 Στυλιανή Πετρούδη ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΠΑΝΕΠΙΣΤΗΜΙΟ.
Προγραμματισμός ΙΙ Διάλεξη #5: Εντολές Ανάθεσης Εντολές Συνθήκης Δρ. Νικ. Λιόλιος.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Γενικευμένες κλάσεις Συλλογές.
Δρ. Μαρία Ι. Ανδρέου Εισαγωγή στον Αντικειμενόστρεφη Προγραμματισμό (Object-Oriented Programming) Data Types, Variables, and Arithmetic.
Μετατροπή Εκφράσεων σε C
ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμπούλης 1 Δείκτες σε συναρτήσεις Δείκτης σε συνάρτηση – Περιέχει τη διεύθυνση του κώδικα της συνάρτησης – Ό π ως ένας.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές.
HY150Ξενοφών Ζαμπούλης HY150 Ε π ι π λέον στοιχεία της C.
6/15/2015HY220: Ιάκωβος Μαυροειδής1 HY220 Static Random Access Memory.
ΗΥ Παπαευσταθίου Γιάννης1 Clock generation.
Προσομοίωση Δικτύων 2n Άσκηση Δημιουργία, διαμόρφωση μελέτη επικοινωνιακών ζεύξεων.
Week 11 Quiz Sentence #2. The sentence. λαλο ῦ μεν ε ἰ δότες ὅ τι ὁ ἐ γείρας τ ὸ ν κύριον Ἰ ησο ῦ ν κα ὶ ἡ μ ᾶ ς σ ὺ ν Ἰ ησο ῦ ἐ γερε ῖ κα ὶ παραστήσει.
ΜΗΧΑΝΙΚΗ Ι - ΣΤΑΤΙΚΗ 1. Στατική Ισορροπία (επανάληψη)
Προσομοίωση Δικτύων 4η Άσκηση Σύνθετες τοπολογίες, διακοπή συνδέσεων, δυναμική δρομολόγηση.
Γλώσσα R! R language Μερικά παραδείγματα 1.Γράφοντας το «ν παραγοντικό», n! Fact
Προσομοίωση Δικτύων 3η Άσκηση Δημιουργία, διαμόρφωση μελέτη σύνθετων τοπολογιών.
Περιγραφικά μέτρα κεντρικής τάσης και διασποράς μιας Ποσοτικής μεταβλητής σε σχέση με μία Ποιοτική μεταβλητή (εντολή By variable) π.χ. Να συγκριθούν οι.
Αριθμητική Επίλυση Διαφορικών Εξισώσεων 1. Συνήθης Δ.Ε. 1 ανεξάρτητη μεταβλητή x 1 εξαρτημένη μεταβλητή y Καθώς και παράγωγοι της y μέχρι n τάξης, στη.
Ψηφιακά Παιχνίδια και μάθηση Δρ. Νικολέτα Γιαννούτσου Εργαστήριο Εκπαιδευτικής Τεχνολογίας.
ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ Η/Υ 1 Εισαγωγή στη γλώσσα Προγραμματισμού C ΠΙΝΑΚΕΣ (arrays)
Διαχείριση Διαδικτυακής Φήμης! Do the Online Reputation Check! «Ημέρα Ασφαλούς Διαδικτύου 2015» Ε. Κοντοπίδη, ΠΕ19.
Introduction to Latent Variable Models. A comparison of models X1X1 X2X2 X3X3 Y1Y1 δ1δ1 δ2δ2 δ3δ3 Model AModel B ξ1ξ1 X1X1 X2X2 X3X3 δ1δ1 δ2δ2 δ3δ3.
Guide to Business Planning The Value Chain © Guide to Business Planning A principal use of value chain analysis is to identify a strategy mismatch between.
Variables, Expressions, and Statements Chapter 2.
Μαθαίνω με “υπότιτλους”
Αντισταθμιστική ανάλυση
Εισαγωγή στον Προγ/μό Η/Υ
Relations Chapter 9.
Προγραμματισμός Η/Υ Τμήμα Πολιτικών Έργων Υποδομής
Διδάσκων: Δρ. Τσίντζα Παναγιώτα
Αντικειμενοστραφής Προγραμματισμός ΙΙ
Αναπαράσταση αριθμών στον υπολογιστή Σφάλματα
Αντικειμενοστραφής Προγραμματισμός ΙΙ
Εισαγωγή στον Προγ/μό Υπολογιστών
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Matrix Analytic Techniques
ΜΕΤΑΒΛΗΤΕΣ-ΣΤΑΘΕΡΕΣ -ΕΚΦΡΑΣΕΙΣ
ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΓΛΩΣΣΑ C
Αλγόριθμοι Ταξινόμησης – Μέρος 3
9 Η Γλώσσα SQL Εισαγωγή – Βασικές Έννοιες Τύποι Δεδομένων
Ενότητα 1 : Εισαγωγικά Στοιχεία της Pascal Αλέξανδρος Τζάλλας
φίλτρα IIR (Infinite Impulse Response)
ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΓΛΩΣΣΑ C
MATLAB A MATrix LABoratoty
β’ εξάμηνο – εργαστήριο
Εντολές Δικτύων Command Line.
Οσμές στη Σχεδίαση του Λογισμικού
Μία πρακτική εισαγωγή στην χρήση του R
Συστήματα Αναμονής (Queuing Systems)
Συναρτήσεις στη C++ ΠΕΡΙΕΧΟΜΕΝΑ Εισαγωγή
Find: φ σ3 = 400 [lb/ft2] CD test Δσ = 1,000 [lb/ft2] Sand 34˚ 36˚ 38˚
aka Mathematical Models and Applications
GLY 326 Structural Geology
Find: ρc [in] from load γT=110 [lb/ft3] γT=100 [lb/ft3]
Find: ρc [in] from load γT=106 [lb/ft3] γT=112 [lb/ft3]
Financial Market Theory
Find: Force on culvert in [lb/ft]
Διάλεξη #10: Εκτέλεση Java χωρίς το BlueJ
Τύποι δεδομένων και τελεστές,
Τμήμα Τεχνολογίας Αλιείας – Υδατοκαλλιεργειών
Find: ρc [in] from load (4 layers)
ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΓΛΩΣΣΑ C
Μεταγράφημα παρουσίασης:

Octave/Matlab Tutorial Φεβρουάριος 2017

Overview Octave is the "open-source Matlab" Octave is a great gnuplot wrapper www.octave.org www.mathworks.com Octave and Matlab are both, high-level languages and mathematical programming environments for: Visualization Programming, algorithm development Numerical computation: linear algebra, optimization, control, statistics, signal and image processing, etc. Beware: Octave/Matlab programs can be slow.

Overview Matlab-Octave comparison: Matlab is more flexible/advanced/powerful/costly Octave is for free (GPL license) There are minor differences in syntax

Start, Quit, Getting Help Χρησιμοποιούμε την Octave 4.2.1 64bit για windows. Το πιο εύκολο είναι να ανοίξουμε το GUI Octave- 4.2.1 (GUI) If you get into trouble, you can interrupt Octave by typing Ctrl-C. To exit Octave, type quit or exit.

Kostas Marias TEI Crete 2016 7/11/2016 Kostas Marias TEI Crete 2016

Kostas Marias TEI Crete 2016 >> pkg load signal 7/11/2016 Kostas Marias TEI Crete 2016

Start, Quit, Getting Help To get help, type help or doc To get help on a specific command (=built-in function), type help command Examples: help size, help plot, help figure, help inv, ... To get help on the help system, type help help Type q to exit help mode (alike man pages)

Start, Quit, Getting Help In the help text of Matlab functions, function names and variables are in capital letters. ➛ Don't get confused! The (case-sensitive) naming convention specifies lowercase letters for built-in commands. It is just a way to highlight text. Example: help round returns ROUND Round towards nearest integer. ROUND(X) rounds the elements of X to the nearest integers. See also floor, ceil, fix. [...] Octave texts are mixed, in lower- and uppercase.

Variables and Data Types Matrices (real and complex) Strings (matrices of characters) Structures Vectors: It's a matrix with one column/row Scalars: It's a matrix of dimension 1x1 Integers: Ακέραιος (p.x. uint8) Boolean: Ακέραιος (π.χ 1=true, 0=false) Almost everything is a matrix! Matlab has more types, e.g. OO-classes

Variables and Data Types Creating a Character String Simply type: octave:4> str = 'Hello World' Opposed to Matlab, Octave can also deal with double quotes. For compatibility reasons, use single quotes. Creating a Structure Type for instance: data.id=3 data.name='student 1' data.time=13

Variables and Data Types Creating a Array of Structures Oh, a new measurement arrives. Extend struct by: data(2).id=4 data(2).name='student 2’ data(2).time=15 Octave will respond with: data = { 1x2 struct array containing the fields: id name time }

Variables and Data Types Display Variables Simply type its name: >> a=4 a = 4 >> a Suppress Output a;

Variables and Data Types Use who (or the more detailed whos ) to list the currently defined variables. Example output:

Variables and Data Types Talking about Float Variables... ceil(x) Round to smallest integer not less than x floor(x) Round to largest integer not greater than x round(x) Round towards nearest integer fix(x) Round towards zero If x is a matrix, the functions are applied to each element of x.

Πίνακας/ ψηφιακή εικόνα… Χρησιμοποιούμε διακριτές τιμές στις εικόνες (π.χ. δειγματοληψία) Η εικόνα μπορεί τώρα να αναπαρασταθεί ως ένας πίνακας με ακέραιες τιμές Η Ένταση στο i=3, j=4 είναι f( 3, 4 ) = 46 3 4 j i 7/11/2016 Kostas Marias TEI Crete 2016

Τύποι δεδομένων στηνMatlab 7/11/2016 Kostas Marias TEI Crete 2016

Kostas Marias TEI Crete 2016 Data classes double Double-precision, floating-point number is in the approximate range ±10308 (8 bytes per element) single Single-precision floating-point numbers with values in the approximate range ±1038 (4 bytes per element). uint8 Unsigned 8-bit Integers in the range [0, 255] (1 byte per element) uint16 Unsigned 16-bit Integers In the range [0, 65535] (2 bytes per element) uint32 Unsigned 32-bit integers in the range [0, 4294967295] (4 bytes per element) int8 Signed 8-bit integers in the range [-128,127] (1 byte per element) int16 Signed 16-bit integers in the range [-32768,32767] (2 bytes per element). int32 Signed 32-bit integers in the range [-2147483648,2147483647] (4 bytes per element). char Characters (2 bytes per element). logical Values are 0 or 1 (1 byte per element). 7/11/2016 Kostas Marias TEI Crete 2016

Converting between Classes Η γενική σύνταξη για μετατροπή κλάσεων είναι B = class_name(A) Π.χ. αν ο πίνακας A είναι class uint8 μπορούμε να φτιάξουμε τον αντίστοιχο double-precision array, B με την εντολή B = double (A). Αν ο C είναι ένας πίνακας class double με τιμές στο διάστημα [0, 255] , μπορεί να μετατραπεί σε uint8 με την εντολή D = uint8 (C) . Αν ένας πίνακας έχει τιμές έξω από το διάστημα [0,255] και μετατραπεί σε class uint8 όπως πριν, η MATLAB μετατρέπει σε 0 όλες τις τιμές < 0, σε 255 όλες τις τιμές >255. Οι ενδιάμεσες τιμές στρογγυλοποιούνται στον κοντινότερο ακέραιο. Οπότε πρέπει να γίνει σωστή μετατροπή τιμών (scaling) ενός πίνακα double array έτσι ώστε όλα τα στοιχεία του να είναι το διάστημα [0, 255] ΠΡΙΝ ΜΕΤΑΤΡΑΠΕΙ ΣΕ uint8!!!! 7/11/2016 Kostas Marias TEI Crete 2016

Matlab εργαλειοθήκη για τη μετατροπή πίνακα από ένα class σε άλλο Name Converts Input to: input im2uint8 uint8 logical, uint8, uint16, int16, single, and double im2uint16 uint16 im2double double im2single single mat2gray double in the range [0, 1] logical, uint8, int8, uint16, int16, uint32, int32, single, and double im2bw logical uint8, uint16,int16, single, and 7/11/2016 Kostas Marias TEI Crete 2016

Αριθμητικοί τελεστές πινάκων Τελεστής Όνομα Εξηγήσεις + Array and matrix addition a + b, A + B, or a + A. - Array and matrix subtraction a - b, A - B, A - a, or a - A. .* Array multiplication Cv=A.*B,C(I, J) =A(I, J)*B(1, J) . * Matrix multiplication A*B (πολλαπλασιασμός πινάκων) . / Array right division C=A./B, C(1, J) =A(i, j)/B(i, j) . \ Array left division C=A.\B, C(1, J) =B(j, j)/A(i, j) / Matrix right division A/ B is the preferred way to compute A* inv (B). \ Matrix left division A\B is the preferred way to compute inv(A) *B. .^ Array power IfC=A.'B,thenC(I, J) =A(I, J) ^B(I, J) . .’ Transpose A.' , standard vector and matrix transpose. 7/11/2016 Kostas Marias TEI Crete 2016

Πολλαπλασιασμός πινάκων στη matlab A=[a1 a2; a3 a4] and B=[b1 b2; b3 b4] The array product of A and B: A. *B = [a1b1 a2b2; a3b3 a4b4] whereas the matrix product: A*B=[a1b1+a2b3 a1b2+a2b4 ; a3b1 + a4b3 a3b2 + a4b4] Διάταξη (στοιχείων, αριθμών): array Matrix: πίνακας 7/11/2016 Kostas Marias TEI Crete 2016

Άλλοι χρήσιμοι τελεστές & (AND operator) και | (operator OR) μπορεί να λειτουργήσει σε πίνακες στοιχείο προς στοιχείο. && και || είναι εκδόσεις «βραχυκυκλώματος» για τις οποίες το δεύτερο σκέλος αξιολογείται μόνο όταν το αποτέλεσμα δεν καθορίζεται πλήρως από το πρώτο. Αυτά μπορούν να λειτουργούν μόνο σε π.χ. σε έναν integer ή double , όχι σε πίνακες. A & B (A and B are evaluated) A && B (B is only evaluated if A is true) 7/11/2016 Kostas Marias TEI Crete 2016

Προγραμματισμός - Εντολές 7/11/2016 Kostas Marias TEI Crete 2016

Variables and Data Types Creating a Matrix Simply type: A=[1 2 3; 4 5 6; 7 8 9]; >> A A = 1 2 3 4 5 6 7 8 9

Matrices Alternative Example: phi = pi/3; R = [cos(phi) -sin(phi); sin(phi) cos(phi)] R = 0.50000 -0.86603 0.86603 0.50000

Matrices Indexing Always "row before column"! aij = A(i,j) Get an element r = A(i,:) Get a row c = A(:,j) Get a column B = A(i:k,j:l) Get a submatrix Useful indexing command end : data = [4 -1 35 9 11 -2]; v = data(3:end) v = 35 9 11 -2

Matrices Colon ':', two meanings: Wildcard to select entire matrix row or column A(3,:), B(:,5) Defines a range in expressions like indices = 1:5 Returns row vector 1,2,3,4,5 steps = 1:3:61 Returns row vector 1,4,7,...,61 t = 0:0.01:1 Returns vector 0,0.01,0.02,...,1 Useful command to define ranges: linspace start increment stop

Matrices Assigning a Row/Column All referenced elements are set to the scalar value. octave:1> A = [1 2 3 4 5; 2 2 2 2 2; 3 3 3 3 3]; octave:2> A(3,:) = -3; Adding a Row/Column If the referenced row/colum doesn't exist, it's added. octave:3> A(4,:) = 4 A = 1 2 3 4 5 2 2 2 2 2 -3 -3 -3 -3 -3 4 4 4 4 4

Matrices Deleting a Row/Column Assigning an empty matrix [] deletes the referenced rows or columns. Examples: octave:4> A(2,:) = [] A = 1 2 3 4 5 -3 -3 -3 -3 -3 4 4 4 4 4 octave:4> A(:,1:2:5) = [] 2 4 2 2 -3 -3 4 4

Matrices Get Size nr = size(A,1) Get number of rows of A nc = size(A,2) Get number of columns of A [nr nc] = size(A) Get both (remember order) l = length(A) Get whatever is bigger numel(A) Get number of elements in A isempty(A) Check if A is empty matrix [] Octave only: nr = rows(A) Get number of rows of A nc = columns(A) Get number of columns of A

Matrices Matrix Operations B = 3*A Multiply by scalar C = A*B + X - D Add and multiply B = A' Transpose A B = inv(A) Invert A s = v'*Q*v Mix vectors and matrices d = det(A) Determinant of A [v lambda] = eig(A) Eigenvalue decomposition [U S V] = svd(A) Sing. value decomposition many many more...

Matrices Vector Operations With x being a column vector s = x'*x Inner product, result is a scalar X = x*x' Outer product, result is a matrix e = x*x Gives an error Element-Wise Operations (for vectors/matrices) s = x.+x Element-wise addition p = x.*x Element-wise multiplication q = x./x Element-wise division e = x.^3 Element-wise power operator

Matrices Useful Vector Functions sum(v) Compute sum of elements of v cumsum(v) Compute cumulative sum of elements of v prod(v) Compute product of elements of v cumprod(v) Compute cumulative product of elements of v diff(v) Compute difference of subsequent elements [v(2)-v(1) v(3)-v(2) ...] mean(v) Mean value of elements in v std(v) Standard deviation of elements

Matrices Useful Vector Functions min(v) Return smallest element in v max(v) Return largest element in v sort(v,'ascend') Sort in ascending order sort(v,'descend') Sort in descending order find(v) Return vector of indices of all non- zero elements in v. Great in combi- nation with vectorized conditions. Example: ivec = find(datavec == 5).

Βασικοί, έτοιμοι Standard Πίνακες του Matlab Οποιαδήποτε από τις ακόλουθες λειτουργίες-> το αποτέλεσμα είναι ένας τετράγωνος πίνακας • zeros (M, N) generates an M x N matrix of 0s of class double. • ones (M, N) generates an M x N matrix of 0s of class double. • true (M, N) generates an M x N logical matrix of 1s. • false (M, N) generates an M x N logical matrix of 0s. • magic (M) generates an M x M "magic square." This is a square array in which the sum along any row, column, or main diagonal, is the same. Magic squares are useful arrays for testing purposes because they are easy to generate and their numbers are integers. • eye (M) generates an M x M identity matrix. • rand (M, N) generates an M x N matrix whose entries are uniformly distributed random numbers in the interval [0 , 1]. • randn (M, N) generates an M x N matrix whose numbers are normally distributed (i.e., Gaussian) random numbers with mean 0 and variance 1. 7/11/2016 Kostas Marias TEI Crete 2016

Matrices Random Matrices and Vectors R = rand(m,n) Matrix with m x n uniformly distributed random numbers from interval [0..1] N = randn(m,n) Row vector with m x n normally distributed random numbers with zero mean, unit variance v = randperm(n) Row vector with a random permutation of the numbers 1 to n

Matrices Matrix Massage reshape(A,m,n) Change size of matrix A to have dimension m x n. An error results if A does not have m x n elements circshift(A,[m n]) Shift elements of A m times in row dimension and n times in column dimension shiftdim(A,n) Shift the dimension of A by n. Generalizes transpose for multi-dimensional matrices

Plotting Plotting in 2D plot(x,cos(x)) Display x,y-plot Creates automatically a figure window. Octave uses gnuplot to handle graphics. figure(n) Create figure window 'n' If the figure window already exists, brings it into the foreground (= makes it the current figure) figure Create new figure window with identifier incremented by 1.

Plotting Several Plots Series of x,y-patterns: plot(x1,y1,x2,y2,...) e.g. plot(x,cos(x),x,sin(x),x,x.^2) Add legend to plot: command legend legend('cos(x)','sin(x)','x^2') Alternatively, hold on does the same job: octave:1> hold on; plot(x,cos(x)); octave:2> plot(x,sin(x)); octave:3> plot(x,x.^2);

Plotting Several Plots Series of x,y-patterns: plot(x1,y1,x2,y2,...) e.g. plot(x,cos(x),x,sin(x),x,x.^2) Add legend to plot: command legend legend('cos(x)','sin(x)','x^2') Alternatively, hold on does the same job: octave:1> hold on; plot(x,cos(x)); octave:2> plot(x,sin(x)); octave:3> plot(x,x.^2);

Plotting Frequent Commands clf Clear figure hold on Hold axes. Don't replace plot with new plot, superimpose plots grid on Add grid lines grid off Remove grid lines title('Exp1') Set title of figure window xlabel('time') Set label of x-axis ylabel('prob') Set label of y-axis subplot Put several plot axes into figure

Plotting Controlling Axes axis equal Set equal scales for x-/y-axes axis square Force a square aspect ratio axis tight Set axes to the limits of the data a = axis Return current axis limits [xmin xmax ymin ymax] axis([-1 1 2 5]) Set axis limits (freeze axes) axis off Turn off tic marks box on Adds a box to the current axes box off Removes box

Plotting Choosing Symbols and Colors In plot(x,cos(x),'r+') the format expression 'r+' means red cross. There are a number of line styles and colors, see help plot. Example: x = linspace(0,2*pi,100); plot(x,cos(x),'r+',x,sin(x),'bx'); produces this plot:

Plotting plot(x,cos(x),'r+',x,sin(x),'bx');