Η MATLAB είναι ένα εύχρηστο και αρκετά ευέλικτο υπολογιστικό περιβάλλον για υλοποίηση επιστημονικών εφαρμογών σε ένα ευρύ φάσμα πεδίων, όπως η Γραμμική Άλγεβρα, η Στατιστική και η Επεξεργασία Σήματος και Εικόνας.
Το περιβάλλον της MATLAB υποστηρίζει την εκτέλεση απλών μαθηματικών υπολογισμών αλλά και πιο σύνθετων λειτουργιών πάνω σε εξειδικευμένες περιοχές εφαρμογών καθώς περιέχει ένα σύνολο συναρτήσεων και εξωτερικών βιβλιοθηκών (Toolboxes) για εφαρμογές όπως η στατιστική ανάλυση δεδομένων κ.α.
Η Matlab είναι ήδη εγκατεστημένη στα SUN μηχανήματα του τμήματος (solaris 9.0). Για να ενεργοποιηθεί η MATLAB
η εντολή είναι η: /usr/local/bin/matlab
Μπορεί επίσης να εγκατασταθεί και να εκτελεστεί και σε περιβάλλον WINDOWS.
Με την ενεργοποίηση της MATLAB εμφανίζεται ένα διαλογικό παράθυρο εντολών (prompt) : >> στο οποίο ο χρήστης μπορεί να πληκτρολογεί εντολές της γλώσσας προγραμματισμού MATLAB. Το περιβάλλον εργασίας <<θυμάται>> το σύνολο των εντολών που έχουν δοθεί καθώς και το σύνολο των μεταβλητών που έχουν δημιουργηθεί (workspace).
Το σύνολο των μεταβλητών που έχουν δημιουργηθεί εμφανίζεται με την εντολή who
.
Με την εντολή clear all
μπορούν να σβηστούν όλες οι μεταβλητές απο το workspace της MATLAB
ενώ υπάρχει η δυνατότητα να καθοριστεί μία συγκεκριμένη μεταβλητή για σβήσιμο με την εντολή clear <όνομα μεταβλητής>
Η MATLAB παρέχει ένα πλήρες και εύχρηστο εγχειρίδιο για την λειτουργία κάθε εντολής το οποίο εμφανίζεται με την εντολή
help
, η οποία με όρισμα την εντολή για την οποία θέλουμε να αναζητήσουμε βοήθεια εμφανίζει ένα κείμενο με πληροφορίες
για την λειτουργία της εντολής. π.χ >>help who
Σε περίπτωση που δεν καθοριστεί συγκεκριμένη εντολή σαν όρισμα, η εντολή help θα εμφανίσει όλα τα θέματα βοήθειας.
Εκτός του παραθύρου εντολών, υπάρχει η δυνατότητα να αποθηκευθεί ένα σύνολο εντολών (scripts) σε ένα αρχείο και να εκτελούνται όποτε αυτό απαιτείται. Τα αρχεία αυτά ονομάζονται M-Files και έχουν την επέκταση '.m'.
Στη MATLAB οι πίνακες υποστηρίζονται από αντίστοιχες μεταβλητές. 'Ενας πίνακας γράφεται
μέσα σε αγκύλες "[]", τα στοιχεία μίας γραμμής χωρίζονται είτε με κενά είτε με "," ενώ κάθε
γραμμή με ";" ή "return".
Για παράδειγμα, για να εκχωρήσουμε τον πίνακα A:
1 2 3γράφουμε στο prompt της MATLAB:
4 5 6
7 8 9
>> A=[1,2,3;4,5,6;7,8,9];
Εαν υπάρχει ένα αρχείο στο οποίο είναι αποθηκευμένες οι τιμές που θέλουμε να εκχωρήσουμε
σε έναν πίνακα, η εντολή που χρησιμοποιείται για την <<φόρτωση>> των δεδομένων στον πίνακα X είναι η:
X = load('filename');
όπου filename
είναι το όνομα του αρχείου που περιέχει τα δεδομένα.
Εαν μετά το τέλος της εκχώρησης παραλειφθεί το ";" στο παράθυρο εντολών
της MATLAB θα εμφανιστούν όλα τα στοιχεία (κατά στήλες) που περιέχει ο πίνακας
ενώ εαν το ";" υπάρχει, δεν θα εμφανιστούν τα στοιχεία του πίνακα.
Η προσπέλαση ενός στοιχείου του πίνακα γίνεται δηλώνοντας μέσα σε παρένθεση τους
δείκτες του:
>> A(2,2)
ans = 5
Η αναφορά σε τμήματα στοιχείων γίνεται με την χρήση του συμβόλου :. 'Ετσι, δηλώνοντας A(i:k, j:h) μπορούμε να απομονώσουμε τα στοιχεία του πίνακα Α που ανήκουν στις γραμμές i μέχρι και k και στις στήλες j μέχρι και h.
Επίσης, είναι δυνατόν να επιλεγούν όλα τα στοιχεία ενός πίνακα που ικανοποιούν μία συνθήκη απλά δεικτιοδοτώντας τον πίνακα με την λογική έκφραση που αναπαριστά την συνθήκη:
>>y = A(A>5)
y =6
7
8
9
Οι θέσεις ενός πίνακα που ικανοποιούν μία συνθήκη μπορούν να ανακτηθούν με την εντολή find
.
Ο τρόπος κλήσης της είναι [i,j] = find(A)
και επιστρέφει τους δείκτες γραμμών και στηλών
του πίνακα Α στις οποίες υπάρχουν μη μηδενικά στοιχεία:
>> [i j] = find(A>5)
i = 3
3
2
3
j = 1
2
3
3
Επίσης,ο αριθμός των γραμμών και των στηλών ενός πίνακα μπορεί να επιστρέφει
με την συνάρτηση size(A)
.
Μία ακόμα χρήσιμη συνάρτηση είναι η X = rand(m,n)
, η οποία δημιουργεί έναν
πίνακα X μεγέθους mxn ο οποίος περιέχει τυχαίες τιμές στο διάστημα [0,1].
H MATLAB υποστηρίζει ορισμένες δομές ελέγχου για την δημιουργία ενός προγράμματος.
Οι κυριότερες δομές ελέγχου είναι η δομή επιλογής if-else και η δομή επανάληψης for
οι οποίες στη γενική περίπτωση έχουν την ακόλουθη σύνταξη:
if <συνθήκη1>
<σύνολο εντολών1>
elseif <συνθήκη2>
<σύνολο εντολών2>
else
<σύνολο εντολών3>
end
for <μετβλητή> = <αρχική_τιμή>:<βήμα>:<τελική_τιμή>
<σύνολο εντολών>
end
Για παράδειγμα, εαν θέλουμε να δημιουργήσουμε μία δομή με 10 επανάληψεις
θα γράφαμε for i=1:10
(το βήμα θεωρείται ίσο με 1 όταν δεν καθορίζεται κάτι διαφορετικό) ενώ για μία
δομή 50 επαναλήψεων θα μπορούσαμε να γράψουμε for i=1:2:100
όπου το βήμα είναι 2.
Στην MATLAB είναι δυνατόν να αναπαρασταθούν γραφικά τα δεδομένα (σημεία) ενός πίνακα 2 ή 3 διαστάσεων ή δύο διανυσμάτων. Για να γίνει αυτό χρησιμοποιείται η
συνάρτηση scatter
ή scatter3:
scatter(X,Y)
εμφανίζει κύκλους στα σημεία που ορίζονται απο τα διανύσματα Χ και Υ.
Υπάρχει επίσης η δυνατότητα να καθοριστεί ένα μέγεθος για τους κύκλους, ένα χρώμα για τους κύκλους και αν αυτοί θα εμφανίζονται γεμισμένοι ή όχι:
scatter(X,Y,Μ,color,'filled')
όπου Μ το μέγεθος το κύκλου (ακέραιος) και color
κάποιο προκαθορισμένο χρώμα όπως 'b','g','r','y','k','c'.
Η αντίστοιχη συνάρτηση για γραφική παράσταση σημείων σε τρισδιάστατο χώρο που ορίζονται απο τα διανύσματα Χ,Υ,Ζ είναι η
scatter3(X,Y,Z,Μ,color,'filled')
Η συνάρτηση με την οποία αναπαρίστανται γραφικά οι τιμές ένος διανύσματος Χ σε συνάρτηση με τις τιμές ενός διανύσματος Υ είναι η
plot(X,Y)
ενώ στον τρισδιάστατο χώρο χρησιμοποιείται η
plot3(X,Y,Ζ)
'Οταν χρησιμοποιούνται δύο ή περισσότερες εντολές scatter ή plot διαδοχικά, τα περιεχόμενα της εικόνας που
εμφανίζεται τροποποιούνται σβήνοντας ό,τι είχε απεικονιστεί απο την πρώτη εντολή και εμφανίζοντας μόνο τα περιεχόμενα
της τελευταίας εντολής. Προκειμένου να δημιουργηθεί μία νέα εικόνα για να απεικονιστούν τα δεδομένα χρησιμοποιείται η εντολή figure
ενώ με την εντολή hold on
τα δεδομένα τόσο της πρώτης όσο και της τελευταίας εντολής θα απεικονιστούν στην ίδια εικόνα
Το περιβάλλον της MATLAB παρέχει ένα σύνολο ενσωματωμένων συναρτήσεων με τις οποίες μπορούμε να επιλύσουμε
το πρόβλημα της συσταδοποίησης σε ένα σύνολο δεδομένων (data set). Το σύνολο των δεδομένων αναπαριστάται με έναν
πίνακα NxP όπου N θεωρείται ο αριθμός των παρατηρήσεων (δεδομένων) και P είναι το πλήθος των γνωρισμάτων κάθε παρατήρησης.
Οι κυριότερες απο τις συναρτήσεις αυτές περιγράφονται
στη συνέχεια:
kmeans
: συσταδοποίηση με τον αλγόριθμο k-means.IDX = kmeans(X,K)
χωρίζει τα δεδομένα-παρατηρήσεις του πίνακα δεδομένων X
σε K clusters και επιστρέφει ένα διάνυσμα IDX N στοιχείων το οποίο περιέχει το όνομα του cluster
(ένας ακέραιος i απο 1 εως K) στο οποίο ανήκει κάθε παρατήρηση.
[IDX C]= kmeans(X,K)
επιστρέφει επίσης και το διάνυσμα C που
περιέχει τα K κέντρα των clusters. [IDX C SUMD]= kmeans(X,K)
επιστρέφει επίσης για κάθε ομάδα το άθροισμα των αποστάσεων
των σημείων που έχουν ανατεθεί σε αυτή απο το κέντρο της.Η συνάρτηση μπορεί να κληθεί και με περισσότερες παραμέτρους:
Για παράδειγμα, η κλήση του k-means για το data set X με k=3 όπου χρησιμοποιέιται η απόσταση cityblock,
η επιλογή των αρχικων σημείων γίνεται με sample και εκτελούνται το πολύ 500 επαναλήψεις γίνεται ως εξής
: >>kmeans(X,3,'dist','cityblock','start','sample','maxiter',500)
pdist
: Επιστρέφει τις αποστάσεις όλων των ζευγών - παρατηρήσεων ενός συνόλου δεδομένων.Y = pdist(X)
Το διάνυσμα Υ περιέχει όλες τις ευκλείδιες αποστάσεις κάθε ζεύγους παρατηρήσεων του πίνακα X.
Είναι επίσης δυνατόν να καθοριστεί και κάποιο άλλο μέτρο απόστασης μεταξύ των ζευγών των παρατηρήσεων:
Y = pdist(X,DISTANCE)
όπου η παράμετρος DISTANCE μπορεί να πάρει τις τιμές: 'euclidean', 'seuclidean','cityblock','mahalanobis', 'minkowski','cosine',correlation','hamming','jaccard','chebychev'.
Παράδειγμα: >>Y=pdist(X,'minkowski',3)
linkage
: Ιεραρχική συσταδοποίησηZ = linkage(Y)
Δεδομένου ενός πίνακα Y ο οποίος περιλαμβάνει τις αποστάσεις μεταξύ όλων των παρατηρήσεων ενός συνόλου δεδομένων (distance matrix), επιστρέφει έναν πίνακα Z ο οποίος αντιπροσωπεύει το δενδρόγραμμα της ιεραρχικής συσταδοποίησης με την χρήση του αλγορίθμου απλής σύνδεσης (ΣΙΣ με min-link). O πίνακας Ζ έχει μέγεθος Nx3 όπου Ν είναι ο αριθμός των δεδομένων-παρατηρήσεων. Οι δύο πρώτες στήλες του περιέχουν τα clusters τα οποία συνενώνονται σε κάθε επίπεδο ενώ στην τρίτη στήλη αποθηκεύεται η απόσταση των 2 clusters που συνενώνονται.
Μπορεί ωστόσο εκτός απο τον αλγόριθμο της απλής σύνδεσης να καθοριστεί η χρήση διαφορετικών αλγορίθμων για την ιεραρχική συσταδοποίηση:
Z = linkage(Y,method)
όπου η παράμετρος method μπορεί να λάβει τις τιμές:
dendrogram
: Γραφική απεικόνιση δενδρογράμματος Τ = dendrogram(Z)
Δεδομένου ενός πίνακα Ζ που έχει προκύψει ως έξοδος απο την συνάρτηση linkage
,
παράγει μία εικόνα του δενδρογράμματος το οποίο ορίζεται απο τον πίνακα Ζ.