Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές Εισαγωγή στον Επιστημονικό Προγραμματισμό Μάθημα 1 ο Διδάσκοντες: Λεωνίδας Αλεξόπουλος Επ. Καθηγητής ΕΜΠ e-mail: leo@mail.ntua.gr url: http://users.ntua/leo Θεόδωρος Σακελλαρόπουλος Διδακτορικός Φοιτητής e-mail: teo@mail.ntua.gr 1
Περίληψη Μαθήματος Εισαγωγή Τι είναι MATLAB? Το περιβάλλον Στοιχεία MATLAB Μεταβλητές Τελεστές & Συναρτήσεις Προγραμματισμός σε MATLAB Αποθήκευση και φόρτωση Δεδομένων 2
Εισαγωγή 3
Εισαγωγή Τι είναι MATLAB? Είναι γλώσσα προγραμματισμού 4 ης γενιάς. Δηλαδή, Δεν εξαρτάται από την αρχιτεκτονική του υπολογιστή Το συντακτικό είναι πιο κατανοητό από ανθρώπους Έχει ενσωματωμένο ένα σύνολο εφαρμογών για επεξεργασία κειμένου, πλοτάρισμα, ανάπτυξη γραφικού περιβάλλοντος κα. Εξειδικεύεται σε αριθμητικούς υπολογισμούς (numerical computing) και επίλυση προβλημάτων γραμμικής άλγεβρας με χρήση πινάκων (MATrix LABoratory) αλλά έχει και δυνατότητες και για συμβολικούς (symbolic computing). 4
Δυνατότητες MATLAB Toolboxes - Mathworks 5
Το Περιβάλλον MATLAB Τρέχον Φάκελος Γραμμή Εισαγωγής Εντολών (Interpreter) Περιεχόμενα Τρέχοντος Φακέλου Τρέχουσες Μεταβλητές (στη μνήμη) Περιεχόμενο Τρέχοντος Αρχείου Ιστορικό Εντολών 6
Μεταβλητές 7
Μεταβλητές Μεταβλητές είναι θέσεις στη μνήμη του υπολογιστή που μπορούν να αποθηκεύσουν δεδομένα και αναγνωρίζονται μέσο ενός συμβολικού ονόματος. Κάθε μεταβλητή χαρακτηρίζεται από το όνομα, τον τύπο και το περιεχόμενο/τιμή της. Τα ονόματα τους: μπορεί να έχουν το πολύ 63 χαρακτήρες Οι δυνατοί χαρακτήρες είναι γράμματα [Α-Ζ a-z] αριθμοί [0-9] και η κάτω παύλα [ _ ]. Πρέπει να ξεκινούν με γράμμα Πεζά και κεφαλαία διαφέρουν (case sensitive) Δεσμευμένα ονόματα είναι οι ενσωματωμένες συναρτήσεις (πχ fsolve, sort) καθώς και συγκεκριμένα ονόματα (επόμενη διαφάνεια). 8
Δεσμευμένα ονόματα μεταβλητών ans default όνομα για αποτελέσματα pi π i/j Φανταστική μονάδα eps Ακρίβεια κινητής υποδιαστολής realmin Μικρότερος πραγματικός αριθμός realmax Μεγαλύτερος πραγματικός αριθμός inf Άπειρο ( ) NaN Not a Number (πχ 0/0) 9
Τύποι Δεδομένων 10
Double: Κινητής Υποδιαστολής 11
Χαρακτήρες (αλφαριθμητικές) Χρησιμοποιούμε για να ξεχωρίζουμε τους χαρακτήρες από τις μεταβλητές Κάθε χαρακτήρας αντιστοιχεί σε κάποιο αριθμό με βάση κάποιο πρότυπο (συνήθως ASCII) Παραδείγματα: >> W = a >> W = [ H, e, l, l, o ]; >> W = Hello, W=[ Hello ] % idio >> int8( 0abc ) % String to ASCΙΙ >> char([97 98 99]) % ASCΙΙ to String 12
Λογικές Συναρτήσεις Συνάρτηση Σύμβολο Παράσταση true (false) 1 (0) X = 1 ή X = true and & ή && Α & Β (ή a && b) not ~ ~A or ή Α Β (ή a b) xor all / any (is true) find (true) xor(a,b) all(a) / any(a) find(a) Η σειρά των πράξεων είναι not, and και or. Η ανάγνωση γίνεται από αριστερά προς τα δεξιά. Τα && και είναι για εξοικονόμηση χρόνου όταν υπολογίζουμε λογικές παραστάσεις που καταλήγουν σε true ή false. 13
Έλεγχος Τύπου Μεταβλητών 14
Πίνακες Πολλά στοιχεία (ίδιου τύπου) μπορούν να αποθηκευτούν μαζί με τη μορφή πίνακα. Όλες οι μεταβλητές στη MATLAB είναι πίνακες. Τα στοιχεία οργανώνονται στις διαστάσεις του πίνακας που μπορεί να είναι 1 (διάνυσμα), 2 ή και παραπάνω Οι πίνακες μπορούν να κατασκευαστούν με τον τελεστή[]. Για παράδειγμα: >> A = [1] % ίδιο με Α = 1 % πίνακας σειρά με κόμμα ή κενό >> A = [2 3 5], Α = [2,3,5] >> Α = [2,3 5; 6 7,9] % αλλαγή στήλης με «;» >> A = [[1;3;4],[5;5;5]] % κατά στήλες Ή με ειδικές συναρτήσεις (βλ επόμενη διαφάνεια) 15
Βασικές Συναρτήσεις Πινάκων Δημιουργία Πινάκων eye(m,n) Μοναδιαίος πίνακας (m x n) zeros(m,n) Μηδενικός πίνακας (m x n) ones(m,n) Πίνακας (m x n) με 1 rand(m,n) Τυχαίος πίνακας (m x n) Συναρτήσεις Πινάκων Α Ανάστροφος του Α size(a) Διαστάσεις του Α det(a) Ορίζουσα του Α eig(a) Ιδιοτιμές του Α inv(a) Αντίστροφος του Α norm(a) Μέτρο του Α rank(a) Τάξη του Α 16
A = 1 2 3 1 4 7 1 2 5 8 2 3 6 9 3 Indexing Υπάρχουν 2 τρόποι indexing: 1. Με δείκτες πχ Α(2, 3) == 8 (2 η γραμμή, 3 η στήλη) 2. Με γραμμικό indexing πχ Α(8) (κατά στήλες) Με χρήση του τελεστή (:) m:n [m, m+1,, n] m:k:n [m, m+k, m+2k,, n] Α(k, m:n) Α(k, :) ή A(:, k) A(m:n) A(:) [A(k, m), A(k, m+1),, A(k, n)] [A(k, 1) A(k, 2) A(k, end-1) A(k, end)] [A(m) A(m+1) A(n)] [A(1); ; A(end)] (όλα τα στοιχεία σε διάνυσμα) Α(λογική παράσταση) πχ Α(k, A(k,:)>0) [ μόνο τα θετικά στοιχεία της σειράς k ] 17
Τελεστές & Συναρτήσεις 18
Αριθμητικοί Τελεστές >> help arith Πράξη Σύμβολο Παράσταση Καταχώρηση = Α = Β (το Β στο Α) Πρόσθεση + Α + Β Αφαίρεση - Α Β Πολλαπλασιασμός * ή.* Α * Β ή Α.* Β Διαίρεση (δεξιά) / ή./ Α / Β ή Α./ Β Δύναμη ^ ή.^ Α ^ Β ή Α.^ Β Η σειρά των πράξεων είναι η συνήθης και η ανάγνωση γίνεται από αριστερά. Επειδή όλες οι μεταβλητές στην MATLAB είναι πίνακες, πολλαπλασιασμοί, διαιρέσεις και δυνάμεις αναφέρονται σε πράξεις πινάκων. Με το πρόθεμα της τελείας οι πράξεις εκτελούνται μεταξύ των αντίστοιχων θέσεων του πίνακα (στοιχείο προς στοιχείο). 19
Συγκριτικοί Τελεστές Τελεστής Σύμβολο Παράσταση Ίσο == Α == Β Μεγαλύτερο > Α > Β Μεγαλύτερο ίσο >= Α >= Β Μικρότερο < Α < Β Μικρότερο ίσο <= Α <= Β Διάφορο ~= Α ~= Β 20
Σειρά Πράξεων >> help precedence 1. Παρενθέσεις () 2. Αναστροφή ( ), Δυνάμεις (^) 3. not (~) 4. Πολλαπλασιασμός (*), Διαίρεση (/) 5. Πρόσθεση (+), Αφαίρεση (-) 6. (:) 7. Συγκριτικοί Τελεστές (<, <=, >, >=, ==, ~=) 8. and (&) 9. or ( ) 10. γρήγορο and (&&) 11. γρήγορο or ( ) Μεταξύ τελεστών ίσης ισχύς, πρώτα εκτελείται αυτός που είναι πιο αριστερά. 21
Βασικές Αριθμητικές Συναρτήσεις 22
Προγράμματα & Έλεγχος Ροής 23
M-files: Scripts Είναι αρχεία κειμένου που περιέχουν εντολές MATLAB (η πιο απλή μορφή προγράμματος). Εκτελούνται με σειρά σαν να έγραφε ο χρήστης στη γραμμή εντολών. Δεν έχουν εισόδους και εξόδους. Χρήσιμα για αυτοματοποίηση. Το όνομα των αρχείων πρέπει να τελειώνει σε.m για να τα αναγνωρίζει η MATLAB. Πρέπει να αποθηκευτούν πριν εκτελεστούν! Δημιουργία: >> edit filename Εκτέλεση: >> filename 24
Δομημένος Προγραμματισμός if, elseif, else: if expression statements elseif expression statements else statements end for for index = values end statements while while expression statements end >> continue % προσπερνάει μια επανάληψη >> break % σταματάει τον βρόγχο 25
Αλγόριθμος Fibonacci x = [1 1]; phi = [0 1]; N = 6; for n = 3:N; x(n) = x(n-1) + x(n-2); phi(n) = x(n)/x(n-1); end phi(n) 26
Tips >> % Comment line, grafo sxolia >> a = 5 ; % Den emfanizei to apotelesma >> a = 5 + 4 % Synexizei stin epomeni grammi + 3 >> a = 5, b =4; c = a-b % polles entoles se 1 grammi >> A(:, 2) = [] % svinei tin 2h stili tou A >> clear % svinei oles tis metavlites >> clc % clear command doesn t delete variables CTRL + C % akyrwnei tin trexousa diergasia 27
Αποθήκευση & Φόρτωση Δεδομένων 28
Αποθήκευση Δεδομένων Από γραμμή εντολών: >> save( myfile, Var1, Var2 ) Με GUI Με συναρτήσεις Τύπος Text (csv, txt, etc) Spreadsheet (xls, etc) Images (jpg, png, etc) Συνάρτηση csvwrite, dlmwrite, writetable xlswrite, writetable imwrite Video/Audio VideoWriter/audiowrite 29
Εισαγωγή Δεδομένων Από γραμμή εντολών: >> load data.mat Import με GUI Με συναρτήσεις Τύπος Συνάρτηση Text (csv, txt, etc) csvread, dlmread, textscan, readtable Spreadsheet (xls, etc) xlsread, readtable Images (jpg, png, etc) imread Video/Audio VideoReader/audioread Generic importdata 30