Matlab Intro v03

35
7/23/2019 Matlab Intro v03 http://slidepdf.com/reader/full/matlab-intro-v03 1/35 Εισαγωγή στο Περιβάλλον Επιστημονικού Προγραμματισμού MATLAB-Simulink Δημήτριος Τζεράνης Λεωνίδας Αλεξόπουλος  1

Transcript of Matlab Intro v03

Page 1: Matlab Intro v03

7/23/2019 Matlab Intro v03

http://slidepdf.com/reader/full/matlab-intro-v03 1/35

Εισαγωγή στο Περιβάλλον

Επιστημονικού Προγραμματισμού

MATLAB-Simulink

Δημήτριος Τζεράνης 

Λεωνίδας Αλεξόπουλος 

1

Page 2: Matlab Intro v03

7/23/2019 Matlab Intro v03

http://slidepdf.com/reader/full/matlab-intro-v03 2/35

Τι είναι τα Matlab και Simulink?

• Το Matlab (MATrix LABoratory) είναι ένα περιβάλλονεπιστημονικού προγραμματισμού 

 – Περιέχει μια γλώσσα προγραμματισμού υψηλού επιπέδου 

 – Περιέχει εκτενείς βιβλιοθήκες από συναρτήσεις οργανωμένες σε

εργαλειοθήκες (toolbox) για συγκεκριμένες εφαρμογές 

• To Simulink είναι μια γραφική γλώσσα προγραμματισμού

για μοντελοποίηση/προσομοίωση δυναμικών συστημάτων  – Μέρος του MATLAB

Page 3: Matlab Intro v03

7/23/2019 Matlab Intro v03

http://slidepdf.com/reader/full/matlab-intro-v03 3/35

Γιατί Matlab?

• Θετικά  – Διευκολύνει την συγγραφή προγραμμάτων παρέχοντας στον

χρήστη πλήθος έτοιμων συναρτήσεων γενικής χρήσης 

 – Επιτρέπει ταχύα δημιουργία και αξιολόγηση ενός αλγόριθμου

(rapid prototyping)

• Αρνητικά 

 – Απαιτείται η αγορά του προϊόντος Matlab από την Mathworks –  Ένας κώδικας σε MATLAB είναι πολύ πιο αργός από ότι σε

C/Fortran

Page 4: Matlab Intro v03

7/23/2019 Matlab Intro v03

http://slidepdf.com/reader/full/matlab-intro-v03 4/35

Γιατί Matlab?

4

Σε C  Εύρεση max στοιχείου διδιάστατου πίνακα 

Σε Matlab  

max(A) 

Επίλυση μη-γραμμικης αλγεβρικής εξίσωσης  

 fsolve(f) 

Page 5: Matlab Intro v03

7/23/2019 Matlab Intro v03

http://slidepdf.com/reader/full/matlab-intro-v03 5/35

Εργαλειοθήκες του Matlab

5

Page 6: Matlab Intro v03

7/23/2019 Matlab Intro v03

http://slidepdf.com/reader/full/matlab-intro-v03 6/35

Μια Βασική Εισαγωγή στo Matlab

6

• Γραφικό Περιβάλλον 

• Μεταβλητές

• Αριθμητική 

• Πίνακες και Διανύσματα 

• M files και συναρτήσεις 

• Έλεγχος λογικής ροής 

Page 7: Matlab Intro v03

7/23/2019 Matlab Intro v03

http://slidepdf.com/reader/full/matlab-intro-v03 7/35

Γραφικό Περιβάλλον 

7

Χώρος εργασίας

(command window) Τρέχων directory

Workspace (Μεταβλητές

στην μνήμη)

Page 8: Matlab Intro v03

7/23/2019 Matlab Intro v03

http://slidepdf.com/reader/full/matlab-intro-v03 8/35

Γραφικό Περιβάλλον 

