Τιείναι Matlab ; Τυπικέςχρήσεις της...

22
1 Εισαγωγή στη Matlab Επιστημονικός Υπολογισμός Γ Έτος Σπουδών Κυριάκος Πετράκος ([email protected]) Πανεπιστήμιο Πατρών Τμήμα Μηχανικών Η/Υ και Πληροφορικής Εργαστήριο Συστημάτων Υψηλών Επιδόσεων Τομέας Επιστημονικού Υπολογισμού Ιστοσελίδα μαθήματος: http://scgroup.hpclab.ceid.upatras.gr/class/sc.html http://scgroup.hpclab.ceid.upatras.gr/class/sc.html Στόχοι φροντιστηρίου Εξοικείωση με τη φιλοσοφία του Matlab Εκμάθηση βασικών εντολών για αρχή Ανασκόπηση κεντρικών αρχών Γραμμικής Άλγεβρας Ανασκόπηση κεντρικών αρχών Αριθμητικής Ανάλυσης Εξοικείωση με τα γραφικά του Matlab Ενθουσιασμός από εσάς Τι είναι η Matlab ; Ολοκληρωμένο Περιβάλλον (PSE) Περιβάλλον ανάπτυξης ∆ιερμηνευόμενη γλώσσα Υψηλή επίδοση Ευρύτητα εφαρμογών Ευκολία διατύπωσης Cross platform (Windows, Unix, Mac) Τυπικές χρήσεις της Matlab Εξελιγμένος «υπολογιστής τσέπης» Αποδοτική υλοποίηση αλγορίθμων Επίλυση ∆Ε Προσομοίωση φαινομένων Αριθμητική ανάλυση, γραμμική άλγεβρα Βελτιστοποίηση Ανάπτυξη λογισμικού (GUI) Αριθμητικά δεδομένα Εξελιγμένα γραφικά

Transcript of Τιείναι Matlab ; Τυπικέςχρήσεις της...

Page 1: Τιείναι Matlab ; Τυπικέςχρήσεις της Matlabscgroup.hpclab.ceid.upatras.gr/class/scmatlab.pdf · 3 Μαθήµατακαι ...Matlab Γραµµικήάλγεβρα

1

Εισαγωγή στη MatlabΕπιστηµονικός Υπολογισµός – Γ Έτος ΣπουδώνΚυριάκος Πετράκος ([email protected])

Πανεπιστήµιο ΠατρώνΤµήµα Μηχανικών Η/Υ και ΠληροφορικήςΕργαστήριο Συστηµάτων Υψηλών ΕπιδόσεωνΤοµέας Επιστηµονικού Υπολογισµού

Ιστοσελίδα µαθήµατος:http://scgroup.hpclab.ceid.upatras.gr/class/sc.htmlhttp://scgroup.hpclab.ceid.upatras.gr/class/sc.html

Στόχοι φροντιστηρίου

Εξοικείωση µε τη φιλοσοφία του Matlab Εκµάθηση βασικών εντολών για αρχήΑνασκόπηση κεντρικών αρχών Γραµµικής ΆλγεβραςΑνασκόπηση κεντρικών αρχών Αριθµητικής ΑνάλυσηςΕξοικείωση µε τα γραφικά του Matlab Ενθουσιασµός από εσάς

Τι είναι η Matlab ;

Ολοκληρωµένο Περιβάλλον (PSE)Περιβάλλον ανάπτυξης ∆ιερµηνευόµενη γλώσσαΥψηλή επίδοσηΕυρύτητα εφαρµογώνΕυκολία διατύπωσηςCross platform (Windows, Unix, Mac)

Τυπικές χρήσεις της MatlabΕξελιγµένος «υπολογιστής τσέπης»Αποδοτική υλοποίηση αλγορίθµωνΕπίλυση ∆ΕΠροσοµοίωση φαινοµένωνΑριθµητική ανάλυση, γραµµική άλγεβραΒελτιστοποίησηΑνάπτυξη λογισµικού (GUI)Αριθµητικά δεδοµένα → Εξελιγµένα γραφικά

Page 2: Τιείναι Matlab ; Τυπικέςχρήσεις της Matlabscgroup.hpclab.ceid.upatras.gr/class/scmatlab.pdf · 3 Μαθήµατακαι ...Matlab Γραµµικήάλγεβρα

