Upload
others
View
14
Download
0
Embed Size (px)
Citation preview
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)Αριθµητικά δεδοµένα → Εξελιγµένα γραφικά
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