Upload
ptriantafylloy
View
231
Download
0
Embed Size (px)
Citation preview
7/23/2019 Matlab Intro v03
http://slidepdf.com/reader/full/matlab-intro-v03 1/35
Εισαγωγή στο Περιβάλλον
Επιστημονικού Προγραμματισμού
MATLAB-Simulink
Δημήτριος Τζεράνης
Λεωνίδας Αλεξόπουλος
1
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
7/23/2019 Matlab Intro v03
http://slidepdf.com/reader/full/matlab-intro-v03 3/35
Γιατί Matlab?
• Θετικά – Διευκολύνει την συγγραφή προγραμμάτων παρέχοντας στον
χρήστη πλήθος έτοιμων συναρτήσεων γενικής χρήσης
– Επιτρέπει ταχύα δημιουργία και αξιολόγηση ενός αλγόριθμου
(rapid prototyping)
• Αρνητικά
– Απαιτείται η αγορά του προϊόντος Matlab από την Mathworks – Ένας κώδικας σε MATLAB είναι πολύ πιο αργός από ότι σε
C/Fortran
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)
7/23/2019 Matlab Intro v03
http://slidepdf.com/reader/full/matlab-intro-v03 5/35
Εργαλειοθήκες του Matlab
5
7/23/2019 Matlab Intro v03
http://slidepdf.com/reader/full/matlab-intro-v03 6/35
Μια Βασική Εισαγωγή στo Matlab
6
• Γραφικό Περιβάλλον
• Μεταβλητές
• Αριθμητική
• Πίνακες και Διανύσματα
• M files και συναρτήσεις
• Έλεγχος λογικής ροής
7/23/2019 Matlab Intro v03
http://slidepdf.com/reader/full/matlab-intro-v03 7/35
Γραφικό Περιβάλλον
7
Χώρος εργασίας
(command window) Τρέχων directory
Workspace (Μεταβλητές
στην μνήμη)
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 σύνολο των μεταβλητών που βρίσκονται στην μνήμη του Η/Υ
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ο
αποτέλεσμα εμφανίζεται διότι λείπει το
; όμως δεν αποθηκεύεται σε κάποια
μεταβλητή. Κείμενο μετά το % είναισχόλιο και δεν λαμβάνεται υπόψην
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
• Το είδος μιας μεταβλητής αντιστοιχεί στο είδος των
δεδομένων που περιέχει
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
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)
επειδή έτσι ορίστηκε.
7/23/2019 Matlab Intro v03
http://slidepdf.com/reader/full/matlab-intro-v03 13/35
Είδη Μεταβλητών (Classes)
• Κάθε είδος αριθμητικής μεταβλητής – Μπορεί να περιγράψει διαφορετικό εύρος αριθμών
– Καταλαμβάνει διαφορετικό χώρο μνήμης
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)
~ λογικό όχι (ΝΟΤ)
Λογικοί τελεστές
7/23/2019 Matlab Intro v03
http://slidepdf.com/reader/full/matlab-intro-v03 15/35
Πίνακες και Διανύσματα
• Το Matlab είναι σχεδιασμένο να δουλεύει με πίνακες
• Πίνακας: σύνολο που περιέχει στοιχησμένα στοιχεία
– Κάθε πίνακας αντιστοιχεί σε μια μεταβλητή – Τα στοιχεία ενός πίνακα είναι του ιδίου είδους
– Διδιάστατοι πίνακες έχουν διάσταση Μ×Ν (Μ σειρές, Ν στήλες)
• Διάνυσμα: ένας πίνακας με 1 στήλη
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
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
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)
7/23/2019 Matlab Intro v03
http://slidepdf.com/reader/full/matlab-intro-v03 19/35
Πίνακες και Διανύσματα: Αριθμητική
Δημιουργία ενός 2×3 πίνακα
από τυχαία νούμερα στοεύρος [0,1]
Στοίχηση των στοιχείων του z κατά
στήλες
Υπολογισμός των μέγιστων
στοιχείων κάθε γραμμής του πίνακα
z
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 (συνημίτονο)
7/23/2019 Matlab Intro v03
http://slidepdf.com/reader/full/matlab-intro-v03 21/35
Πίνακες και Διανύσματα: Χρήσιμες Συναρτήσεις
Δημιουργία 3×3 πίνακα Α
Ορίζουσα του πίνακα Α
Διαστάσεις του πίνακα Α. Στην
μεταβλητή xA αποθηκεύεται ο αριθμός
των γραμμών, στην yA ο αριθμός των
στήλων
Η μεταβλητή Αinv είναι ο αντίστροφος
του Α
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
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.
Αντίθετα χρησιμοποιεί δικές της μεταβλητές που σβήνονται μετά
την εκτέλεση της συνάρτησης
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
Ακολουθία εντολών
προς εκτέλεση
7/23/2019 Matlab Intro v03
http://slidepdf.com/reader/full/matlab-intro-v03 25/35
Συναρτήσεις: Δημιουργία
Δημιουργία function m-fileαπό το μενού file
Δήλωσησυνάρτησης
Έξοδος
Όνομα
συνάρτησης
Είσοδος
συνάρτησης
Τέλος
συνάρτησης
7/23/2019 Matlab Intro v03
http://slidepdf.com/reader/full/matlab-intro-v03 26/35
Συναρτήσεις: Εκτέλεση
• Παράδειγμα
File->save as->f.m
7/23/2019 Matlab Intro v03
http://slidepdf.com/reader/full/matlab-intro-v03 27/35
Συναρτήσεις σε Εργαλειοθήκες
7/23/2019 Matlab Intro v03
http://slidepdf.com/reader/full/matlab-intro-v03 28/35
Έλεγχος Λογικής Ροής: Διαγράμματα Ροής
• Αλγόριθμος: Μια ακριβής περιγραφή των βημάτων πουαπαιτούνται για να επιτευχθεί μία εργασία
• Διαγράμματα Ροής
– Γραφικός τρόπος περιγραφής ενός
αλγόριθμου
Διεργασία / Εντολή Είσοδος
Έξοδος Απόφαση Αρχή / Τέλος ΝΑΙ
ΟΧΙ
7/23/2019 Matlab Intro v03
http://slidepdf.com/reader/full/matlab-intro-v03 29/35
Έλεγχος Λογικής Ροής: Διαγράμματα Ροής
• Παράδειγμα: εύρεση μικρότερου στοιχείου
29
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
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
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
7/23/2019 Matlab Intro v03
http://slidepdf.com/reader/full/matlab-intro-v03 33/35
Simulink: Περιβάλλον εργασίας
Άνοιγμα παραθύρουsimulink
Παράθυρο simulink
Εργαλεία simulink
Παράθυρο editor
simulink
Δυναμικό
μοντέλο
7/23/2019 Matlab Intro v03
http://slidepdf.com/reader/full/matlab-intro-v03 34/35
• Αριθμητική επίλυση της απόκρισης ενός m-c-kμηχανικού συστήματος σε βηματική είσοδο
Simulink: Περιβάλλον εργασίας
Αλγόριθμος
αριθμητικήςολοκλήρωσης
Παρουσίασηαποτέλέσματος
x(t)
Εκτέλεση
προσομοίωσης
Βηματική
είσοδος
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