2

Τυπικές χρήσεις της Matlab (Συνέχεια...)

Εµπορικές εφαρµογές

Περιβάλλον της Matlab

Launch Pad: Εργαλεία και εφαρµογέςWorkspace: ΜεταβλητέςCommand historyCurrent directoryEditor (>> edit )

Περιβάλλον της Matlab (Συνέχεια...) Λίγη ιστορία

1970’s : Ο Cleve Moler γράφει την πρώτη έκδοση σε FortranΑρχικά, εκπαιδευτική χρήσηΈγινε εµπορική το 1984, MathworksΣήµερα, γραµµένη σε CΚατάλληλη για όλες τις πλατφόρµες (Win, Unix,

Mac)

Page 3: Τιείναι Matlab ; Τυπικέςχρήσεις της Matlabscgroup.hpclab.ceid.upatras.gr/class/scmatlab.pdf · 3 Μαθήµατακαι ...Matlab Γραµµικήάλγεβρα

3

Μαθήµατα και ...MatlabΓραµµική άλγεβρα (ΗΥ110)Αριθµητική ανάλυση (ΗΥ240)Θεωρία σηµάτων και συστηµάτων (ΗΥ282)Επεξεργασία σηµάτων και θεωρία πληροφοριών (ΗΥ381)Επιστηµονικός υπολογισµός Ι (ΗΥ343)Επιστηµονικός υπολογισµός ΙΙ (ΗΥ443)Αριθµητική επίλυση ∆Ε (ΗΥ545)Υπολογιστικές µέθοδοι στην οικονοµία (ΗΥ547)Ψηφιακές τηλεπικοινωνίες (ΗΥ384)Στοχαστικά σήµατα και εφαρµογές (ΗΥ481)Υπολογιστική νοηµοσύνη Ι (ΗΥ421)Υπολογιστική νοηµοσύνη ΙΙ (ΗΥ521)Επεξεργασία και ανάλυση εικόνας (ΗΥ482)Προχωρηµένα θέµατα τηλεπικοινωνιών (ΗΥ484)Περιβάλλοντα επίλυσης προβληµάτων (ΗΥ558)Και αλλού...

Τι χρειάζεται για να µάθω Matlab?

ΌρεξηΒασική εξοικείωση µε προγραµµατισµόΕξοικείωση µε γραµµική άλγεβραlookfor <something>

help <function_name>

Η Matlab στο Υπολογιστικό Κέντρο

CEIDCEID

Στοιχεία της Matlab

Βασική δοµή της Matlab είναι το µητρώοΕν γένει µιγαδικά στοιχεία

Matlab: Matrix LaboratoryΟικογένεια toolboxes Toolbox: Εξειδικευµένες συναρτήσεις

Page 4: Τιείναι Matlab ; Τυπικέςχρήσεις της Matlabscgroup.hpclab.ceid.upatras.gr/class/scmatlab.pdf · 3 Μαθήµατακαι ...Matlab Γραµµικήάλγεβρα

4

Εναλλακτικές δυνατότητες;

Octave (GNU)MapleMathematica

Πώς δουλεύει η Matlab?

Βασική λειτουργία: Χειρισµός µητρώων (πινάκων, µητρείων, µητρών, matrices)Μητρώο: Ορθογώνια διάταξη αριθµών οργανωµένων σε γραµµές και στήλες

Πώς δουλεύει η Matlab? (Συνέχεια...)

Τα πάντα στη Matlab είναι µητρώα!

∆ιανύσµατα: Μητρώα (1 x n) ή (n x 1)Βαθµωτοί αριθµοί : Μητρώα (1 x 1)

Εισαγωγή και έξοδος από τη Matlab

Έναρξη του περιβάλλοντος (double click για Windows)

Εµφάνιση της προτροπής >>Έξοδος: >> quitΈξοδος: >> exitΗ έξοδος είναι καταστροφική!

Page 5: Τιείναι Matlab ; Τυπικέςχρήσεις της Matlabscgroup.hpclab.ceid.upatras.gr/class/scmatlab.pdf · 3 Μαθήµατακαι ...Matlab Γραµµικήάλγεβρα

