null

Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές
Εισαγωγή στον Επιστημονικό Προγραμματισμό
Μάθημα 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 (οπτικά)
• Δημιουργία γραφικού περιβάλλοντος που να δέχεται
εντολές από τον χρήστη (π.χ. φόρτωσε το βίντεο, δείξε
την περιοχή παρακολούθησης) και να δείχνει τις τιμές
των μεγεθών που μετριόνται.