• Χώρος εργασίας (command window) – Περιβάλλον στο οποίο μπορούν να τρέξουν εντολές και να

παρατηρηθούν τα αποτελέσματα των πράξεων 

 – Κάτι σαν high-end κομπιουτεράκι 

• Τρέχων directory

 – Ο φάκελος στον οποίο το MATLAB ψάχνει πρώτο για να βρει

συναρτήσεις

 – Ο φάκελος στον οποίο το MATLAB ψάχνει δεδομένα εισόδου 

• Workspace

 – To σύνολο των μεταβλητών που βρίσκονται στην μνήμη του Η/Υ 

Page 9: Matlab Intro v03

7/23/2019 Matlab Intro v03

http://slidepdf.com/reader/full/matlab-intro-v03 9/35

Command Window

Μετά το >> είναι ο κέρσορας

(αναμένει είσοδο από χρήστη) 

Ο χρήστης δίνει 2 εντολές όπου

εισάγει τις μεταβλητές x (ίση με 2)και y (ίση με 3) αντίστοιχα. Το ;

μετά κάθε εντολή αποτρέπει την

προβολή του αποτελέσματος 

Το αποτέλεσμα της πρόσθεσης

των μεταβλητών x και y

αποθηκεύεται στην μεταβλητή z η

οποία προβάλεται διότι λείπει το ;

Εκτέλεση της συνάρτησης exp(x), η

οποία υπολογίζει το ex. Tο

αποτέλεσμα εμφανίζεται διότι λείπει το

; όμως δεν αποθηκεύεται σε κάποια

μεταβλητή. Κείμενο μετά το % είναισχόλιο και δεν λαμβάνεται υπόψην 

Page 10: Matlab Intro v03

7/23/2019 Matlab Intro v03

http://slidepdf.com/reader/full/matlab-intro-v03 10/35

Μεταβλητές στο MATLAB

• Κάθε μεταβλητή αντιστοιχεί σε δεδομένα αποθηκευμένασε θέσεις μνήμης του Η/Υ 

• Το όνομα μιας μεταβλητής ακολουθεί κανόνες 

 – Λατινικοί χαρακτήρες, ξεκινά με χαρακτήρα, case-sensitive

 – http://www.mathworks.com/help/matlab/matlab_prog/variable-names.html

• Το είδος μιας μεταβλητής αντιστοιχεί στο είδος των

δεδομένων που περιέχει 

Page 11: Matlab Intro v03

7/23/2019 Matlab Intro v03

http://slidepdf.com/reader/full/matlab-intro-v03 11/35

Είδη Μεταβλητών (Classes)

http://www.mathworks.com/help/techdoc/matlab_prog/f2-12135.html#f2-101310

Page 12: Matlab Intro v03

7/23/2019 Matlab Intro v03

http://slidepdf.com/reader/full/matlab-intro-v03 12/35

Είδη Μεταβλητών (Classes)

• Μια αριθμητική μεταβλητή είναι εξορισμού double(double precision) εκτός αν ο χρήστης την ορίσει

διαφορετικά 

Η μεταβλητή x είναι τύπου 

«double» (double precission) εξ

ορισμού. Η συνάρτηση class

δίνει τον τύπο της μεταβλητής 

Η μεταβλητή y είναι τύπου 

«uint8» (unsigned integer 8-bit)

επειδή έτσι ορίστηκε. 

Page 13: Matlab Intro v03

7/23/2019 Matlab Intro v03

http://slidepdf.com/reader/full/matlab-intro-v03 13/35

Είδη Μεταβλητών (Classes)

• Κάθε είδος αριθμητικής μεταβλητής – Μπορεί να περιγράψει διαφορετικό εύρος αριθμών 

 – Καταλαμβάνει διαφορετικό χώρο μνήμης 

Page 14: Matlab Intro v03

7/23/2019 Matlab Intro v03

http://slidepdf.com/reader/full/matlab-intro-v03 14/35