5

Matlab: Κύριες Λειτουργίες

∆ηµιουργία διανυσµάτων και µητρείων

>> E = eye(4)

E =

1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1

Matlab: Κύριες Λειτουργίες (Συνέχεια...)

∆ηµιουργία διανυσµάτων και µητρείων

>> u = E(:, 1)

u =

1 0 0 0

Matlab: Κύριες Λειτουργίες (Συνέχεια...)

Αλλαγή διανυσµάτων και µητρείων

>> E(3,3) = 10

E =

1 0 0 0 0 1 0 0 0 0 10 0 0 0 0 1

Matlab: Κύριες Λειτουργίες (Συνέχεια...)

Εκτέλεση λειτουργιών επί διανυσµάτων και µητρείων

>> E*u

ans =

1 0 0 0

Page 6: Τιείναι Matlab ; Τυπικέςχρήσεις της Matlabscgroup.hpclab.ceid.upatras.gr/class/scmatlab.pdf · 3 Μαθήµατακαι ...Matlab Γραµµικήάλγεβρα

6

Σύνταξη (Απλές παραστάσεις) 1/2

Παραδείγµατα

Ανάθεση στη µεταβλητή aa = 1.4142a = sqrt(2)

Το τελικό αποτέλεσµα αποθηκεύεται στην default µεταβλητή ans αν δεν το αναθέσουµε αλλού

ans = 5ans = 2ans = 7208ans = 0.2173ans = 32

2 + 37-534*2121234/57862^5

ΣχόλιαΈξοδοςΕίσοδος

Υπάρχουνπολλές ενσωµατωµένες συναρτήσεις

c = 1.2246e-016c = sin(pi)

Τα κόµµατα µπορούν να διαχωρίζουν διαφορετικές εντολές στην ίδια γραµµή

b = 1.4142ans = 3.1416ans = 2.0000 + 3.0000i

b = a, pi,2 + 3i

Σύνταξη (Απλές παραστάσεις) 2/2

Σύνταξη (∆ιανύσµατα) 1/4

∆ιάνυσµα : ∆ιατεταγµένο σύνολο σηµείων

Σηµείο του χώρου

x

y

z

u

Σύνταξη (∆ιανύσµατα) 2/4

∆ιάνυσµα µε 3 συνιστώσες, Μητρώο τύπου 3 x 1

u = 1 23

u = [1;2;3]

∆ιάνυσµα µε 3 συνιστώσες, Μητρώο τύπου 1 x 3u = 1 2 3

u = [1 2 3]

ΣχόλιαΈξοδοςΕίσοδος

Page 7: Τιείναι Matlab ; Τυπικέςχρήσεις της Matlabscgroup.hpclab.ceid.upatras.gr/class/scmatlab.pdf · 3 Μαθήµατακαι ...Matlab Γραµµικήάλγεβρα

7

∆ιαφορετικήαρχικοποίηση – Ίδια διανύσµατα

d = 1 2 3 4 5 6 7 e = 1 2 3 4 5 6 7 f = 1 2 3 4 5 6 7

d = [1 2 3 4 5 6 7]e = [1:7]f = 1:7

Χρήσεις του τελεστή :καιεύρεση µη µηδενικών στοιχείων

g = 0 2 4 6 8 10ans = 3ans = 2 3 4 5 6 7ans = 1 2 3 4 5 6 7ans = 1 2 3 4 5 6 7

g = 0:2:10f(3)f(2:7)f(:)find(f)

Σύνταξη (∆ιανύσµατα) 3/4

Προσοχή!Ο τελεστής «:» είναι ένα από τα πιο σηµαντικά χαρακτηριστικά!

Πολλαπλασιασµός διανυσµάτων και πολλαπλασιασµός διανυσµάτων στοιχείο προς στοιχείο (Χρήσιµο!)

ans = 14ans = 1 4 9ans = 2 6 8

h * h'h .* hh + h

Το ελληνικό ερωτηµατικό αποτρέπει την εµφάνιση του υπολογιζόµενου αποτελέσµατος.Η απόστροφος οδηγεί στο ανάστροφο διάνυσµα (µητρώο).

(nothing)ans = 1

23

h = [1 2 3];h'

