Συνοπτικός οδηγός MATLAB & OCTAVE (έως και συναρτήσεις) Ιωάννης Καλατζής 2018d
ΕΓΚΑΤΑΣΤΑΣΗ ΓΕΝΙΚΑ 2
MATLAB Το MATLAB είναι ένα περιβάλλον για επιστημονικό και τεχνικό προγραμματισμό, ιδανικό για ανάπτυξη μοντέλων, με εγγενείς μεθόδους χειρισμού πινάκων και ισχυρές δυνατότητες γραφικών. Το MATLAB είναι ένα εμπορικό πρόγραμμα που υποστηρίζεται από την εταιρεία Mathworks. 3
OCTAVE Το Octave είναι ένα περιβάλλον επιστημονικού προγραμματισμού γενικά συμβατό με το MATLAB. Το Octave είναι ελεύθερο για διανομή, εγκατάσταση και χρήση από όλους (https://www.gnu.org/software/octave/). 4
Εγκατάσταση του OCTAVE ΛΗΨΗ ΤΟΥ OCTAVE Μεταβείτε στην παρακάτω διεύθυνση: https://www.gnu.org/software/octave/download.html Επιλέξτε το λειτουργικό σας σύστημα και την κατάλληλη έκδοση του Octave (π.χ. για την έκδοση 4.4.1 σε Windows 64bit, που είναι η πιο συνηθισμένη περίπτωση αν έχετε υπολογιστή τελευταίων ετών, επιλέξτε octave-4.4.1-w64-installer.exe). 5 ΕΓΚΑΤΑΣΤΑΣΗ ΤΟΥ OCTAVE Το αρχείο που κατέβηκε (π.χ. octave-4.4.1-w64-installer.exe) είναι το αρχείο εγκατάστασης του Octave. Βρείτε το αρχείο octave-4.4.1-w64-installer.exe στο φάκελο Downloads (ή όπου αλλού αποθηκεύονται τα αρχεία που κατεβάζει ο browser του υπολογιστή σας). Με διπλό-κλικ στο octave-4.4.1-w64-installer.exe εγκαθιστάτε το Octave. Μετά το τέλος της εγκατάστασης, το αρχείο αυτό δεν χρειάζεται πλέον και μπορείτε να το σβήσετε ή να το αρχειοθετήσετε.
Έναρξη του OCTAVE ΕΝΑΡΞΗ ΤΟΥ OCTAVE Το Octave εκκινεί με διπλό-κλικ στο εικονίδιο GNU Octave (GUI) που έχει δημιουργηθεί στην Επιφάνεια Εργασίας σας. Σημείωση: Το παρόμοιο εικονίδιο GNU Octave (CLI) εκκινεί το Octave σε περιβάλλον γραμμής εντολών (όχι σε γραφικό περιβάλλον). Η έξοδος γίνεται με quit ή exit και Enter. 6 ΑΛΛΑΓΗ ΤΟΥ CURRENT DIRECTORY Το Current Directory είναι ένας φάκελος στον υπολογιστή σας (οποιοσδήποτε) στον οποίον πρέπει να βρίσκονται τα προγράμματά σας για να μπορούν να εκτελεστούν. Για να ορίσετε κατά την εκκίνηση του Octave το Current Directory που επιθυμείτε, κάνετε δεξί-κλικ στο εικονίδιο GUI Octave (GUI) και επιλέξτε Properties. Στη συνέχεια στο πεδίο "Start in:" γράψτε τη διεύθυνση ενός (υπάρχοντος) φακέλου που επιθυμείτε (π.χ. C:\Octave ή D:\Documents\Octave κλπ).
Το περιβάλλον του OCTAVE Στο κεντρικό παράθυρο του OCTAVE μπορούν να εμφανίζονται τα εξής τμήματα ( υποπαράθυρα ), που μπορείτε να επιλέξετε την εμφάνισή τους ή όχι από την επιλογή του μενού Window: Command Window Command History Workspace Editor File Browser Documentation 7
Το περιβάλλον του OCTAVE 8
Τα υποπαράθυρα του OCTAVE Ο ρόλος των υποπαραθύρων του Octave (προηγούμενη διαφάνεια) είναι ο εξής: Command Window: Δίνετε εντολές που εκτελούνται άμεσα (με Enter). Επίσης εμφανίζονται αποτελέσματα, αν έχει δοθεί εντολή εμφάνισης. Οι βασικές εντολές εμφάνισης είναι η disp, η fprintf, ή η παράλειψη του ελληνικού ερωτηματικού (;) από το τέλος των εντολών ανάθεσης (=). Command History: Κατάλογος των εντολών που έχουν δοθεί στο Command Window. Workspace: Κατάλογος των μεταβλητών που έχουν οριστεί, με τις τιμές τους και τις ιδιότητές τους. Editor: Περιβάλλον κατάλληλο για συγγραφή κώδικα προγραμμάτων Octave (παρόμοιο π.χ. με το Σημειωματάριο/Notepad των Windows, αλλά με επιπλέον λειτουργίες υποβοηθητικές για το Octave). 9 File Browser: Κατάλογος των αρχείων του Current Directory. Documentation: Παροχή βοήθειας για το Octave και τις εντολές του (παρόμοια βοήθεια μπορεί να αναζητηθεί από το Command Window με >> help εντολή).
Ο τρόπος εργασίας των MATLAB/Octave Εντολές: Τα MATLAB/Octave λειτουργούν με εντολές, που: - είτε δίνονται απ ευθείας στο Command Window, - είτε γράφονται σε κώδικα προγράμματος με τη βοήθεια του Editor. Μεταβλητές: Οι μεταβλητές είναι θέσεις στη μνήμη του υπολογιστή, οι οποίες περιέχουν τιμές που μεταβάλλονται με τη βοήθεια εντολών. Οι μεταβλητές αποθηκεύονται σε μια περιοχή της μνήμης των MATLAB/Octave που ονομάζεται Workspace. 10 Current Folder/Directory: Για να μπορεί να εκτελεστεί ένα πρόγραμμα, πρέπει να βρίσκεται σ ένα φάκελο που λέγεται Current Folder/Directory (εμφανίζεται ακριβώς κάτω από το μενού με την ταινία εργαλείων). Π.χ. D:\Documents\Octave
ΕΝΤΟΛΕΣ, ΜΕΤΑΒΛΗΤΕΣ ΚΑΙ ΠΡΑΞΕΙΣ 11
Command Window Εκτελούνται εντολές (με Enter) Εμφανίζονται αποτελέσματα (αν υπάρχουν εντολές εμφάνισης) >> x = (5+2)^2 x = 49 >> y = sin(pi/2) y = 1 12
Command Window: Βασικές εντολές whos Εμφάνιση μεταβλητών και ιδιοτήτων τους clear Διαγραφή όλων των μεταβλητών από τη μνήμη clear x y Διαγραφή μόνο των μεταβλητών x και y clc Καθαρισμός του Command Window >> x=5; y=0; myname='john'; >> whos Name Size Bytes Class x 1x1 8 double y 1x1 8 double myname 1x4 4 char 13 >> clear x myname; whos Name Size Bytes Class y 1x1 8 double
Editor: Συγγραφή προγράμματος 14 Ένα πρόγραμμα σε MATLAB/Octave γράφεται σε έναν Editor (Διορθωτή), όπως το Notepad (Σημειωματάριο) ή στον ενσωματωμένο Editor των MATLAB/Octave. Αποθήκευση: - Ή από το μενού File > Save ή Save As του Editor, - Ή με το συνδυασμό πλήκτρων Control + S, - Ή με το κατάλληλο εικονίδιο κάτω από το μενού: ή Εκτέλεση (μετά την αποθήκευση): - Ή από το μενού Run ή Save File and Run του Editor, - Ή με το πλήκτρο F5 του πληκτρολογίου, - Ή με το κατάλληλο εικονίδιο κάτω από το μενού: ή - Ή από το Command Window, με το όνομά του και Enter, - Ή από άλλο πρόγραμμα με κλήση του ονόματός του.
Μεταβλητές Οι μεταβλητές είναι θέσεις στη μνήμη με όνομα, τύπο και τιμή. Ονόματα μεταβλητών: Ξεκινούν από λατινικό γράμμα (a z, A Z) και μπορεί να περιέχουν γράμματα, αριθμούς ή και κάτω παύλα (underscore, «_»). Όχι ελληνικά, όχι spaces, όχι παύλες («-»). Τύποι μεταβλητών (είδος και χώρος μνήμης). Συνήθεις τύποι: uint8: Ακέραιοι 8 bit, από 0 έως 255 double: Κινητής υποδιαστολής 64 bit, με ακρίβεια 15 δεκ. ψηφία, και με όρια: -1.80 10 308-2.23 10-308 και 2.23 10-308 1.80 10 308 character: ASCII 1 byte (στο MATLAB Unicode 2 bytes). logical: 1 byte, τιμές: true (1) ή false (0) 15 Τιμές μεταβλητών: Οι μεταβλητές μπορεί να περιέχουν είτε απλές τιμές, είτε πίνακες με πολλές τιμές. Στις μεταβλητές ανατίθενται τιμές με τον τελεστή ανάθεσης (=). >> x = 3.141 >> initial = 'A' >> y = [1 2 3 4 5 6] >> name = 'John'
Εντολές Σε μία γραμμή μπορούν να γραφτούν πολλές εντολές. Οι εντολές χωρίζονται μεταξύ τους με «;» ή «,» ή «Enter» (αλλαγή γραμμής). >> x = 5+2; y = x^2; Αν στο τέλος μιας εντολής ανάθεσης (=) δεν υπάρχει «;», γίνεται εμφάνιση του αποτελέσματος στο Command Window. >> x = 5+2; y = x^2 y = 49 Αν σε μια εντολή που εξάγει αποτέλεσμα δεν οριστεί μεταβλητή, αυτό αποθηκεύεται αυτόματα σε μια μεταβλητή με όνομα «ans». >> sin(pi/2) ans = 1 Εμφάνιση προηγούμενου αποτελέσματος γίνεται είτε (α) με παράθεση του ονόματος της μεταβλητής χωρίς «;», είτε (β) με την εντολή disp. 16 >> x >> disp(x) x = 7 7
Αριθμητικές πράξεις Οι τελεστές (=σύμβολα εντολών) των αριθμητικών πράξεων, κατά σειρά προτεραιότητάς, είναι: ^ Ύψωση σε δύναμη * / Πολλαπλασιασμός και διαίρεση + - Πρόσθεση και αφαίρεση Σε ίδια προτεραιότητα, οι πράξεις γίνονται από αριστερά προς τα δεξιά. >> x = 16^1/2 x = 8 >> y = 12/3*4 y = 16 17 Η προτεραιότητα αλλάζει με χρήση παρενθέσεων. Προσοχή: Χρησιμοποιείστε ΜΟΝΟ ΠΑΡΕΝΘΕΣΕΙΣ, ακόμα και πολλαπλών επιπέδων, π.χ. x=(-b+(b^2-4*a*c)^0.5)/(2*a). Οι αγκύλες [ ] και τα άγκιστρα { } έχουν διαφορετικές χρήσεις.
Συγκριτικές πράξεις Οι τελεστές των συγκριτικών πράξεων είναι: > < >= <= == ~= Το αποτέλεσμα μιας συγκριτικής πράξης είναι μια λογική μεταβλητή, με τιμή true (1) ή false (0): >> x=5; y=3; >> x>y ans = 1 >> x==y ans = 0 >> x~=y ans = 1 Το αποτέλεσμα αυτό μπορεί ακόμα και να αποθηκευτεί σε μια μεταβλητή, η οποία τότε γίνεται αυτόματα λογικού τύπου: 18 >> r = x>y;
Λογικές πράξεις Οι τελεστές των λογικών πράξεων είναι: & (and) (or) ~ (not) Οι λογικές πράξεις επιδρούν σε λογικές μεταβλητές, με αποτέλεσμα λογικές μεταβλητές ( true (1) ή false (0) ): >> x=5; y=3; z=7; >> x>y & y>z ans = 0 >> x>y y>z ans = 1 19 >> ~(x>y) ans = 0 Οι συγκριτικές και λογικές πράξεις συνήθως χρησιμεύουν σε συνθήκες βρόχων διακλάδωσης: >> if x~=0, y=1/x; else y=0; end
ΠΙΝΑΚΕΣ 20
Πίνακες: Ορισμός (1) Οι πίνακες ορίζονται με τα στοιχεία τους σε αγκύλες: (τα στοιχεία μιας γραμμής χωρίζονται με «space» ή «,» ενώ οι γραμμές χωρίζονται μεταξύ τους με «Enter» ή «;»): >> A = [-4 3 0 ; 7-1 5] A = -4 3 0 7-1 5 Τελεστής «'» = Αναστροφή (transpose) πίνακα: >> B = A' B = -4 7 3-1 0 5 >> C = [-4 ; 3 ; 0 ; 7 ; -1 ; 5]' C = -4 3 0 7-1 5 21
Πίνακες: Ορισμός (2) Για εύκολο ορισμό πινάκων με πολλά στοιχεία: Χρήση του συμβόλου «:» στις αγκύλες (σημαίνει «έως»): >> D = [1:4] % το βήμα είναι ίσο με 1, αν παραλειφθεί D = 1 2 3 4 >> E = [1:2:10] E = 1 3 5 7 9 Διασύνδεση πινάκων: >> F = [-1 D 5:7] >> G = [D E] F = -1 1 2 3 4 5 6 7 G = 1 2 3 4 1 3 5 7 9 22 Δημιουργία ειδικών πινάκων, π.χ.: >> H = zeros(2,3); % πίνακας 2 3 με μηδενικά >> I = ones(1,4); % πίνακας 1 4 με μονάδες >> J = eye(3); % μοναδιαίος πίνακας 3 3 0 0 0 0 0 0 1 1 1 1 1 0 0 0 1 0 0 0 1 >> K = rand(100,1); % πίνακας 100 1 uniform random (0,1) >> L = randn(1000,1); % πίνακας 1000 1 normal random μ=0, σ=1
Πίνακες: Δείκτες στοιχείων Εισαγωγή ή τροποποίηση μεμονωμένων στοιχείων, με δείκτες σε παρενθέσεις (1 ος δείκτης = γραμμή, 2 ος δείκτης = στήλη): >> M(1) = 4; >> M(2) = -1; >> M M = 4-1 >> N(1,1) = 3; >> N(2,1) = 6; >> disp(n) 3 6 Αυτόματη επιλογή πολλών στοιχείων από τις γραμμές ή στήλες με το σύμβολο «:» (σημαίνει «έως», ή «όλα» αν είναι μόνο του): >> P = A(1,2:3) % 1 η γραμμή, στήλες από 2 έως 3 P = 2 3 >> Q = A(:,2) % όλες οι γραμμές, 2 η στήλη Q = 2 5 23 >> R = C(2:5) % στοιχεία 2 έως 5 μονοδιάστατου πίνακα R = 3 0 7-1
Πίνακες: Μετατροπή σε μονοδιάστατο Ο τελεστής «:» μετατρέπει έναν πίνακα οσωνδήποτε διαστάσεων σε μονοδιάστατο. Η μετατροπή γίνεται κατά στήλες. >> S = A(:) S = 1 4 2 5 3 6 24 Πίνακες: Χρήση μοναδικού δείκτη Αν σε έναν πίνακα οποιασδήποτε διάστασης χρησιμοποιηθεί ένας μόνο δείκτης (αντί για όσους επιβάλλουν οι διαστάσεις), τότε χρησιμοποιείται το αντίστοιχο στοιχείο σαν ο πίνακας να ήταν μονοδιάστατος κατά στήλες (βλ. παραπάνω): >> x = A(2) x = 4
Συγκριτικές πράξεις σε πίνακα Οι συγκριτικές πράξεις σε πίνακα γίνονται στοιχείο-προςστοιχείο και έχουν ως αποτέλεσμα πίνακα με true (1) ή false (0) στις αντίστοιχες θέσεις των στοιχείων του πίνακα: >> A = [-4 3 0 ; 7-1 5] Α = -4 3 0 7-1 5 Εντολή find >> A>0 ans = 0 1 0 1 0 1 >> Α>0 & Α<=5 ans = 0 1 0 0 0 1 Σύνταξη: find(<συνθήκη με πίνακα>) Έξοδος: Οι δείκτες των στοιχείων του πίνακα (ως μονοδιάστατου, κατά στήλες), για τα οποία η συνθήκη είναι αληθής: 25 >> find(a>0) ans = 2 3 6 >> find(a>0 & Α<=5) ans = 3 6
Εύρεση στοιχείων πίνακα υπό συνθήκη Αν το αποτέλεσμα συγκριτικών πράξεων ή της εντολής find σε πίνακα δοθεί ως είσοδος σε πίνακα, επιστρέφονται τα αντίστοιχα στοιχεία του πίνακα (ως μονοδιάστατου κατά στήλες): >> A = [-4 3 0 7-1 5]; >> A>0 ans = 0 1 0 1 0 1 5 >> A1 = A(A>0) A1 = 7 3 5 26 >> find(a>0) ans = 2 3 6 >> A1 = A(find(A>0)) A1 = 7 3 5
Πλήθος στοιχείων διαστάσεων πίνακα length(πίνακας) = πλήθος στοιχείων της μεγαλύτερης διάστασης. Πρακτικά χρησιμοποιείται σε μονοδιάστατους, με αποτέλεσμα το πλήθος των στοιχείων τους. >> Τ = [-1 4 0]; >> length(t) ans = 3 27 >> length(find(t>=0)) ans = 2 size(πίνακας) = πλήθος στοιχείων κάθε διάστασης size(πίνακας,1) = πλήθος γραμμών size(πίνακας,2) = πλήθος στηλών >> A = [-4 3 0 7-1 5]; >> size(a) ans = 2 3 >> size(a,1) ans = 2 >> size(a,2) ans = 3
Πράξεις πινάκων Οι τελεστές + - * / ^ στους πίνακες εκτελούν πράξεις πινάκων, όπως αυτές ορίζονται στη γραμμική άλγεβρα: >> A = [1 2 3]; B = [4 5 6]; C = A*B' C = 32 (θυμίζουμε: ο τελεστής «'» δεξιά του B παραπάνω σημαίνει αναστροφή) >> D = [1 2 ; 3 4]; D^2, D^(-1) ans = 7 10 ans = -2.0 1.0 15 22 1.5-0.5 Οι τελεστές για πράξεις «στοιχείο-προς-στοιχείο» είναι τα συνήθη σύμβολα μαζί με μία τελεία (.):.+.-.*./.^ >> D = [1 2 ; 3 4]; D.^2, D.^(-1) ans = 1 4 ans = 1.0000 0.5000 9 16 0.3333 0.2500 28 >> A = [1 2 3]; B = [4 5 6]; C = A.*B C = 4 10 18
29 Συναρτήσεις πινάκων (1) det(πίνακας) = ορίζουσα τετράγωνου πίνακα: >> da = det(a) da = -17 inv(πίνακα) = αντίστροφος τετράγωνου πίνακα: >> Ai = inv(a) Ai = 0.058824 0.176471 0.411765 0.235294 Π.χ. Επίλυση γραμμικού συστήματος: Ax = B x = A 1 B Έστω το σύστημα: 4 x 1 + 3 x 2 = 7 7 x 1 x 2 = 11 Επίλυση με MATLAB/OCTAVE: >> A = [-4 3 ; 7-1]; B = [7 ; 11]; >> x = inv(a)*b ή x = A^(-1)*B x = 2.3529 5.4706 Προτεινόμενη επίλυση: Με τον τελεστή της αριστερής διαίρεσης (\): >> x = A \ B Ορίζουσα πίνακα: Π.χ. στον 2 2 πίνακα a b, η ορίζουσα είναι ο αριθμός ad bc. c d Αντίστροφος ενός πίνακα είναι αυτός που αν πολλαπλασιαστεί με τον πίνακα, δίνει τον μοναδιαίο: AA 1 = A 1 A = I
Συναρτήσεις πινάκων (2) Στις μαθηματικές συναρτήσεις (exp, sqrt, sin, ), αν η είσοδος είναι πίνακας, δημιουργείται πίνακας με τις τιμές της συνάρτησης όπως αυτή εφαρμόζεται σε κάθε στοιχείο ξεχωριστά: >> t = [0 pi/4 pi/2 3*pi/2 pi]; x = sin(t) x = 0.0000 0.70711 1.00000-1.00000 0.0000 Στις στατιστικές συναρτήσεις (max, min, sum, prod, mean, std κλπ), η συνάρτηση επιδρά σε κάθε στήλη του πίνακα ξεχωριστά, δημιουργώντας έναν πίνακα-γραμμή με τα αποτελέσματα (εκτός αν ο πίνακας είναι μονοδιάστατος, οπότε επιδρά κανονικά σε όλα τα στοιχεία του): >> S = [ [1:10]' [11:20]' [21:30]' ]; >> m = mean(s) m = 5.5000 15.5000 25.5000 30 >> s = std(s(:)) s = 8.8034
ΣΥΝΑΡΤΗΣΕΙΣ 31
Scrips και Functions Τα αρχεία προγραμμάτων στα MATLAB/Octave ονομάζονται m- files, καθώς έχουν επέκταση.m. Υπάρχουν δύο είδη m-files: Scripts (απλά προγράμματα) και functions (συναρτήσεις). Scripts: Οι μεταβλητές που δημιουργούν αποθηκεύονται στο βασικό χώρο μνήμης (basic stack, basic workspace), που είναι ίδιος με του Command Window. 32 Functions: Μπορούν να δεχθούν τιμές μεταβλητών ως είσοδο και να εξάγουν νέες τιμές ως έξοδο. Δημιουργούν το δικό τους ανεξάρτητο χώρο μνήμης (function stack), που είναι εντελώς απομονωμένο από του υπόλοιπου συστήματος, και «αντιλαμβάνονται» μόνο τις μεταβλητές που εισάγονται ως είσοδοι καθώς και αυτές που δημιουργούνται στο εσωτερικό τους.
Συναρτήσεις (functions) Οι συναρτήσεις ξεκινούν πάντα με τη λέξη function. Ορίζονται: Σε αυτόνομα αρχεία (function files): Αποθηκεύονται στο Current Folder/Directory ή σε ένα φάκελο του path. Τότε μπορούν να κληθούν από οπουδήποτε (από το Command Window, ή από ένα script, ή από μια άλλη συνάρτηση). Μετά το τέλος μιας συνάρτησης που ορίζεται σε function file: Λέγονται υποσυναρτήσεις ή τοπικές συναρτήσεις. Είναι υποβοηθητικές της κύριας συνάρτησης, ορίζονται μετά το τέλος της, και μπορούν να κληθούν μόνο από αυτήν καθώς και από τις άλλες υποσυναρτήσεις που τυχόν ορίζονται εκεί. 33 Μέσα σε script: Στο Octave μπορούν να κληθούν από οπουδήποτε αφού εκτελεστεί o ο ορισμός τους στο script, ενώ στο MATLAB ( 2016b) λειτουργούν ως τοπικές και μπορούν να κληθούν μόνο μέσα από το script. Πρέπει να τελειώνουν με end.
Δομή συνάρτησης function [y1,y2,...] = functionνame(x1,x2,...)... (κώδικας συνάρτησης)... Τα ορίσματα (μεταβλητές) εισόδου (x1, x2,...) και τα ορίσματα εξόδου [y1, y2,...] μπορεί να είναι ένα, κανένα ή περισσότερα. Στον κώδικα της συνάρτησης μπορούν να χρησιμοποιηθούν μόνο (α) τα ορίσματα εισόδου και (β) όσες μεταβλητές οριστούν μέσα στη συνάρτηση (τοπικές μεταβλητές). Παράδειγμα: function [x1,x2] = deyteroba8mia(a,b,c) D = b^2-4*a*c; % Η D είναι τοπική μεταβλητή x1 = (-b+d^0.5)/(2*a); x2 = (-b-d^0.5)/(2*a); 34
35 Δημιουργία και κλήση συνάρτησης 1) Δημιουργία συνάρτησης: α) Κατασκευή αρχείου στον Editor με τον παρακάτω κώδικα. β) Αποθήκευση στο Current Folder/Directory με όνομα add.m add.m function c = add(a,b) c = a + b; 2) Κλήση συνάρτησης: α) Π.χ. κλήση από το Command Window: Αποτέλεσμα: >> add(3,5) ans = 8 >> x = 4; y = add(x,2) y = 6 β) Π.χ. κλήση από πρόγραμμα στον Editor: Το παρακάτω απλό πρόγραμμα ζητάει 2 αριθμούς, βρίσκει το άθροισμά τους με κλήση της συνάρτησης add, και στη συνέχεια τυπώνει κατάλληλο μήνυμα: n1 = input('number 1?'); n2 = input('number 2?'); result = add(n1,n2); fprintf('%d + %d = d', a, b, result);
Υποσυναρτήσεις Στο εσωτερικό μιας συνάρτησης είναι δυνατόν να οριστούν άλλες συναρτήσεις, για υποβοηθητικούς σκοπούς (υποσυναρτήσεις). Στο παρακάτω παράδειγμα της συνάρτησης deyteroba8mia.m, η διακρίνουσα υπολογίζεται μέσω της υποσυνάρτησης diakrinoysa: deyteroba8mia.m function [x1,x2] = deyteroba8mia(a,b,c) D = diakrinoysa(a,b,c); x1 = (-b+d^0.5)/(2*a); x2 = (-b-d^0.5)/(2*a); 36 function D = diakrinoysa(a,b,c) D = b^2-4*a*c; Στο παραπάνω παράδειγμα, η συνάρτηση diakrinoysa είναι υποσυνάρτηση της κύριας συνάρτησης deyteroba8mia. Οι υποσυναρτήσεις ορίζονται μετά το τέλος της κύριας συνάρτησης και μπορούν να χρησιμοποιηθούν μόνο από αυτήν (καθώς και από τις υπόλοιπες υποσυναρτήσεις, αν υπάρχουν).
Άλλα είδη συναρτήσεων Εμφωλευμένες συναρτήσεις (nested functions): Όταν όλες οι συναρτήσεις σε ένα αρχείο συνάρτησης τελειώνουν με end, τότε δεν είναι υποχρεωτικό οι υποσυναρτήσεις να ορίζονται στο τέλος της κύριας συνάρτησης. Στην περίπτωση αυτή οι συναρτήσεις ονομάζονται εμφωλευμένες (nested). Εκτός του ότι μπορούν να οριστούν εντός του σώματος της κύριας συνάρτησης, μια άλλη διαφορά είναι ότι αναγνωρίζουν ως global τις μεταβλητές που ορίζονται πριν την κλήση τους. Δεν συνιστάται η χρήση τους. Ανώνυμες συναρτήσεις (anonymous functions): Συναρτήσεις που ορίζονται σε μια γραμμή κώδικα χωρίς κάποιο ιδιαίτερο όνομα, για λόγους συντομίας συνήθως. Π.χ. f = @(x) x.^2; f(4) 37 Ιδιωτικές συναρτήσεις (private functions) : Ουσιαστικά πρόκειται για βοηθητικές συναρτήσεις μιας κύριας συνάρτησης, οι οποίες βρίσκονται ως ξεχωριστά αρχεία σε φάκελο με όνομα private εντός του φακέλου όπου βρίσκεται η κύρια συνάρτηση.