Βασική Αριθμητική 

+ Πρόσθεση

-  Αφαίρεση 

* Πολ/σμός 

/  Διαίρεση 

^ Υψωση σε δύναμη 

Αλγεβρικοί τελεστές  Μαθηματικές συναρτήσεις 

sin(x)

cos(x)

tan(x)

log(x)

exp(x)

Ημίτονο 

Συνημίτονο 

Εφαπτομένη 

Φυσικός

λογάριθμος 

Εκθετική ex

== ίσο με 

~= όχι ίσο με 

< μικρότερο 

> μεγαλύτερο

<= μικρότερο ή ίσο 

>= μεγαλύτερο ή ίσο 

& λογικό ΚΑΙ (AND)

| λογικό Ή (OR)

~ λογικό όχι (ΝΟΤ) 

Λογικοί τελεστές 

Page 15: Matlab Intro v03

7/23/2019 Matlab Intro v03

http://slidepdf.com/reader/full/matlab-intro-v03 15/35

Πίνακες και Διανύσματα 

• Το Matlab είναι σχεδιασμένο να δουλεύει με πίνακες 

• Πίνακας: σύνολο που περιέχει στοιχησμένα στοιχεία

 – Κάθε πίνακας αντιστοιχεί σε μια μεταβλητή  – Τα στοιχεία ενός πίνακα είναι του ιδίου είδους 

 – Διδιάστατοι πίνακες έχουν διάσταση Μ×Ν (Μ σειρές, Ν στήλες) 

• Διάνυσμα: ένας πίνακας με 1 στήλη 

Page 16: Matlab Intro v03

7/23/2019 Matlab Intro v03

http://slidepdf.com/reader/full/matlab-intro-v03 16/35

Πίνακες και Διανύσματα: Δημιουργία 

Η μεταβλητή x είναι ένας πίνακας με

2 γραμμές και 3 στήλες. Τα []

δηλώνουν την δημιουργία πίνακα. Το

, δηλώνει επόμενη στήλη. Το ;

 Δηλώνει επόμενη γραμμή 

Η μεταβλητή y είναι ένα διάνυσμα με 2 γραμμές .

Το ; δηλώνει επόμενη γραμμή 

 Δημιουργία ενός διανύσματος-

σειράς (1×Μ) του οποίου το πρώτο

στοιχείο είναι 1, και τα επόμενα

διαφέρουν κατά 2 έως το πολύ το 8 

 Δημιουργία ενός 2×3 πίνακα w του

οποίου τα στοιχεία είναι 1 

 Δημιουργία ενός 2×2 πίνακα k του

οποίου τα στοιχεία είναι 0 

Page 17: Matlab Intro v03

7/23/2019 Matlab Intro v03

http://slidepdf.com/reader/full/matlab-intro-v03 17/35

Πίνακες και Διανύσματα: Διευθυνσιολόγηση 

Η συνάρτηση randn δημιουργεί ένα

πίνακα x με 3 γραμμές και 4 στήλες, του

οποίου τα στοιχεία προκύπτουν από την

τυπική κανονική κατανομη Ν(0,1) 

Η μεταβλητή y δημιουργειται από το

στοιχείο της 2ης γραμμής και 3ης  στήλης

του πίνακα x

Η μεταβλητή z είναι ένας πίνακας που

δημιουργειται από τα στοιχεία των

γραμμών 1 έως 2 και των στηλών 2 έως4 του πίνακα x

Η μεταβλητή w είναι ένας πίνακας που

δημιουργειται από τα στοιχεία των

γραμμών 2 και μετά 1 της 4ης στήλης

του πίνακα x

Page 18: Matlab Intro v03

7/23/2019 Matlab Intro v03

http://slidepdf.com/reader/full/matlab-intro-v03 18/35

Πίνακες και Διανύσματα: Αριθμητική 