Σύνταξη (∆ιανύσµατα) 4/4

Σχόλια‘ΈξοδοςΕίσοδος

Εισαγωγή µητρώου (Ένα ελληνικό ερωτηµατικό διαχωρίζει τις διαφορετικές γραµµές!).

g = 1 2 34 5 67 8 9

g = [ 1 2 3; 4 5 6; 7 8 9]

Ακριβώς το ίδιο, χωρίς χρήση ελληνικού ερωτηµατικού (semicolon)

g = 1 2 34 5 67 8 9

g = [ 1 2 34 5 67 8 9]

Πρόσβαση σε στοιχεία µητρώου.Προσοχή: Επιλογή στηλών και γραµµών!

ans = 6ans = 7 8 9g = 1 2 3

4 5 47 8 9

g(2,3)g(3,:)g(2,3) = 4

Σύνταξη (Μητρώα) 1/3

Ύψωση µητρώου σε δύναµη και ύψωση στοιχείων µητρώου.

ans = 30 36 4266 81 96

102 126 150

ans = 1 4 9 16 25 3649 64 81

g^2

g .^ 2

ΣχόλιαΈξοδοςΕίσοδος

Σύνταξη (Μητρώα) 2/3

Page 8: Τιείναι Matlab ; Τυπικέςχρήσεις της Matlabscgroup.hpclab.ceid.upatras.gr/class/scmatlab.pdf · 3 Μαθήµατακαι ...Matlab Γραµµικήάλγεβρα

8

Πρόσβαση σε στοιχεία µητρώου.Προσοχή: Επιλογή στηλών και γραµµών!

Α = rand(5,5);Α([1:3],[2:4])Α([1:3],:)

Ανάστροφο µητρώου

c = 1 4 72 5 83 6 9

c = g’

Σύνταξη (Μητρώα) 3/3

IEEE – Αριθµητική διπλής ακρίβειας (8 bytes)

Round-off: eps = 2-52

A.K.Y στη Matlab

s e f1 2 12 13 64

Έλεγχος εξόδου (όχι υπολογισµών!)

format

Matlab: Αριθµητική διπλής ακρίβειαςΑπόσταση γραµµών : format compact/loose15 ψηφία: format long5 ψηφία: format shortΚλάσµατα: format rat

help format

ΜεταβλητέςΚατάσταση session>> who>> whos aΧρήσιµα!>> clear>> clear a>> clc

Case sensitive!>> A = ones(4);>> a = eye(4);

Α ≠ a !!!

Page 9: Τιείναι Matlab ; Τυπικέςχρήσεις της Matlabscgroup.hpclab.ceid.upatras.gr/class/scmatlab.pdf · 3 Μαθήµατακαι ...Matlab Γραµµικήάλγεβρα

9

Μετακίνηση κέρσορα: «Ιστορία» εντολών!Μετακίνηση (σειραϊκά) προς την παλαιότερη εντολή

>>

Μετακίνηση (σειραϊκά) προς την πιο πρόσφατη εντολή

>>

Μητρώα στη Matlab

Built-in συναρτήσειςΑπευθείας προγραµµατισµόςΑπό .mat αρχεία

Μητρώα στη Matlab 1/9

Built-in δοµές µητρώων

Hilbert Μητρώο (cond >> 1)ans = 1.0000 0.5000 0.3333

0.5000 0.3333 0.25000.3333 0.2500 0.2000

hilb(3)

Ι (ταυτοτικό µητρώο)ans = 1 00 1

eye(2)

Μηδενικά

Μονάδες

ans = 0 00 0

ans = 1 11 1

zeros(2)

ones(2)

Τιµές οµοιόµορφα κατανεµηµένες

ans = 0.9501 0.6068 0.2311 0.4860

ans = 0.8913 0.4565 0.82140.7621 0.0185 0.4447

rand(2)

rand(2,3)

ΣχόλιαΈξοδοςΕίσοδος

Μητρώα στη Matlab 2/9

Built-in δοµές µητρώων

∆οµή Vandermondeans = 1 1 1

4 2 19 3 1

vander([1 2 3])

∆οµή Toeplitzans = 1 2 3

2 1 23 2 1

toeplitz([1 2 3])

