ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα 2 ο ΕΡΓΑΣΤΗΡΙΟ ΣΗΜΑΤΑ & ΣΥΣΤΗΜΑΤΑ Ενότητα: ΜΑΘΑΙΝΟΝΤΑΣ ΤΟ MATLAB, ΜΕΡΟΣ B Aναστασία Βελώνη Τμήμα Η.Υ.Σ
Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2
Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3
Σκοποί ενότητας Με την ολοκλήρωση αυτής της ενότητας, θα είστε σε θέση: Να μάθετε τα βασικά στοιχεία του MATLAB Μέρος B 4
Περιεχόμενα ενότητας 1. Διανύσματα 2. Συναρτήσεις length size 3. Πίνακες 4. Κυριότερες Εντολές για Γραφήματα 5. Χρήσιμες Εντολές για Γραφήματα 6. Δουλεύοντας με το MATLAB, εφαρμογές στο εργαστήριο 5
Διανύσματα Το Matlab (MATrix LABoratory) είναι ένα εργαλείο προγραμματισμού ιδιαιτέρως κατάλληλο για να δουλεύουμε με πίνακες. Όλες οι ποσότητες Θεωρούνται πίνακες (ακόμα και οι αριθμοί θεωρούνται 1χ1 πίνακες). Σε αυτή εδώ την ενότητα Θα ασχοληθούμε με μια ειδική περίπτωση πινάκων τα διανύσματα. 6
Διανύσματα γραμμής 7
Συναρτήσεις length - size 8
Το διαχωριστικό σύμβολο : (1) Στην περίπτωση που τα στοιχεία του διανύσματος βρίσκονται σε ίσες αποστάσεις μεταξύ τούς μπορούμε να ορίσουμε ένα διάνυσμα χρησιμοποιώντας το πρώτο στοιχείο, την απόσταση δυο διαδοχικών στοιχείων (πού θα αποκαλούμε βήμα) και το τελευταίο στοιχείο με διαχωριστικό σύμβολο το ':'. Δηλαδή θα έχουμε τη μορφή «α = Πρώτο στοιχείο : Βήμα : Τελευταίο στοιχείο» Στη περίπτωση όπου το βήμα είναι 1, τότε το βήμα στην παραπάνω έκφραση μπορεί να παραληφθεί. Τέλος μπορούμε να έχουμε αρνητικό δεκαδικό ή και άρρητο βήμα. Όταν ορίζουμε ένα διάνυσμα με αυτό τον τρόπο οι αγκύλες μπορούν να παραλειφθούν. 9
Το διαχωριστικό σύμβολο : (2) 10
Πρόσθεση αφαίρεση διανυσμάτων 11
Πολλαπλασιασμός, διαίρεση, ύψωση σε δύναμη διανυσμάτων 12
Διανύσματα στήλης 13
Χρήσιμες εντολές για διανύσματα sumcumsum-prod-diff-max-min sort-meanmedian 14
Πίνακες (1) Οι πίνακες στο ΜΑΤΙΑΒ περικλείονται σε αγκύλες [ ] και εισάγονται με απλό τρόπο. 1. Να γράφουμε τα στοιχεία μιας γραμμής τον πίνακα χρησιμοποιώντας κενό ή κόμμα. Στη συνεχεία προκειμένου να αλλάξουμε γραμμή χρησιμοποιούμε το ερωτηματικό ';'. Συνεχίζουμε γράφοντας τα στοιχεία της δεύτερης γραμμής κλπ. 2. Μετά το άνοιγμα της πρώτης αγκύλης γράφουμε τα στοιχεία της πρώτης γραμμής, πατάμε Enter και αλλάζουμε γραμμή. Συνεχίζουμε με το ίδιο τρόπο, μέχρι να ολοκληρώσουμε το πίνακα μας. Τότε κλείνουμε την αγκύλη και πατώντας Enter ο πίνακας είναι έτοιμος. 3. Να ορίσουμε κάθε γραμμή τον πίνακα ως διάνυσμα γραμμής χρησιμοποιώντας το πρώτο στοιχείο, την απόσταση δυο διαδοχικών στοιχείων (ή βήμα) και το τελευταίο στοιχείο με διαχωριστικό σύμβολο το ' :'. Για να αλλάζουμε γραμμές χρησιμοποιούμε το ερωτηματικό ' ;'. 15
Πίνακες (2) 16
Πίνακες (3) 17
Παράθεση πινάκων (1) Δύο πίνακες Α και Β με τον ίδιο αριθμό γραμμών μπορούν να παρατεθούν ο ένας δίπλα στον άλλο και να δημιουργήσουν ένα νέο πίνακα με τον ίδιο αριθμό γραμμών και πλήθος στηλών όσο το άθροισμα τον πλήθους στηλών στους δυο αρχικούς πίνακες. Η λειτουργία αυτή ονομάζεται παράθεση πινάκων. Ο τρόπος που επιτυγχάνεται είναι να ράψουμε [Α Β] ή [4,Β]. 18
Παράθεση πινάκων (2) 19
Δουλεύοντας με πίνακες Αν θέλουμε να εξαγάγουμε την k γραμμή τον πίνακα Α αρκεί να γράψουμε Α(k,:). Αν θέλουμε να εξάγουμε την k στήλη τον πίνακα Α αρκεί να γράψουμε Α(: k). Για να εξαγάγουμε έναν Υποπίνακα από την γραμμή k1 έως τη γραμμή k2 και από τη στήλη m1 έως τη στήλη m2 μέσα από έναν πίνακα γράφουμε Α(k1: k2,m 1: m2). Τέλος ο τρόπος για να μετατρέψουμε ένα πίνακα Α σε διάνυσμα στήλης είναι να γράψουμε Α(:). 20
Δουλεύοντας με πίνακες Παραδείγματα (1) 21
Δουλεύοντας με πίνακες Παραδείγματα (2) 22
Πρόσθεση αφαίρεση πινάκων 23
Πολλαπλασιασμός πινάκων 24
Δυνάμεις πινάκων 25
Αντίστροφος πίνακας 26
Ορίζουσα πίνακα 27
Διαίρεση πινάκων 28
Ανάστροφος πίνακας 29
Μορφές πινάκων ones zeros rand- eye magic (1) Η συνάρτηση ones (M,Ν) μας επιστρέφει ένα πίνακα από άσσους, που αποτελείται από Μ γραμμές και Ν στήλες. Η συνάρτηση zeros (Μ,Ν) επιστρέφει ένα πίνακα από μηδενικά, που αποτελείται από Μ γραμμές και Ν στήλες. Η συνάρτηση rand (M,Ν) επιστρέφει ένα ΜxΝ πίνακα με τυχαία στοιχεία. Η συνάρτηση eye (M, Ν) επιστρέφει ένα ΜxΝ πίνακα που έχει άσσους στη κύρια διαγώνια και μηδενικά στις υπόλοιπες Θέσεις. Η συνάρτηση magic (Μ) δημιουργεί ένα τετραγωνικό πίνακα με την ιδιότητα το άθροισμα των στοιχείων κάθε γραμμής και κάθε στήλης να είναι το ίδιο. 30
Μορφές πινάκων ones zeros rand- eye magic (2) 31
Χρήσιμες συναρτήσεις πινάκων (diag-find-sum-rank-norm-eig) (1) 32
Χρήσιμες συναρτήσεις πινάκων (diag-find-sum-rank-norm-eig) (2) 33
Χρήσιμες συναρτήσεις πινάκων (diag-find-sum-rank-norm-eig) (3) 34
Γραφικά με το MATLAB 35
Κυριότερες Εντολές για Γραφήματα 36
Η εντολή plot Χρησιμοποιείται για την κατασκευή του γραφήματος μιας επίπεδης καμπύλης τα σημεία της οποίας είναι αποθηκευμένα σε ισομήκη διανύσματα: >> x=[0 1 1.5 2.2 3]; >> y=[2 1.65 1.3 1.4 4]; >> plot(x,y) 37
Περιβάλλον 38
plot: Χρώματα, Σύμβολα και Γραμμές >>plot (x,y, [color] [stype] [ltype] ) 39
Παράδειγμα #1 >>x=-1:1:10; >>y=exp(x); >>plot(x, y, 'g--') :Πράσινη, αδρή, διακεκομμένη 40
Παράδειγμα #2 >>x=-1:1:2; >>y=exp(x); >> plot(x, y, m: ) : Μωβ, λεπτή διακεκομμένη γραμμή 41
Παράδειγμα #3 >>x=-1:0.5:2; >>y=exp(x); >> plot(x, y, k-- ) : Μαύρη, αδρή διακεκομμένη γραμμή 42
Παράδειγμα #4: Πολλαπλά >>plot (x1, y1, [color] [stype] [ltype], x2, y2, [color] [stype] [ltype], ) >> x=0:0.02:6; >> y=80*sin(x); >> z=exp(x); >> plot(x,y, 'r', x,z,'--') γραφήματα 43
Ετικέτες Αξόνων (xlabel ylabel) >>xlabel( τίτλος x ); Δίνει ετικέτα στον άξονα x >>ylabel( τίτλος y ); Δίνει ετικέτα στον άξονα y 44
Ονομασία Γραφήματος Πλέγμα (title legend grid) (1) >>title( ονομασία γραφήματος ); Δίνει όνομα στο γράφημα >>legend( τίτλος παραθύρου ); Δίνει όνομα στο παράθυρο του γραφήματος >>grid Δημιουργεί πλέγμα στο γράφημα 45
Ονομασία Γραφήματος Πλέγμα (title legend grid) (2) 46
Οι εντολές Text-figure Προσθέτει κείμενο σε συγκεκριμένη θέση του γραφήματος >>text(x,y, μήνυμα ); x, y : οι θέσεις μέσα στο γράφημα Ανοίγει άλλο παράθυρο γραφικών >>figure (nr); nr : Θετικός ακέραιος αριθμός από 1 μέχρι 2147483646 47
Η εντολή hold Παγώνει το τρέχον παράθυρο γραφικών Σχεδιασμός επιπλέον καμπυλών στο ίδιο γράφημα >>hold; Ενεργοποίηση παγώματος παραθύρου γραφικών >>hold off Απενεργοποίηση παγώματος παραθύρου 48
Η εντολή axis Ρυθμίζει τους άξονες του γραφήματος >>axis : Κλειδώνει/ ξεκλειδώνει τους άξονες >>axis equal : Ίσες μονάδες αξόνων >>axis off : Διαγραφή αξόνων >>axis([xmin, xmax, ymin, ymax] : Οριοθετεί τους άξονες. 49
Παράδειγμα (1) >> x=0:0.01:2*pi; >> y=cos(x); >> z=sin(x); >> plot(x,y); >> hold >> plot(x,z,'--'); >> legend( cos(x), sin(x) ); 50
Παράδειγμα (2) >> xlabel( x ); >> ylabel( Τιμές των συν, ημ ); >> title ( Γραφική απεικόνιση συνημιτόνου, ημιτόνου ); >>axis([0, 2*pi, -1, 1]); 51
Παράδειγμα (3) 52
Η εντολή ezplot Ευκολότερη παραγωγή γραφήματος συγκριτικά με την plot και την fplot Βρίσκει αυτόματα τα διαστήματα των αξόνων Δυνατότητα επιλογής διαστήματος από το χρήστη Γράφημα πεπλεγμένης συνάρτησης (f(x,y)=0) Γράφημα παραμετρικής συνάρτησης 53
Σύνταξη της ezplot >>ezplot( f ):Παράγει το γράφημα της f επιλέγοντας τα διανύσματα των αξόνων των x και y (Y=f(x)) >>ezplot( f, a, b):παράγει το γράφημα της f ώστε οι τιμές του x να βρίσκονται στο διάστημα [a, b] >>ezplot( f, [xmin, xmax, ymin, ymax]):παράγει το γράφημα της f προσδιορίζοντας τις τιμές των αξόνων 54
Παράδειγμα >>ezplot( 1/(1+χ^2), -3, 3) 55
Η εντολή comet Δίνει κινούμενο γράφημα μιας παραμετρικής καμπύλης >>comet(x,y) x = x(t), y = y(t) όπου το t παίρνει τιμές σε διάστημα [a, b] >> t=0:0.01:100*pi; >> x=cos(t); >> y=sin(t); >> comet(x,y); 56
Η εντολή comet 57
Η εντολή fplot >>fplot( f, [xmin, xmax]) >>fplot( f,[xmin, xmax, ymin, ymax]) Πλεονεκτήματα Βρίσκει αυτόματα τα διαστήματα των αξόνων Δυνατότητα επιλογής διαστήματος από το χρήστη Γράφημα πεπλεγμένης συνάρτησης (f(x,y)=0) Γράφημα παραμετρικής συνάρτησης 58
Παράδειγμα >>fplot('x^2/(x^2-1)',[- 6,6, -1.5, 3]) 59
fplot: Πολλαπλά γραφήματα >>fplot ( [f1(x), f2(x), ], [xmin, xmax]) >>fplot ( [f1(x), f2(x), ], [xmin, xmax, ymin, ymax]) >>fplot ( [x, x^2, 20*sin(x)], [0, 2*pi]) 60
Χρήσιμες Εντολές για Γραφήματα Εντολή Plot(τ,Υ) loglog(z,y) semilogx(x,y) semilogy(x,y) Περιγραφή Κανονικό ή γραμμικό γράφημα. Οι άξονες των χ και ν είναι γραμμικοί. Λογαριθμικό γράφημα. 4ι άξονες των χ και ν είναι λογαριθμικοί. Ημιλογαριθμικό γράφημα. Ο άξονας των x είναι λογαριθμικός και των y γραμμικός. Ημιλογαριθμικό γράφημα. Ο άξονας των x είναι γραμμικός και των y λογαριθμικός. 61
Η εντολή subplot Τοποθέτηση πολλών γραφημάτων στο ίδιο παράθυρο. >>subplot(m,n,p) m, n : Πλήθος υποπαραθύρων του παραθύρου γραφικών p : Η θέση που θα τοποθετηθεί το γράφημα Η αρίθμηση των παραθύρων γίνεται κατά γραμμές 62
Παράδειγμα (1) 63
Παράδειγμα (2) >> t=0:0.01:2*pi; >> f1=sin(t.^2); >> f2=(sin(t)).^2; >> f3=cos(t.^2); >> f4=(cos(t)).^2; >> subplot(2,2,1); >> plot(t,f1) title('sin(t^2)') >> subplot(2,2,2); >> plot(t,f2) >> title('sin^2(t)') >> subplot(2,2,3); >> plot(t,f3) >> title('cos(t^2)') >> subplot(2,2,4); >> plot(t,f4) >> title('cos^2(t)') 64
Η εντολή polar Γραφικές παραστάσεις συναρτήσεων σε πολικές συντεταγμένες >>polar(theta, r) r=r(θ) 65
Παράδειγμα >>t = 0:.01:2*pi; polar(t,sin(2*t).* cos(2*t),'--r') 66
Ραβδογράμματα & Εμβαδογράμματα Δεδομένα διανυσμάτων και πινάκων Χρησιμοποιούνται στη Στατιστική 67
Η εντολή bar Κάθετο δισδιάστατο ραβδογράφημα Εμφανίζει τις στήλες ενός πίνακα Y (mxn) σε m ομάδες από n κατακόρυφες ράβδους >>bar(x, y) x: Τιμές οριζόντιου άξονα y: ο πίνακας που θα χρησιμοποιηθεί στο ράβδόγραμμα 68
Παράδειγμα #1 >>x=-2.9:0.1:2.9; >>y=exp(-x.^2); >>bar(x,y, r ); 69
Παράδειγμα #2 Ραβδόγραμμα & Πίνακες (1) >>Υ=[1 5 6 4 7; 2 9 4 1 8] Y = 1 5 6 4 7 2 9 4 1 8 >>subplot(1,2,1), bar(y), title( bar ); >>subplot(1,2,2), bar(y), title( bar3 ); 70
Παράδειγμα #2 Ραβδόγραμμα & Πίνακες (2) 71
Εμβαδογράμματα >>q=[4; 3; 1; 7; 9]; >>area(q) 72
ΔΟΥΛΕΥΟΝΤΑΣ ΜΕ ΤΟ MATLAB ΕΦΑΡΜΟΓΕΣ ΣΤΟ ΕΡΓΑΣΤΗΡΙΟ
ΕΦ1. Έστω ότι θέλουμε να σχεδιάσουμε τη συνάρτηση 74
ΕΦ2. Θέλουμε να σχεδιάσουμε τις συναρτήσεις 75
Λύση 76
ΕΦ3. Γράψτε το αποτέλεσμα της κάθε εντολής που ακολουθεί με τα αντίστοιχα σχόλια >> x=1:100; >> y=2*x+30; plot(x,y), loglog(x,y), semilogx(x,y), semilogy(x,y), area(x,y), fplot('2*x+30',[1,100]) 77
Λύση (1) 78
Λύση (2) 79
ΕΦ4. Να σχεδιαστεί η συνάρτηση 80
Λύση 81
ΕΦ5. Σχεδίαση της παράστασης y=1+2x5 με διαφορετικούς τρόπους, στο διάστημα [0, 100] Ορισμός των x και y >>x=0:0.1:100; >> y=1+2*x.^5; 82
Λύση (1) (a) Κανονικό γράφημα >>plot(x,y), grid, xlabel( x ), ylabel( y ) >>title( Linear/ Linear ) 83
Λύση (2) (β) Λογαριθμικό γράφημα >>loglog(x,y), grid, xlabel( x ), ylabel( y ) >>title( Log/ Log ) 84
Λύση (3) (γ) Ημιλογαριθμικa γραφήματα >>semilogy(x,y), grid, xlabel( x ), ylabel( y ) >>title( Linear/ Log ) >>semilogχ(x,y), grid, xlabel( x ), ylabel( y ) >>title( Log/ Linear ) 85
Τέλος Ενότητας