• Πράξεις πινάκων VS πράξεις στοιχείων πινάκων 

 Δημιουργία δύο 2×3 πινάκων Α και Β 

Ο 2×3 πίνακας C προκύπτει από την

πρόσθεση των πινάκων Α και Β με βάση

νόμους γραμμικής άλγεβρας 

Οι πίνακες Α και Β όπως είναι δεν

μπορούν να πολλαπλασιαστούν (στήλες Α

πρέπει να είναι ίσες με γραμμές Β). Δίνει

σφάλμα 

Ο 2×2 πίνακας D προκύπτει από τον

πολλαπλασιασμό του πίνακα Α με τον

ανάστροφο ΒΤ (το ‘ δημιουργεί τον ανάστροφο) 

Λόγω της τελείας . πριν τον τελεστή * ο 2×3

πίνακας F προκύπτει από πολλαπλασιασμό

στοιχείων: F(i,j) = A(i,j)*B(i,j)

Page 19: Matlab Intro v03

7/23/2019 Matlab Intro v03

http://slidepdf.com/reader/full/matlab-intro-v03 19/35

Πίνακες και Διανύσματα: Αριθμητική 

 Δημιουργία ενός 2×3 πίνακα

από τυχαία νούμερα στοεύρος [0,1] 

Στοίχηση των στοιχείων του z κατά

στήλες 

Υπολογισμός των μέγιστων

στοιχείων κάθε γραμμής του πίνακα

z

Page 20: Matlab Intro v03

7/23/2019 Matlab Intro v03

http://slidepdf.com/reader/full/matlab-intro-v03 20/35

Πίνακες και Διανύσματα: Αριθμητική 

• Πολλές συναρτήσεις όταν έχουν σαν είσοδο ένα πίνακα,εφαρμόζουν την συνάρτηση σε όλα τα στοιχεία του πίνακα 

 Δημιουργία του 2×3 πίνακα x του οποίου

τα στοιχεία είναί τυχαία στο εύρος [0,1] 

Κάθε στοιχείο του 2×3 πίνακα y

προκύπτει ως y(i,j) = exp(x(i,j))

Πολλαπλασιάζοντας ένα πίνακα με ένα

αριθμό ισοδυναμεί με πολλαπλασιασμό

κάθε στοιχείου με τον αριθμό. Εδώ, οπίνακας z έχει στοιχεία τυχαία στο

διάστημα [0,180] 

Κάθε στοιχείο του 2×3 πίνακα w προκύπτει

ως w(i,j) = cos(z(i,j)/180*π) . Ουσιαστικά οι

γωνίες z μετατρέπονται σε radians πριν

εφαρμοστεί η συνάρτηση cos (συνημίτονο) 

Page 21: Matlab Intro v03

7/23/2019 Matlab Intro v03

http://slidepdf.com/reader/full/matlab-intro-v03 21/35

Πίνακες και Διανύσματα: Χρήσιμες Συναρτήσεις 

 Δημιουργία 3×3 πίνακα Α 

Ορίζουσα του πίνακα Α 

 Διαστάσεις του πίνακα Α. Στην

μεταβλητή xA αποθηκεύεται ο αριθμός

των γραμμών, στην yA ο αριθμός των

στήλων 

Η μεταβλητή Αinv είναι ο αντίστροφος

του Α 

Page 22: Matlab Intro v03

7/23/2019 Matlab Intro v03

http://slidepdf.com/reader/full/matlab-intro-v03 22/35

Πίνακες και Διανύσματα: Χρήσιμες Συναρτήσεις 

Συνάρτηση 

Χ = zeros(n,m) Δημιουργία ενός n×m πίνακα Χ με στοιχεία 0 

Χ = ones(n,m) Δημιουργία ενός n×m πίνακα Χ με στοιχεία 1 

Χ = eye(n) Δημιουργία ενός n×n μοναδιαίου πίνακα Χ 

