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

Post on 01-Mar-2020

16 views 0 download

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

1

Εισαγωγή στη MatlabΕπιστηµονικός Υπολογισµός – Γ Έτος ΣπουδώνΚυριάκος Πετράκος (kpp@hpclab.ceid.upatras.gr)

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

Ιστοσελίδα µαθήµατος: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)Αριθµητικά δεδοµένα → Εξελιγµένα γραφικά

2

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

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

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

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

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

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

Mac)

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: Εξειδικευµένες συναρτήσεις

4

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

Octave (GNU)MapleMathematica

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

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

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

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

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

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

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

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

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

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]

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

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

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 !!!

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)

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

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);

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]

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

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

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)

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!

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αα

Καθετότητα:

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>

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

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

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

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++ αποθήκευση µητρείων κατά γραµµέςΠοιον από τους παραπάνω τρόπους θα διαλέγατε;

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)

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 Εξελιγµένη ενσωµάτωση γραφικώνΠειραµατιστείτε, αξίζει!

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