Αραιή δοµή µητρώουΑ=All zero sparse: 3-by-3

Α = sparse(n,n)

Τιµές κανονικάΚατανεµηµένες

ans = -0.4326 0.1253 -1.1465-1.6656 0.2877 1.1908

randn(2,3)

ΣχόλιαΈξοδοςΕίσοδος

Page 10: Τιείναι Matlab ; Τυπικέςχρήσεις της Matlabscgroup.hpclab.ceid.upatras.gr/class/scmatlab.pdf · 3 Μαθήµατακαι ...Matlab Γραµµικήάλγεβρα

10

Μητρώα στη Matlab 3/9

Built-in δοµές µητρώων

Το ίδιο µέγεθος µε το µητρώο Α

D =

1 1 1 1 1

1 1 1 1 1

1 1 1 1 1

1 1 1 1 1

1 1 1 1 1

ones(size(D))

∆ιαγώνιο µητρώο από διάνυσµα

D =

1 0 0 0 0

0 2 0 0 0

0 0 3 0 0

0 0 0 4 0

0 0 0 0 5

u = 1:5;D = diag(u)

ΣχόλιαΈξοδοςΕίσοδος

Μητρώα στη Matlab 4/9

Ερωτήσεις : Ποιο θα είναι το αποτέλεσµα;

Α = ones(5,5);u = rand(5,1);

A(2,:) = u’;

A(:,2) = u;

A([2 3], :) = A([3 2], :);

Μητρώα στη Matlab 6/9 Μητρώα στη Matlab 7/9

>> A = magic(4);

Page 11: Τιείναι Matlab ; Τυπικέςχρήσεις της Matlabscgroup.hpclab.ceid.upatras.gr/class/scmatlab.pdf · 3 Μαθήµατακαι ...Matlab Γραµµικήάλγεβρα

11

Μητρώα στη Matlab 8/9

>> A(2,3)

>> A(3,:)

>> A(:,3)

>> A(2:4,1:3)

Μητρώα στη Matlab 9/9

>> A([2 4],:)

>> A(:)

Χειρισµός µητρώων

ΠαράθεσηΑναδροµική κατασκευή µητρώωνΈστω:

a = [1 2; 3 4]

a = 1 2

3 4 ans = 1 2 0 03 4 0 00 0 1 30 0 2 4