v = sum(X) Υπολογισμός του αθροίσματος των στοιχείων κάθε στήλης του

πίνακα Χ 

v = prod(X) Υπολογισμός του γινομένου των στοιχείων κάθε στήλης του πίνακα

Χ 

v = max(X) Υπολογισμός του μέγιστου στοιχείου κάθε στήλης του πίνακα Χ 

v = min(X) Υπολογισμός του ελάχιστου στοιχείου κάθε στήλης του πίνακα Χ 

d = numel(X) Συνολικός αριθμός στοιχείων του πίνακα Χ 

[r,s] = size(X) Αριθμός σειρών (r) και στήλων (s) του πίνακα Χ 

x = A\b Επίλυση του γραμμικού συστήματος Αx=b μέσω Gauss elimination

Page 23: Matlab Intro v03

7/23/2019 Matlab Intro v03

http://slidepdf.com/reader/full/matlab-intro-v03 23/35

M-files (Scripts) & Συναρτήσεις (Functions)

• Το Matlab είναι κάτι πολύ παραπάνω από ένακομπιουτεράκι για πράξεις στην command window

• Μ-file: μια ακολουθία από εντολές για εκτέλεση 

 –  Έχουν άμεση πρόσβαση στις μεταβλητές του workspace

• Συνάρτηση: ένα «κουτί» που εκτελεί κάποια εργασία 

 – Δέχεται εισόδους (arguments) και παρέχει εξόδους (αποτέλεσμα) 

 – Δεν έχει άμεση πρόσβαση στις μεταβλητές του workspace.

Αντίθετα χρησιμοποιεί δικές της μεταβλητές που σβήνονται μετά

την εκτέλεση της συνάρτησης 

Page 24: Matlab Intro v03

7/23/2019 Matlab Intro v03

http://slidepdf.com/reader/full/matlab-intro-v03 24/35

Μ-Files

 Δημιουργία ενός m-file (script)από το μενού file

Παράθυρο editorτου MATLAB

Εκτέλεση (run) τουm-file

 Ακολουθία εντολών

προς εκτέλεση 

Page 25: Matlab Intro v03

7/23/2019 Matlab Intro v03

http://slidepdf.com/reader/full/matlab-intro-v03 25/35

Συναρτήσεις: Δημιουργία 

 Δημιουργία function m-fileαπό το μενού file

 Δήλωσησυνάρτησης 

 Έξοδος 

 Όνομα

συνάρτησης 

Είσοδος

συνάρτησης 

Τέλος

συνάρτησης 

Page 26: Matlab Intro v03

7/23/2019 Matlab Intro v03

http://slidepdf.com/reader/full/matlab-intro-v03 26/35

Συναρτήσεις: Εκτέλεση 

• Παράδειγμα 

File->save as->f.m

Page 27: Matlab Intro v03

7/23/2019 Matlab Intro v03

http://slidepdf.com/reader/full/matlab-intro-v03 27/35

Συναρτήσεις σε Εργαλειοθήκες 

Page 28: Matlab Intro v03

7/23/2019 Matlab Intro v03

http://slidepdf.com/reader/full/matlab-intro-v03 28/35

 Έλεγχος Λογικής Ροής: Διαγράμματα Ροής 

•   Αλγόριθμος: Μια ακριβής περιγραφή των βημάτων πουαπαιτούνται για να επιτευχθεί μία εργασία 

•  Διαγράμματα Ροής 

 – Γραφικός τρόπος περιγραφής ενός

αλγόριθμου 

Διεργασία / Εντολή Είσοδος 

 Έξοδος  Απόφαση  Αρχή / Τέλος ΝΑΙ 

ΟΧΙ 

Page 29: Matlab Intro v03

7/23/2019 Matlab Intro v03

http://slidepdf.com/reader/full/matlab-intro-v03 29/35

 Έλεγχος Λογικής Ροής: Διαγράμματα Ροής 

