Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές Εισαγωγή στον Επιστημονικό Προγραμματισμό Μάθημα 1ο Διδάσκοντες: Λεωνίδας Αλεξόπουλος Νίκος Φατσής Καβαλόπουλος Επ. Καθηγητής ΕΜΠ Επιστημονικός Συνεργάτης e-mail: leo@mail.ntua.gr e-mail: nikoskava@gmail.com url: http://users.ntua/leo Θεόδωρος Σακελλαρόπουλος Διδακτορικός Φοιτητής e-mail: teo@mail.ntua.gr Περίληψη Μαθήματος • Εισαγωγή – Τι είναι MATLAB? • Στοιχεία MATLAB (μεταβλητές, τελεστές, συναρτήσεις κλπ) • Γλώσσα Προγραμματισμού • Scripts - Ασκήσεις Εισαγωγή – Τι είναι MATLAB? • Είναι ένα πρόγραμμα που σχεδιάστηκε για να εκτελεί αριθμητικούς υπολογισμούς (numerical computing). Πλέον έχει δυνατότητες και για συμβολικούς (symbolic computing). • Αρχικός στόχος ήταν η επίλυση προβλημάτων γραμμικής άλγεβρας με χρήση πινάκων (MATrix LABoratory). • Επίσης είναι γλώσσα προγραμματισμού 4ης γενιάς (υψηλού επιπέδου – πιο κοντά στον άνθρωπο, ανεξάρτητη της μηχανής) Δυνατότητες – MATLAB Toolboxes - Mathworks 4 Biomechanics CFD Cell Simulation (systems biology) Image Pr. Gait Analysis Robotics GUI 5 Γλώσσα υψηλού επιπέδου – Ενσωματωμένες Συναρτήσεις Επίλυση μη-γραμμικής εξίσωσης Σε C fsolve(f) Σε MATLAB sort(A) Ταξινόμηση πίνακα Το Περιβάλλον MATLAB Γραμμή Εισαγωγής Εντολών (Interpreter) Περιεχόμενα Τρέχοντος Φακέλου Τρέχουσες Μεταβλητές (στη μνήμη) Περιεχόμενο Τρέχοντος Αρχείου Ιστορικό Εντολών Μεταβλητές • Κάθε μεταβλητή χαρακτηρίζεται από το όνομα, τον τύπο και το περιεχόμενο της. • Τα ονόματα τους: • μπορεί να έχουν το πολύ 63 χαρακτήρες • Οι δυνατοί χαρακτήρες είναι γράμματα [Α-Ζ a-z] αριθμοί [0-9] και η κάτω παύλα [ _ ]. • Πρέπει να ξεκινούν με γράμμα • Πεζά και κεφαλαία διαφέρουν (case sensitive) • Δεσμευμένα ονόματα είναι οι ενσωματωμένες συναρτήσεις (πχ fsolve, sort) καθώς και συγκεκριμένα ονόματα (επόμενη διαφάνεια). Δεσμευμένα ονόματα μεταβλητών ans default όνομα για αποτελέσματα pi i/j π Φανταστική μονάδα eps Ακρίβεια κινητής υποδιαστολής realmin Μικρότερος πραγματικός αριθμός realmax Μεγαλύτερος πραγματικός αριθμός inf Άπειρο ( ∞ ) NaN Not a Number (πχ 0/0) Τύποι Δεδομένων ‘teo’ 42 W M Double Char 5 W_1 2 3 W_2 W_3 Αριθμητικές Μεταβλητές • Όλες οι μεταβλητές της MATLAB είναι πίνακες. • Οι αριθμοί είναι πίνακες 1x1: πχ Α = 1 • Τα διανύσματα (στήλης ή σειράς) είναι πίνακες με μία μημοναδιαία διάσταση (πχ 1 x 3) • Με κόμμα ή κενό αλλάζει η στήλη πχ row = [11, 12, 13] ή row = [11 12 13] • Με ερωτηματικό αλλάζει η σειρά πχ col = [11; 21; 31] • Τα στοιχεία του πίνακα προσδιορίζονται από τη θέση τους • Α(2,3) = το στοιχείο που βρίσκεται στη 2η γραμμή και 3η στήλη του πίνακα Α. Κινητής Υποδιαστολής Ακέραιες Μεταβλητές Παραδείγματα: >> int16 (25) >> int16 (25.499) >> int16 (25.5) >> int16 (‘Hello’) >> x = unit32(20) * 2.1; class(x) Έλεγχος Τύπου Μεταβλητών Αριθμητικοί Τελεστές Πράξη Καταχώρηση Πρόσθεση Σύμβολο = + Παράσταση Α = Β (το Β στο Α) Α+Β Αφαίρεση Πολλαπλασιασμός Διαίρεση (δεξιά) * ή .* / ή ./ Α–Β Α * Β ή Α .* Β Α / Β ή Α ./ Β Δύναμη ^ ή .^ Α ^ Β ή Α .^ Β Η σειρά των πράξεων είναι η συνήθης και η ανάγνωση γίνεται από αριστερά. Επειδή όλες οι μεταβλητές στην MATLAB είναι πίνακες, πολλαπλασιασμοί, διαιρέσεις και δυνάμεις αναφέρονται σε πράξεις πινάκων. Με το πρόθεμα της τελείας οι πράξεις εκτελούνται μεταξύ των αντίστοιχων θέσεων του πίνακα (στοιχείο προς στοιχείο). Βασικές Αριθμητικές Συναρτήσεις Βασικές Συναρτήσεις Πινάκων Δημιουργία Πινάκων 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) Τάξη του Α Συγκριτικοί Τελεστές Τελεστής Σύμβολο Παράσταση Ίσο Μεγαλύτερο Μεγαλύτερο ίσο Μικρότερο == > >= < Α == Β Α>Β Α >= Β Α<Β Μικρότερο ίσο Διάφορο <= ~= Α <= Β Α ~= Β Λογικές Συναρτήσεις Συνάρτηση true (false) and not or xor all / any (is true) find (true) Σύμβολο Παράσταση 1 (0) & ή && ~ | ή || X = 1 ή X = true Α & Β (ή a && b) ~A Α | Β (ή a || b) xor(A,B) all(A) / any(A) find(A) Η σειρά των πράξεων είναι not, and και or. Η ανάγνωση γίνεται από αριστερά προς τα δεξιά. Τα && και || είναι για εξοικονόμηση χρόνου όταν υπολογίζουμε λογικές παραστάσεις που καταλήγουν σε true ή false. Σειρά Πράξεων 1. Παρενθέσεις () 2. Αναστροφή (’), Δυνάμεις (^) 3. not (~) 4. Πολλαπλασιασμός (*), Διαίρεση (/) 5. Πρόσθεση (+), Αφαίρεση (-) 6. (:) 7. Συγκριτικοί Τελεστές (<, <=, >, >=, ==, ~=) 8. and (&) 9. or (|) 10. γρήγορο and (&&) 11. γρήγορο or (||) Μεταξύ τελεστών ίσης ισχύς, πρώτα εκτελείται αυτός που είναι πιο αριστερά. Indexing A= 1 2 3 1 4 7 1 2 5 8 2 3 6 9 3 Υπάρχουν 2 τρόποι indexing: 1. Με δείκτες πχ Α(3, 3) 2. Με γραμμικό indexing πχ Α(9) Με χρήση του τελεστή (:) m:n m:k:n Α(k, m:n) Α(k, :) ή A(:, k) A(m:n) A(:) [m, m+1, …, n] [m, m+k, m+2k, …, n] [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 ] Χαρακτήρες (αλφαριθμητικές) • Χρησιμοποιούμε ‘ ‘ για να ξεχωρίζουμε τους χαρακτήρες από τις μεταβλητές • Παραδείγματα: >> 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 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 Εισαγωγή Δεδομένων • Xειροκίνητα: • Import με GUI • Με συναρτήσεις Τύπος Συνάρτηση Text (csv, txt, etc) csvread, dlmread, textscan, readtable Spreadsheet (xls, etc) xlsread, readtable Images (jpg, png, etc) imread Video/Audio Generic VideoReader/audioread importdata Αποθήκευση Δεδομένων • Χειροκίνητα: save(‘myfile’, ‘Var1’, ‘Var2’) • Με GUI • Με συναρτήσεις Τύπος Text (csv, txt, etc) Συνάρτηση csvwrite, dlmwrite, writetable Spreadsheet (xls, etc) xlswrite, writetable Images (jpg, png, etc) imwrite Video/Audio VideoWriter/audiowrite Προγραμματισμός - Αλγόριθμοι • Αλγόριθμος = η ακριβής περιγραφή των βημάτων που απαιτούνται για αν επιτευχθεί μια εργασία 13 x 12 26 + 130 156 13 x 12 1 5 6 Δομημένος Προγραμματισμός if, elseif, else: if expression statements elseif expression statements else statements end for for index = values statements end while while expression statements end M-files: Scripts • Είναι η πιο απλή μορφή προγράμματος. • Δεν έχουν εισόδους και εξόδους • Χρήσιμα για αυτοματοποίηση εκτέλεσης εντολών MATLAB • Δημιουργία (πρέπει να τελειώνουν σε .m για να τα αναγνωρίζει η MATLAB): Mouse Command Line >> edit filename Αλγόριθμος Fibonacci x = phi N = for [1 1]; = [0 1]; 6; n = 3:N; x(n) = x(n-1) + x(n-2); phi(n) = x(n)/x(n-1); end phi(N) Εβδομαδιαία Άσκηση Προαιρετική Κανόνες 1. Όλες οι ασκήσεις είναι ΠΡΟΑΙΡΕΤΙΚΕΣ 2. Με σωστές απαντήσεις σε όλες τις ασκήσεις i. ii. παίρνεται +1 βαθμό ΜΟΝΟ στην χειμερινή εξεταστική και ΜΟΝΟ αν έχετε περάσει το μάθημα 3. Η παράδοση των ασκήσεων δεν βοηθάει να περάσετε το μάθημα. i. ii. Μόνο να εξοικειωθείτε με την MATLAB και να πάρετε λίγο καλύτερο βαθμό. Κανόνες (2) 4. Οι ασκήσεις στέλνονται ηλεκτρονικά στη διεύθυνση. ntuabiolab@gmail.com 5. Οι απαντήσεις γράφονται σαν PLAIN TEXT και ΟΧΙ σαν συνημμένο 6. Ο τίτλος του mail πρέπει να είναι ΑΥΣΤΗΡΑ με latinikous χαρακτήρες και format: HLYPOL-A01-G1-EPONYMO-ONO-02106052 • • • • • • HLYPOL = τίτλος μαθήματος Α01 = ο αριθμός της άσκησης (πχ Α02, Α03…) G1 = το Group σας (A-Λ = G1, Μ-Ω = G2) EPONYMO = Το επώνυμο σας (πλήρες και κεφαλαία) ΟΝΟ = Τα 3 πρώτα γράμματα του ονόματος σας (κεφαλαία) 02106052 = ο Αριθμός Μητρώου σας (αν δεν έχετε πάρει ακόμα βάλτε 8 μηδενικά) Για αυτή τη βδομάδα • Αν xn οι αριθμοί της ακολουθίας Fibonacci και • φn = xn/xn-1 τότε • Για ακρίβειες 0.1, 0.01, … ,10-5 • Να γραφεί αλγόριθμος MATLAB που να υπολογίζει το n για το οποίο 2 συνεχόμενοι λόγοι (φn και φn-1) έχουν συγκλίνει εντός της προκαθορισμένης ακρίβειας ε (για όλα τις ακρίβειες που δόθηκαν). Δηλαδή abs(φn– φn-1) < ε • Η τελική απάντηση είναι [6 8 11 13 16]. Δηλαδή ακρίβεια 0.1 πετυχαίνει στην 6η θέση (φ6-φ5), ακρίβεια 0.01 πετυχαίνει στην 8η θέση (φ8-φ7) κοκ • DEADLINE: Πέμπτη 27/11 23:59 ΑΥΣΤΗΡΑ Big Project Τι είναι το Big Project? • Είναι ένα ΔΥΣΚΟΛΟ θέμα (εκτός της ύλης του μαθήματος) • Δίνει +8 βαθμούς σε όλη την ομάδα • +4 για τη σωστή επίλυση • +4 για το γραφικό περιβάλλον (GUI) • Προφορική Εξέταση στο θέμα • Παρουσίαση σε PowerPoint στη τάξη στο τελευταίο μάθημα (10 λεπτά) • Δεν χρειάζεται να είναι σε MATLAB (αρκεί να είναι σωστή η λύση) Big Project 2014-15 Παρακολούθηση και μέτρηση ταχύτητας και όγκου ρευστών σε microfluidic BioMEMS Επιστημονικοί Υπεύθυνοι: • Νίκος Φατσής Καβαλόπουλος nikoskava@gmail.com • Γιώργος Κανακάρης gkanak84@gmail.com • Θοδωρής Σακελλαρόπουλος teo.sakel@gmail.com BioMEMS Biological-Micro-Electro-Mechanical-Structures Miniature machines with implementation in several biochemical or biological application Πρόβλημα • Δυσκολία μέτρησης της ταχύτητας των ρευστών • Δυσκολία μέτρησης του συνολικό τους όγκου Λύση • Μέτρηση ταχύτητας και όγκου μέσω οπτικής παρακολούθησης της κίνησης των διαφορών υγρών μέσα στα BioMEMS Προδιαγραφές • Δημιουργία προγράμματος το οποίο θα κάνει τα εξής • Υπολογισμού συνολικού όγκου υγρού που βρίσκετε στο chip (οπτικά) • Υπολογισμού της ταχύτητας κίνησης των υγρών μέσα στο chip (οπτικά) • Δημιουργία γραφικού περιβάλλοντος που να δέχεται εντολές από τον χρήστη (π.χ. φόρτωσε το βίντεο, δείξε την περιοχή παρακολούθησης) και να δείχνει τις τιμές των μεγεθών που μετριόνται.
© Copyright 2024 Paperzz