Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Ηλεκτρονική Υγεία Εργαστήριο 5 ο : MATLAB Αν. καθηγητής Αγγελίδης Παντελής e-mail: paggelidis@uowm.gr Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών
Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2
Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ψηφιακά Μαθήματα στο Πανεπιστήμιο Δυτικής Μακεδονίας» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3
Χρήσιμες ιδιότητες της MATLAB (1/3) Τύπος δεδομένων : O βασικός τύπος για τα δεδομένα, τα οποία εισάγονται στο λογισμικό, είναι ο πίνακας ή το διάνυσμα. Οι πίνακες αυτοί είναι σε θέση να δεχτούν διαφόρων ειδών δεδομένα, όπως ακέραιους αριθμούς, πραγματικούς ή μιγαδικούς αριθμούς, αλφαριθμητικά δεδομένα και κελιά αριθμών. Ονοματολογία δεδομένων/μεταβλητών: H MATLAB διαθέτει κανόνες για την ονοματολογία των διαφόρων μεταβλητών. Αποδεκτά ονόματα: data, length_1, anna. Αποφυγή χρήσης χαρακτήρων διότι οι χαρακτήρες αυτοί έχουν ειδική σημασία: +, -, *, ^, /, \, =, ~, <, >, &,, :, (, ), [, ],., %,! Τέλος, τα ονόματα των μεταβλητών θα πρέπει να μη συμπίπτουν με ονόματα μεταβλητών, σταθερών τιμών ή συναρτήσεων της MATLAB. 4
Χρήσιμες ιδιότητες της MATLAB (2/3) Ευαισθησία κατά περίπτωση (case sensitivity): Σαφής διάκριση μεταξύ των κεφαλαίων και των πεζών γραμμάτων. Προβολή των αποτελεσμάτων (output display): Τα αποτέλεσμα οποιασδήποτε εντολής προβάλλονται στην οθόνη (παράθυρο εντολών ή παράθυρο γραφημάτων). Ένα ερωτηματικό (;) στο τέλος μιας εντολής καταχώρησης αποτρέπει τη MATLAB από την εμφάνιση στην οθόνη του αποτελέσματος. Τρόπος εμφάνισης των εξαγόμενων αποτελεσμάτων (output format): Η εμφάνιση των εξαγόμενων αποτελεσμάτων είναι διαφορετική (διπλής ακρίβειας). 5
Χρήσιμες ιδιότητες της MATLAB (3/3) Επανεκτέλεση εντολών: Η MATLAB αποθηκεύει τις εντολές, οι οποίες εκτελέστηκαν σε ένα τμήμα του χώρου εργασίας. Με τα βέλη πάνω και κάτω είναι δυνατό να επαναφερθεί στη γραμμή εντολών μια εντολή, η οποία εκτελέστηκε προηγούμενα. Το σύνολο των εντολών καταγράφονται στο παράθυρο ιστορικού εντολών (Command History): είναι δυνατή η αντιγραφή (copy) μιας συγκεκριμένης εντολής και εν συνεχεία η επικόλληση (paste) στο παράθυρο των εντολών. 6
Βασικοί τύποι Μ-files: αρχείων της MATLAB (1/5) Είναι τυπικά ASCII text files, συνοδευόμενα από την προέκταση.m στο όνομα του αρχείου. Υπάρχουν δύο βασικές κατηγορίες τέτοιων αρχείων: script files και function files. Τα περισσότερα προγράμματα, τα οποία συντάσσονται μέσω της MATLAB αποθηκεύονται ως M-files. Το σύνολο των ενσωματωμένων συναρτήσεων είναι τύπου M-files. Μερικές ενσωματωμένες συναρτήσεις παρέχονται από το λογισμικό στο χρήστη με τον πηγαίο κώδικα σε αναγνώσιμα M-flies, με αποτέλεσμα να μπορεί ο κώδικας αυτός να αντιγραφεί ή ακόμα και να τροποποιηθεί. 7
Βασικοί τύποι Μat-files: αρχείων της MATLAB (2/5) Είναι τυπικά binary data-files, συνοδευόμενα από την προέκταση.mat στο όνομα του αρχείου. Tα αρχεία αυτά δημιουργούνται από τη MATLAB στην περίπτωση κατά την οποία ο χρήστης αποθηκεύει τα δεδομένα με την εντολή save. Τα δεδομένα είναι καταγεγραμμένα με ειδικό τρόπο, έτσι ώστε να είναι δυνατή η ανάγνωσή τους μόνο από το παρών λογισμικό. Τέλος, είναι δυνατή η φόρτωση τους μέσω από τη MATLAB με την εντολή load. 8
Βασικοί τύποι αρχείων της MATLAB (3/5) Fig-files: Είναι τυπικά binary figure-files, συνοδευόμενα από την προέκταση.fig στο όνομα του αρχείου. Tα αρχεία αυτά δημιουργούνται από τη MATLAB στην περίπτωση κατά την οποία ο χρήστης αποθηκεύει ένα γράφημα, χρησιμοποιώντας είτε τις επιλογές από το File menu Save ή Save As είτε πληκτρολογώντας την εντολή saveas στο παράθυρο των εντολών. Τα αρχεία αυτά μπορούν να προσπελαστούν από τη MATLAB ως αρχεία, τα οποία περιέχουν γραφήματα του λογισμικού. Η ενεργοποίηση τω αρχείων αυτών υλοποιείται μέσω της εντολής open filename.fig. 9
P-files: Βασικοί τύποι αρχείων της MATLAB (4/5) Είναι προσαρμοσμένα M-files, τα οποία συνοδεύονται από την κατάληξη.p και μπορεί να εκτελεσθούν απευθείας από τη MATLAB. Αυτά τα αρχεία δημιουργούνται με την εντολή pcode. Στην περίπτωση, κατά την οποία ο χρήστης έχει αναπτύξει μια εφαρμογή και δεν επιθυμεί να δώσει σε άλλους χρήστες τον πηγαίο κώδικα (M-file) αυτής, παρά μόνο το εκτελέσιμο αρχείο, τότε είναι σκόπιμη η χρήση του p-file. 10
Βασικοί τύποι Mex-files: αρχείων της MATLAB (5/5) Είναι αρχεία τα οποία αποσκοπούν στη σύνδεση της MATLAB με διάφορες γλώσσες προγραμματισμού, όπως η Fortran και η C. Συνοδεύονται από την κατάληξη.mex και γενικά απαιτούν ιδιαίτερη εξοικείωση και εμπειρία με τη MATLAB. 11
Θεμελιώδεις εντολές της MATLAB (1/2) 12
Θεμελιώδεις εντολές της MATLAB (2/2) 13
Απλοί υπολογισμοί- Πράξεις μεταξύ αριθμών 14
Απλοί υπολογισμοί- Καταχώρηση τιμής σε μεταβλητή 15
Απλοί υπολογισμοί- Μαθηματικές και άλλες συναρτήσεις 16
Απλοί υπολογισμοί- Δημιουργία πινάκων (1/4) 17
Απλοί υπολογισμοί- Δημιουργία πινάκων (2/4) 18
Απλοί υπολογισμοί- Δημιουργία πινάκων (3/4) 19
Απλοί υπολογισμοί- Δημιουργία πινάκων (4/4) 20
Συναρτήσεις μητρώων 21
Συναρτήσεις μητρώων- Παραδείγματα 22
Επίλυση γραμμικού συστήματος 23
Επίλυση πολυβάθμιας εξίσωσης 24
Βασικοί υπολογισμοί Υπολογίστε τα παρακάτω: 25
Ενσωματωμένες συναρτήσεις cos, sin, tan, acos, asin, atan, abs, sqrt, exp, log, log10, mod, Ceil, floor, fix, round. Δοκιμάστε τις συναρτήσεις και υπολογίστε τα παρακάτω: - ημίτονο 30 μοιρών, - λογάριθμο του e, - τετραγωνική ρίζα του 65536, - εφαπτομένη 45 μοιρών. 26
Διανύσματα (vectors) (1/2) row vectors v1=[1 2 3 4 5 6 7 8] v2=[1 2 3, 4 sqrt(25), 8-2 abs(-7) 3^2-1] v1-v2 v1+2*v2 v3=[v1 v2] v1(3) v1(3)=4 colon notation 1:10 0:1/10:1 v=0:-1:-10 27
Διανύσματα (vectors) (2/2) Εξαγωγή στοιχείων από διανύσματα: v=[1:4 5:1:10]. size(v). size(v,2). v(1:2:size(v,2)). Column vectors: c=[1;3;5]. c2=2*c. Transposing: c', c'. 28
clc clear diary test1 x=2 y=2 save test1 whos clear whos load test1 delete test1 Διατήρηση κατάστασης 29
Απλές γραφικές παραστάσεις (1/6) N=10;h=1/N;x=0:h:1; y=sin(3*pi*x); plot(x,y); N=100;h=1/N;x=0:h:1; y=sin(3*pi*x); plot(x,y); x=linspace(0,pi,100); y=sin(pi*x); plot(x,y); 30
Απλές γραφικές παραστάσεις (2/6) x=linspace(0,pi,100); y=cos(pi*x*2);plot(x,y); xlabel('x axis'); ylabel('y axis'); grid 31
Απλές γραφικές παραστάσεις (3/6) Στυλ γραμμών και χρώματα: plot(x,y'rx'); 32
Απλές γραφικές παραστάσεις (4/6) Δημιουργήστε το παρακάτω γράφημα: 33
Απλές γραφικές παραστάσεις (5/6) 34
Απλές γραφικές παραστάσεις (6/6) x=linspace(-10,10,1000); y=x.^2; plot(x,y,'g-'); grid; title('y=x^2'); xlabel('x'); ylabel('y'); 35
Παραδείγματα: Multi plots (1/2) x=linspace(-2*pi,2*pi,1000); plot(x,cos(x*pi/2),... 'g-',x,sin(x*pi/3),'r-'); legend('y1','y2'); x=linspace(-100,100,1000); plot(x,x.^2,'g-',x,x.^3/7,'r-'); legend('x^2','x^3/7'); 36
Multi plots (2/2) 37
Hold (1/2) x=linspace(0,100,100); plot(x,x.^2/2,'r'),hold on; plot(x,x.^2,'g'),hold off; clf; 38
Hold (2/2) x=linspace(0,100,100); plot(x,x.^2/2,'r'),hold on; plot(x,x.^2,'g'),hold off; clf; 39
Subplot (1/2) x=0:0.1:20; subplot(221); plot(x,x.^2); xlabel('x'); ylabel('x^2'); subplot(222); plot(x,x.^2/2); xlabel('x'); ylabel('x^2'); subplot(223); plot(x,cos(x*pi)); xlabel('x'); ylabel('x^2'); subplot(224); plot(x,sin(x*pi/2)); xlabel('x'); ylabel('x^2'); 40
Subplot (2/2) 41
Έλεγχος αξόνων x=0:0.1:20; plot(x,x*2); axis([-4 4-1 50]); help axis; 42
Άσκηση 1 η 1. Υπολογίστε τις τιμές της συνάρτησης: y=xsinπx για x=0,0.25,...,1. 2. Δημιουργήστε γραφήματα για τις συναρτήσεις που παρατίθενται στο πλάι για 0<=x<=10. 43
Τέλος Ενότητας 44