• Παράδειγμα: εύρεση μικρότερου στοιχείου 

29

Page 30: Matlab Intro v03

7/23/2019 Matlab Intro v03

http://slidepdf.com/reader/full/matlab-intro-v03 30/35

 Έλεγχος Λογικής Ροής: If Statements

if (Condition_1)

Matlab Commands

elseif (Condition_2)

Matlab Commandselseif (Condition_3)

Matlab Commands

….. 

elseMatlab Commands

end

Page 31: Matlab Intro v03

7/23/2019 Matlab Intro v03

http://slidepdf.com/reader/full/matlab-intro-v03 31/35

 Έλεγχος Λογικής Ροής: For & While Loops

for cti = a:bMatlab Commands

end

while (condition)Matlab Commands

end

Υπολογισμός μιας αλυσίδας

αριθμών Fibonacci

x = zeros(1,15);

x(1)=0;x(2)=1;

for cti = 3:15

x(cti) = x(cti-1) + x(cti-2);

end

figure, bar(1:15,x);

Παράδειγμα: Υπολογισμόςαθροίσματος των στοιχείων

ενός 5×1 διανύσματος 

a = rand(5,1);

suma = 0;cti = 1

while ct<=5

suma = suma + a(cti);

ct = ct+1;

end

Page 32: Matlab Intro v03

7/23/2019 Matlab Intro v03

http://slidepdf.com/reader/full/matlab-intro-v03 32/35

 Έλεγχος Λογικής Ροής: For & While Loops

• Γενικά καλό είναι να προτιμούνται οι πράξεις σε πίνακεςαντί για πράξεις σε στοιχεία πινάκων μέσω for loops

Παράδειγμα:  Άθροισμα 2 διανυσμάτων

Αργό! 

a = rand(5,1);

b = rand(5,1);sumab = a+b;

Γρήγορο! 

a = rand(5,1);

b = rand(5,1);sumab = a;

for cti = 1:5

sumab(cti) = sumab(cti) + b(cti);

end

Page 33: Matlab Intro v03

7/23/2019 Matlab Intro v03

http://slidepdf.com/reader/full/matlab-intro-v03 33/35

Simulink: Περιβάλλον εργασίας 

Άνοιγμα παραθύρουsimulink

Παράθυρο simulink

Εργαλεία simulink

Παράθυρο editor

simulink

 Δυναμικό

μοντέλο 

Page 34: Matlab Intro v03

7/23/2019 Matlab Intro v03

http://slidepdf.com/reader/full/matlab-intro-v03 34/35

• Αριθμητική επίλυση της απόκρισης ενός m-c-kμηχανικού συστήματος σε βηματική είσοδο 

Simulink: Περιβάλλον εργασίας 

 Αλγόριθμος

αριθμητικήςολοκλήρωσης 

Παρουσίασηαποτέλέσματος

x(t)

Εκτέλεση

προσομοίωσης 

Βηματική

είσοδος 

Page 35: Matlab Intro v03

7/23/2019 Matlab Intro v03

http://slidepdf.com/reader/full/matlab-intro-v03 35/35

Βιβλιογραφία 

• Υπάρχουν αρχεία pdf ”user guide” & “getting started ” γιαMATLAB, simulink, και όλα τα toolbox. Ψάξτε στο google

 – Παράδειγμα αναζήτησης: ”matlab image processing toolbox user guide” 

 – Νέα έκδοση MATLAB βγαίνει κάθε 6 μήνες (π.χ. 2013a, 2013b,

κτλ). Τα βασικά του matlab/simulink είναι τα ίδια.

• Αρχεία που περιγράφουν τα βασικά (και όχι μόνο):

 – MATLAB Primer:

http://www.mathworks.com/help/pdf_doc/matlab/getstart.pdf  

 – Simulink Getting Started Guide

http://www.mathworks.com/help/pdf_doc/simulink/sl_gs.pdf