[a, zeros(2); zeros(2), a']

ans = 1 23 41 23 41 23 4

[a; a; a]

ans = 1 2 1 2 1 23 4 3 4 3 4

[a, a, a]

ΈξοδοςΕίσοδος

Χειρισµός µητρώων (Συνέχεια...)

Page 12: Τιείναι Matlab ; Τυπικέςχρήσεις της Matlabscgroup.hpclab.ceid.upatras.gr/class/scmatlab.pdf · 3 Μαθήµατακαι ...Matlab Γραµµικήάλγεβρα

12

∆ιαγραφή της πρώτης στήλης

a(:, 1) = []

Μητρώο µε:> 3 · 2 γραµµές> 3 · 2 στήλες

repmat(a,3,3)

ΈξοδοςΕίσοδος

Χειρισµός µητρώων (Συνέχεια...) Χειρισµός µητρώων (Συνέχεια...)

Απευθείας χειρισµόςΜε for loops

Ελληνικό ερωτηµατικό!

for i=1:10,for j=1:10,

t(i,j) = i/j;end

end

Πράξεις µεταξύ των µητρώων

Α+ΑΑ-ΑΑ*Α (διάσταση!)Α/Β (Χ*Β = Α)Α\b (Ax = b).<operand> : Στοιχείο προς στοιχείο

Βαθµωτοί

Όλα είναι µητρώα (ακόµα και αν είναι 1 x 1)!help elfun (elementary functions)help elmat (elementary matrix functions)

Page 13: Τιείναι Matlab ; Τυπικέςχρήσεις της Matlabscgroup.hpclab.ceid.upatras.gr/class/scmatlab.pdf · 3 Μαθήµατακαι ...Matlab Γραµµικήάλγεβρα

13

Βαθµωτοί

Παραδείγµατα

Στοιχείο προς στοιχείοans = 1 4

9 16a .^ b

∆ύναµη!ans = 7 10

15 22a ^ b

Στοιχείο προς στοιχέιοans = 2 4

6 8a * b

Στοιχείο προς στοιχείοans = 3 4

5 6a + b

Βαθµωτόςb=2b=2

ΣχόλιαΈξοδοςΕίσοδος

∆ιανύσµατα 1/7size(A,1) = 1 ή size(A,2) = 1length(A) % Πλήθος συνιστωσών

Μέγιστο διανύσµατος, Ελάχιστο διανύσµατος,Ταξινόµηση διανύσµατος

max(u), min(u), sort(u)

Εσωτερικό γινόµενο (dot)ans = 10dot(v,u)

Εσωτερικό γινόµενοans = 10v * u'

∆ιαστάσεις!Errorv * u

∆ιανύσµαταv = 1 2 3u = 3 2 1

v = [1 2 3]u = [3 2 1]

ΣχόλιαΈξοδοςΕίσοδος

∆ιανύσµατα 2/7

Απόσταση διανυσµάτων (σηµείων στο Rn)Έννοια αντίστοιχη της απόλυτης τιµής στο RΝόρµα διανύσµατος

∆ιανύσµατα 3/7

Έστω διανύσµατα

norm(u-v,1)=

u

v

Απόσταση Manhattan!

Page 14: Τιείναι Matlab ; Τυπικέςχρήσεις της Matlabscgroup.hpclab.ceid.upatras.gr/class/scmatlab.pdf · 3 Μαθήµατακαι ...Matlab Γραµµικήάλγεβρα

14

∆ιανύσµατα 4/7

norm(u-v,2)= norm(u-v)=

u

v

Ευκλείδια απόσταση!

∆ιανύσµατα 5/7

norm(u-v,inf)=

u

v

∆ιανύσµατα 6/7Πρόσθεση διανυσµάτων

vvuu

v v ++uu

x

y

∆ιανύσµατα 7/7Εσωτερικό γινόµενο (DOT) διανυσµάτων

Συνάρτηση Matlab:

>> dot(u,v)

>> u’ * v

vv

uuαα

Καθετότητα:

Page 15: Τιείναι Matlab ; Τυπικέςχρήσεις της Matlabscgroup.hpclab.ceid.upatras.gr/class/scmatlab.pdf · 3 Μαθήµατακαι ...Matlab Γραµµικήάλγεβρα

15

Συναρτήσεις µητρώων

Πολλές άλλες ενσωµατωµένες συναρτήσεις

rank(k), det(k), eig(k), etc

Αντίστροφοans = 0.0294 -0.0662 0.0956

-0.4412 -0.5074 1.06620.4706 0.6912 -1.2206

inv(k)

k = 16 2 35 11 109 7 6

k = [16 2 3;5 11 10;9 7 6]

ΣχόλιαΈξοδοςΕίσοδος

Ενσωµατωµένεςhelp matfun

Γραµµικά συστήµατα

Αx = b x = inv(A) * b % Sloooow!!!

x = A \ b % Gaussian Elimination

Αποθήκευση µεταβλητών

Έξοδος καταστροφική για µεταβλητές!

Αποθήκευση µεταβλητών/διανυσµάτων/µητρώων για επόµενη χρήση:

>> save <filename>

Ανάκτηση µεταβλητών/διανυσµάτων/µητρώων:

>> load <filename>

Προγραµµατισµός στη Matlab

M-files (κώδικας)Functions (return value-s, local workspace)Scripts

Κλήση από command lineText files που αποτελούνται από απλές εντολές που έχουµε δει ως τώραΚλήση χωρίς το .m!type <function_name>

Page 16: Τιείναι Matlab ; Τυπικέςχρήσεις της Matlabscgroup.hpclab.ceid.upatras.gr/class/scmatlab.pdf · 3 Μαθήµατακαι ...Matlab Γραµµικήάλγεβρα

16

Πλοήγηση στη Matlab

dir / ls

pwd

cd <directory>

which <function>

path

pathtool

∆οµή συνάρτησης

function [o1,o2,o3,…] = name(i1, i2, i3, …)

% Comments

.

.

Code

.

.

Κοινές προγραµµατιστικές δοµές

Έλεγχος ροής (if, switch)∆οµές επανάληψης (for, while)Εντολές διακοπής επανάληψης (break, continue)

∆οµή if…elseif…else…end

If A > B

‘greater’elseif A < B

‘less’

elseif A = = B

‘equal’else error(‘Unexpected situation’)

end

Page 17: Τιείναι Matlab ; Τυπικέςχρήσεις της Matlabscgroup.hpclab.ceid.upatras.gr/class/scmatlab.pdf · 3 Μαθήµατακαι ...Matlab Γραµµικήάλγεβρα

17

Λογικοί και σχεσιακοί τελεστές

Σχεσιακοί τελεστές (µεταξύ arrays)== (ισότητα) ~= (ανισότητα)< (µικρότερο) <= (µικρότερο ή ίσο)> (µεγαλύτερο) >= (µεγαλύτερο ή ίσο)Λογικοί τελεστές& (and)| (or)~ (not)

∆οµή for…end

% Hilbert matrix!!for i = 1:m

for j = 1:n

H(i,j) = 1/(i+j-1)

endend

Ζητήµατα χρόνουΠροσοχή στον τρόπο δόµησης του κώδικα

tic; X=-250:0.1:250;for ii=1:length(x)

if x(ii)>=0,s(ii)=sqrt(x(ii));

elses(ii)=0;

end;end;toc

tic; X=-250:0.1:250;for ii=1:length(x)

if x(ii)>=0,s(ii)=sqrt(x(ii));

elses(ii)=0;

end;end;toc

ticx=-250:0.1:250;s=sqrt(x); s(x<0)=0;toc;

ticx=-250:0.1:250;s=sqrt(x); s(x<0)=0;toc;

slow.mslow.m

fast.mfast.m

Ζητήµατα χρόνου (Συνέχεια...)Τι γίνεται αν ο υπολογισµός είναι πολύ γρήγορος;

tic; eig(rand(10))toc

tic; eig(rand(10))toc tic;

for i=1:10000eig(rand(10))

endToc/10000

tic; for i=1:10000

eig(rand(10))endToc/10000

fast.mfast.m

accurate.maccurate.m

Page 18: Τιείναι Matlab ; Τυπικέςχρήσεις της Matlabscgroup.hpclab.ceid.upatras.gr/class/scmatlab.pdf · 3 Μαθήµατακαι ...Matlab Γραµµικήάλγεβρα

18

∆ιδάγµατα

Χρησιµοποιήστε διανυσµατικές εντολές της Matlab αντί για βρόχους!Κάντε pre-allocate την µνήµη αντί για δυναµικό allocation!

Είσοδος χρήστη

% User enters a numerical valuen = input(‘Matrix Dimension: ’)

Profiling

profile on

function

profile report

profile off

profile plot

Παράδειγµα Συνάρτησης

function [C] = multiply(A, B)

% This function multiples the matrices A and B

% and stores the result in C

[m1, n1] = size(A);

[m2, n2] = size(B);

if (n1 == m2)

C = A*B;

else

disp('Multiplication not possible');

end

Page 19: Τιείναι Matlab ; Τυπικέςχρήσεις της Matlabscgroup.hpclab.ceid.upatras.gr/class/scmatlab.pdf · 3 Μαθήµατακαι ...Matlab Γραµµικήάλγεβρα

19

Συναρτήσεις πολλαπλασιασµού 1/3

function [C] = multiply(A, B)

C = zeros(size(A));

n = length(A);

% We assume that A,B both have n rows and columns

c = 0;

for i = 1:1:n

for j = 1:1:n

for k = 1:1:n

c = c + A(i,k)*B(k,j);

end

C(i,j) = c;

c = 0;

end

end

Κατά γραµµές!

Βασική Πράξη:Εσωτερικό γινόµενο

Συναρτήσεις πολλαπλασιασµού 2/3

function [C] = multiply(A, B)

C = zeros(size(A));

n = length(A);

% We assume that A,B both have n rows and columns

c = 0;

for j = 1:1:n

for i = 1:1:n

for k = 1:1:n

c = c + A(i,k)*B(k,j);

end

C(i,j) = c;

c = 0;

end

end

Κατά στήλες!

Βασική Πράξη:Εσωτερικό γινόµενο

Συναρτήσεις πολλαπλασιασµού 3/3

function [C] = multiply(A, B)

C = zeros(size(A));

n = length(A);

% We assume that A,B both have n rows and columns

for k = 1:1:n

for i = 1:1:n

for j = 1:1:n

C(i,j) = C(i,j) + A(i,k)*B(k,j);

end

end

end

Βασική Πράξη:Εξωτερικό γινόµενο

Πολλαπλασιασµός: Ερώτηση

Fortran, Matlab αποθήκευση µητρείων κατά στήλεςΠοιον από τους παραπάνω τρόπους θα διαλέγατε;

C, C++ αποθήκευση µητρείων κατά γραµµέςΠοιον από τους παραπάνω τρόπους θα διαλέγατε;

Page 20: Τιείναι Matlab ; Τυπικέςχρήσεις της Matlabscgroup.hpclab.ceid.upatras.gr/class/scmatlab.pdf · 3 Μαθήµατακαι ...Matlab Γραµµικήάλγεβρα

20

Γραφικά στη Matlab

2-D γραφικά (plot, pie)3-D γραφικά (mesh)

Plot

>> plot(x,y)

δέχεται ως ορίσµατα 2 διανύσµατα ίδιου µεγέθουςσχεδιάζει τα σηµεία (xi, yi) στο καρτεσιανό επίπεδο

>> plot(x,y, ‘ro:’)

>> title(‘Plot title’)

>> xlabel(‘X label’)

>> ylabel(‘y label’)

>> hold on (hold off)

>> grid on (grid off)

>> legend(‘Curve No. 1’)

Plot

x = 0 : .01 : 2*pi;

y = sin(x);

plot(x,y)

y2 = sin(x-.25)

y3 = sin(x-.5)

plot(x,y,x,y2,x,y3)

% at the same time!

Plot - Pie

hold on

Subplot(m,n,1…mn); plot(…)

plot(x,y,’rx’)

Pie(1:7)

Page 21: Τιείναι Matlab ; Τυπικέςχρήσεις της Matlabscgroup.hpclab.ceid.upatras.gr/class/scmatlab.pdf · 3 Μαθήµατακαι ...Matlab Γραµµικήάλγεβρα

21

Mesh

A = zeros(32);

A(14:16,14:16) = ones(3);

F=abs(fft2(A));

mesh(F)

Rotate3d on

Movie!

logo;

fr=40;dtheta=360/fr;

for frame = 1:fr,

camorbit(dtheta,0)

M(frame) = getframe(gcf);end

movie(M);

Επεξεργασία εικόνων

Χ = imread(filename)image(X)

Συµπεράσµατα

Σύντοµη πολύπλευρη εισαγωγήMatlab Εφαρµοσµένη Γραµµική ΆλγεβραΓραµµική Άλγεβρα Ισχυρή γεωµετρική ερµηνείαMatlab Εξελιγµένη ενσωµάτωση γραφικώνΠειραµατιστείτε, αξίζει!

Page 22: Τιείναι Matlab ; Τυπικέςχρήσεις της Matlabscgroup.hpclab.ceid.upatras.gr/class/scmatlab.pdf · 3 Μαθήµατακαι ...Matlab Γραµµικήάλγεβρα

22

ΑναφορέςGoooogle!!

http://www.google.comΕύκολη εισαγωγή στη Matlab από τον Mark Gockenbach

http://www.math.mtu.edu/~msgocken/intro/intro.htmlTutorial από τη Mathworks

http://www.mathworks.com/access/helpdesk/help/techdoc/learn_matlab/learn_matlab.shtml

Tutorial µε πολλές παραποµπέςhttp://www.glue.umd.edu/~nsw/ench250/matlab.htm

Από το πανεπιστήµιο της Albertahttp://www.ualberta.ca/CNS/RESEARCH/Courses/2003/MathPackages/Matlab/Matlab.Vis.Jon.index.html

Γραφικά στη Matlabhttp://www.ucalgary.ca/~appinst/doc/matlabhelp/techdoc/umg/chintro.html

Η «απόλυτη» αναφοράMastering MATLAB 6, D.Hanselman και B.R. Littlefield, Prentice Hall

Matlab guideMATLAB Guide, D.J. Higham και N.J. Higham, SIAM