Διεθυνσιοδότηση (Indexing)
Δείκτες (Subscripts) Ένα στοιχείο στην γραμμή i και στην στήλη j της μήτρας A ορίζεται ως A(i,j). Για παράδειγμα, ο A(4,2) είναι ο αριθμός που βρίσκεται στην 4 η σειρά και στην 2 η στήλη της μήτρας Α. Στην Μαγική Μήτρα του Dürer, ο αριθμός A(4,2) είναι ο 15.
Δείκτες (Subscripts) Έτσι, για να αθροίσουμε τα στοιχεία της 4 ης στήλης της Α, γράφουμε: A(1,4) + A(2,4) + A(3,4) + A(4,4) Που δίνει: ans = 34 Που βέβαια δεν είναι ο καλύτερος τρόπος για να βρούμε το άθροισμα μιας στήλης.
Είναι επίσης δυνατό να αναφερθούμε σε ένα στοιχείο μιας μήτρας με έναν και μόνο δείκτη, A(k). Ο ένας δείκτης είναι ο συνήθης τρόπος για να αναφερόμαστε σε ανύσματα γραμμές και στήλες. Μπορεί ωστόσο να χρησιμοποιηθεί και για τις συνήθεις, δισδιάστατες μήτρες, στις περιπτώσεις όπου η Σειρά λαμβάνεται ως ένα μακρύ άνυσμαστήλη που δημιουργείται από τις στήλες της αρχικής μήτρας. Έτσι, για την Μαγική Μήτρα το A(8), είναι ένας άλλος τρόπος να αναφερθούμε στον αριθμό 15 που βρίσκεται στο στοιχείο A(4,2).
Εάν επιχειρήσετε να ορίσετε ένα στοιχείο με δείκτες που δεν υπάρχουν στην μήτρα, αυτό είναι λάθος: t = A(4,5) Index exceeds matrix dimensions Αντίθετα, εάν αποθηκεύσετε ένα στοιχείο σε μια θέση που βρίσκεται εκτός της μήτρας, τότε οι διαστάσεις της μεγαλώνουν, για να το υποδεχθούν:
X = A; X(4,5) = 17 X = 16 3 2 13 0 5 10 11 8 0 9 6 7 12 0 4 15 14 1 17
Ο τελεστής Στήλης (The Colon Operator) Το σημάδι : (άνω & κάτω τελεία), είναι ένας από τους πιο σημαντικούς τελεστές του MATLAB και παρεμβαίνει σε διάφορες περιπτώσεις. Η έκφραση: 1:10 Είναι ένα άνυσμα-γραμμή που έχει τους ακέραιους από 1 μέχρι 10, σε ισοδιαστήματα: 1 2 3 4 5 6 7 8 9 10
Ο Τελεστής Στήλης (The Colon Operator) Για να ορίσουμε ένα διαφορετικό διάστημα, πρέπει να το ορίσουμε. Για παράδειγμα: 100:-7:50 Είναι: 100 93 86 79 72 65 58 51 και 0:pi/4:pi Είναι: 0 0.7854 1.5708 2.3562 3.1416
Ο Τελεστής Στήλης (The Colon Operator) Μπορούμε να αναφερθούμε σε τμήματα Μήτρας κάνοντας κατάλληλη χρήση των δεικτών: A(1:k,j) Είναι τα πρώτα k στοιχεία της jth στήλης της A. Έτσι η: sum(a(1:4,4)) ans = 34 Υπολογίζει το άθροισμα των στοιχείων της 4 ης στήλης της Μήτρας Α.
Ο Τελεστής Στήλης (The Colon Operator) Υπάρχει βέβαια και καλύτερος τρόπος να κάνουμε αυτόν τονυπολογισμό. Το σημάδι : από μόνο του, αναφέρεται σε όλα τα στοιχεία της γραμμής ή της στήλης της μήτρας (ανάλογα που χρησιμοποιείται) και η λέξη-κλειδί end, αναφέρεται στην τελευταία γραμμή ή στήλη (πάλι ανάλογα που χρησιμοποιείται).
Ο Τελεστής Στήλης (The Colon Operator) Έτσι το, sum(a(:,end)) Υπολογίζει το άθροισμα των στοιχείων της τελευταίας στήλη της Α: ans = 34
Ο Τελεστής Στήλης (The Colon Operator) Γιατί είναι όμως το μαγικό άθροισμα της μήτρας 4x4, ίσο με 34; Εάν οι ακέραιοι, από 1 έως 16, χωριστούν σε 4 ομάδες με ίσο άθροισμα, αυτό το άθροισμα πρέπει να είναι: sum(1:16)/4 ans = 34
Συνένωση (Concatenation) Η Συνένωση είναι η διαδικασία του να ενώσουμε μικρές μήτρες, για την δημιουργία μεγαλύτερης. Στην πραγματικότητα, και η δημιουργία της 1 ης μήτρας ήταν μία συνένωση των επί μέρους στοιχείων. Το ζεύγος των αγκυλών [], είναι ο τελεστής της Συνένωσης (concatenation). Για παράδειγμα, από την μαγική μήτρα A, (4x4) μπορούμε να κάνουμε την:
Συνένωση (Concatenation) B = [A A+32; A+48 A+16] Που είναι μία μήτρα 8x8, που προκύπτει από την συνένωση των 4 υπομητρών: B = 16 3 2 13 48 35 34 45 5 10 11 8 37 42 43 40 9 6 7 12 41 38 39 44 4 15 14 1 36 47 46 33 64 51 50 61 32 19 18 29 53 58 59 56 21 26 27 24 57 54 55 60 25 22 23 28 52 63 62 49 20 31 30 17
Συνένωση (Concatenation) Η Μήτρα αυτή είναι κατά το ήμισυ μαγική. Τα στοιχεία της είναι μια αναδιάταξη των ακεραίων 1:64. Το άθροισμα κάθε στήλης είναι η σωστή τιμή της μαγικής μήτρας 8x8: sum(b) ans = 260 260 260 260 260 260 260 260 Αλλά το άθροισμα των γραμμών sum(b')', δεν είναι το ίδιο. Χρειάζεται περεταίρω επεξεργασία για να γίνει μια Μαγική Μήτρα 8x8.
Διαγράφοντας Γραμμές και Στήλες Μπορούμε να διαγράψουμε γραμμές και στήλες σε μια μήτρα, χρησιμοποιώντας απλά δύο τετράγωνες παρενθέσεις. Π.χ. X = A; Για να διαγράψουμε την 2 η στήλη της Χ, γράφουμε: X(:,2) = [] Που αλλάζει την Χ σε:
Διαγράφοντας Γραμμές και Στήλες X = 16 2 13 5 11 8 9 7 12 4 14 1 Εάν διαγράψουμε ένα σκέτο στοιχείο μιας μήτρας, τότε αυτή παύει να είναι μήτρα. Δηλαδή εκφράσεις του τύπου: X(1,2) = [] Δίνουν σφάλμα. Subscripted assignment dimension mismatch.
Διαγράφοντας Γραμμές και Στήλες Ωστόσο, χρησιμοποιώντας έναν μόνο δείκτη κάνουμε την διαγραφή ενός ή περισσοτέρων στοιχείων και την ανασύνταξη των υπολοίπων σε άνυσμα-γραμμή. Για: X = 16 2 13 5 11 8 9 7 12 4 14 1 X(2:2:10) = [] Δίνει: X = 16 9 2 7 13 12 1
Επέκταση Αριθμών (Scalar Expansion) Μήτρες και οι αριθμοί μπορούν να συνδυάζονται με διάφορους τρόπους. Για παράδειγμα, για να αφαιρέσουμε έναν αριθμό από μία μήτρα, τον αφαιρούμε από κάθε στοιχείο της. Ο μέσος όρος των στοιχείων της Μαγικής Μήτρας είναι 8.5. Έτσι η εντολή: B = A - 8.5 Δίνει μια Μήτρα της οποίας το άθροισμα των στοιχείων κάθε στήλης είναι μηδέν:
Επέκταση Αριθμών (Scalar Expansion) B = sum(b) 7.5-5.5-6.5 4.5-3.5 1.5 2.5-0.5 0.5-2.5-1.5 3.5-4.5 6.5 5.5-7.5 ans = 0 0 0 0
Επέκταση Αριθμών (Scalar Expansion) Με την επέκταση αριθμών, το MATLAB εκχωρεί έναν ειδικό αριθμό σε όλα τα στοιχεία των δεικτών σειράς. Για παράδειγμα: B(1:2,2:3) = 0 Θέτει στο μηδέν ένα τμήμα της B: B = 7.5 0 0 4.5-3.5 0 0-0.5 0.5-2.5-1.5 3.5-4.5 6.5 5.5-7.5
Λογική Δεικτοδότηση (Logical Subscripting) Τα λογικά ανύσματα που δημιουργούνται από λογικές και σχεσιακές διεργασίες μπορούν να χρησιμοποιηθούν για την αναφορά σε υποσειρές. Υποθέτουμε πως η X είναι μια συνήθης μήτρα και L είναι μια μήτρα ίδιων διαστάσεων που προκύπτει από κάποια διεργασία λογικής. Όπου X(L) είναι τα στοιχεία της X όπου τα στοιχεία της L είναι μη μηδενικά.
Λογική Δεικτοδότηση (Logical Subscripting) Αυτός ο τρόπος δεικτοδότησης μπορεί να δοθεί ορίζοντας μια λογική πράξη για την δεικτοδότηση. Υποθέστε πως έχετε τα ακόλουθα δεδομένα: x = [2.1 1.7 1.6 1.5 NaN 1.9 1.8 1.5 5.1 1.8 1.4 2.2 1.6 1.8]; Το στοιχείο NaN δηλώνει ανυπαρξία στοιχείου (π.χ. δεν υπάρχει απάντηση σε μία ερώτηση ενός ερωτηματολογίου).
Λογική Δεικτοδότηση (Logical Subscripting) Για να εξαλείψουμε το απολεσθέν δεδομένο με λογική εκχώρηση δείκτη, χρησιμοποιούμε την εντολή isfinite(x), η οποία είναι αληθής (1) για όλες τις πεπερασμένες αριθμητικές τιμές και ψευδής (0) για τα NaN και Inf: x = x(isfinite(x)) x = 2.1 1.7 1.6 1.5 1.9 1.8 1.5 5.1 1.8 1.4 2.2 1.6 1.8
Λογική Δεικτοδότηση (Logical Subscripting) Εάν μία από τις τιμές των δεδομένων, (π.χ. η 5.1), μοιάζει να είναι πολύ διαφορετική από τις άλλες (σαν να είναι λανθασμένη), μπορούμε να την απομακρύνουμε. Η ακόλουθη εντολή απομακρύνει αυτές τις τιμές που είναι πιο μακρινές από το τριπλάσιο της τυπικής απόκλισης από την μέση τιμή: x = x(abs(x-mean(x)) <= 3*std(x)) x = 2.1 1.7 1.6 1.5 1.9 1.8 1.5 1.8 1.4 2.2 1.6 1.8
Λογική Δεικτοδότηση (Logical Subscripting) Εάν π.χ. θέλουμε να εντοπίσουμε την θέση των πρώτων αριθμών στην Μήτρα του Dürer, με λογική εκχώρηση δεικτών και επέκταση αριθμών, θέτοντας τους σύνθετους αριθμούς (αυτοί που δεν είναι πρώτοι) στο 0. A(~isprime(A)) = 0 A = 0 3 2 13 5 0 11 0 0 0 7 0 0 0 0 0
Η εντολή find Η εντολή find ορίζει τους δείκτες των στοιχείων μιας σειράς, που πληρούν μία λογική συνθήκη. Στην απλούστερη μορφή της δίνει ένα άνυσμαστήλη με τους δείκτες. Με Transpose του ανύσματος-στήλη παίρνουμε άνυσμα-γραμμή. Για παράδειγμα (πάλι στην Μήτρα του Dürer): k = find(isprime(a)) Δίνει τις θέσεις, με την χρήση ενός δείκτη, των πρώτων αριθμών της μήτρας: k = 2 5 9 10 11 13
Η εντολή find Δώστε τους πρώτους αριθμούς, σε άνυσμαγραμμή, με την σειρά που ορίζει ο k: A(k) ans = 5 3 2 11 7 13 Όταν χρησιμοποιείται το k σαν εξ αριστερών δείκτης- σε μια εντολή καταχώρησης, η δομή της μήτρας διατηρείται:
Η εντολή find A(k) = NaN A = 16 NaN NaN NaN NaN 10 NaN 8 9 6 NaN 12 4 15 14 1
Πολυδιάστατες Σειρές (Multidimensional Arrays) Οι πολυδιάστατες σειρές, στο περιβάλλον του MATLAB, είναι σειρές με περισσότερους από 2 δείκτες. Ένας τρόπος δημιουργίας τέτοιων σειρών είναι να καλούμε μηδενικά, άσσους, ή τυχαίους αριθμούς, με περισσότερα από δύο ορίσματα. Π.χ.: R = randn(3,4,5); Δημιουργεί μια σειρά με διαστάσεις (3x4x5), που έχει 3*4*5 = 60, τυχαία στοιχεία κανονικής κατανομής.
Πολυδιάστατες Σειρές (Multidimensional Arrays) Μια 3-D σειρά μπορεί να αναπαριστά φυσικά δεδομένα 3 διαστάσεων (π.χ. την θερμοκρασία σε έναν χώρο, σε σημεία υπό μορφή τετραγωνικού πλέγματος). Ή μπορεί να αναπαριστά μία ακολουθία από μήτρες A(k), ή ακόμα δείγματα μιας μήτρας που εξαρτάται από τον χρόνο, A(t). Σ αυτή την περίπτωση το (i, j) th στοιχείο της k th μήτρας, ή της t k th μήτρας, ορίζεται με A(i,j,k).
Πολυδιάστατες Σειρές (Multidimensional Arrays) Οι Μαγικές Μήτρες του MATLAB και του Dürer, (4x4) διαφέρουν μεταξύ τους, καθώς έχουν δύο στήλες αντιμετατιθεμένες. Μπορούν να δημιουργηθούν πολλές Μαγικές Μήτρες με αντιμετάθεση των στηλών τους. Η εντολή: p = perms(1:4); Δημιουργεί 4! = 24 αντιμεταθέσεις των 1:4 στηλών. Η k th αντιμετάθεση είναι το άνυσμαγραμμή p(k,:).
Πολυδιάστατες Σειρές (Multidimensional Arrays) Έτσι το: A = magic(4); M = zeros(4,4,24); for k = 1:24 M(:,:,k) = A(:,p(k,:)); end Αποθηκεύει την ακολουθία 24 Μαγικών Μητρών σε μια 3D σειρά, M. Η διάσταση της M είναι: size(m) ans = 4 4 24
Σημείωση: Η σειρά των Μητρών που φαίνονται μπορεί να διαφέρει στα δικά σας αποτελέσματα. Η εντολή perms δίνει πάντα όλες τις αντιμεταθέσεις του ανύσματος εισόδου, αλλά η σειρά μπορεί να διαφέρει στις διάφορες εκδόσεις του MATLAB.
Η εντολή: sum(m,d) Υπολογίζει τα αθροίσματα μεταβάλλοντας τον d th δείκτη. Έτσι το: sum(m,1) Είναι μία σειρά (1x4x24) που έχει 24 αντίγραφα του ανύσματος-γραμμή: 34 34 34 34
Και το: sum(m,2) Είναι μία σειρά (4x1x24) που έχει 24 αντίγραφα του ανύσματος-στήλη: 34 34 34 34
Τελικά η: S = sum(m,3) Προσθέτει τις 24 μήτρες της ακολουθίας. Το αποτέλεσμα μοιάζει με μια σειρά 4x4: S = 204 204 204 204 204 204 204 204 204 204 204 204 204 204 204 204
Σειρές Κελιών (Cell Arrays) Οι Σειρές Κελιών στο MATLAB είναι πολυδιάστατες σειρές, των οποίων τα στοιχεία είναι αντίγραφα άλλων σειρών. Μια Σειρά Κελιών με άδειες μήτρες μπορεί να δημιουργηθεί με την εντολή cell. Συχνότερα, οι Σειρές Κελιών, δημιουργούνται με την επισύναψη διαφορετικών συνόλων στοιχείων σε αγκύλες {}. Οι αγκύλες χρησιμοποιούνται επίσης με τους δείκτες, για την πρόσβαση στα διάφορα κελιά. Για παράδειγμα η: C = {A sum(a) prod(prod(a))}
Σειρές Κελιών (Cell Arrays) Δημιουργεί μία Σειρά Κελιών 1x3. Τα τρία κελιά περιέχουν την Μαγική Μήτρα, το άνυσμα-γραμμή με τα αθροίσματα των στηλών της, και τα γινόμενα όλων των στοιχείων της. Όταν εμφανίζουμε την C, έχουμε: C = [4x4 double] [1x4 double] [20922789888000] Αυτό γίνεται γιατί τα δύο πρώτα κελιά είναι πολύ μεγάλα για να εμφανιστούν στον περιορισμένο χώρο, ενώ το τρίτο κελί έχει μόνο ένα αριθμό, το 16!, που μπορεί να εμφανισθεί.
Σειρές Κελιών (Cell Arrays) Δύο πράγματα είναι σημαντικά: Για να πάρουμε τα περιεχόμενα ενός κελιού, χρησιμοποιούμε δείκτες μέσα σε {}. Π.χ. το C{1} ανακαλεί την Μαγική Μήτρα, και το C{3} είναι το 16!. Οι Σειρές Κελιών περιέχουν αντίγραφα άλλων σειρών, και όχι τους δείκτες για τις σειρές αυτές. Δηλαδή, εάν σε μεταγενέστερο χρόνο υπάρξει αλλαγή στην A, δεν συμβαίνει τίποτα στην C.
Σειρές Κελιών (Cell Arrays) Μπορούμε να χρησιμοποιήσουμε Σειρές 3D για την αποθήκευση μιας ακολουθίας μητρών με τις ίδιες διαστάσεις. Οι Σειρές Κελιών μπορούν να χρησιμοποιηθούν για την αποθήκευση μητρών με διαφορετικές διστάσεις. Για παράδειγμα: M = cell(8,1); for n = 1:8 M{n} = magic(n); end M
Σειρές Κελιών (Cell Arrays) Δημιουργεί μία ακολουθία Μαγικών Μητρών διαφορετικών διαστάσεων: M = [ 1] [ 2x2 double] [ 3x3 double] [ 4x4 double] [ 5x5 double] [ 6x6 double] [ 7x7 double] [ 8x8 double]
Μπορούμε να καλέσουμε την Μαγική Μήτρα 4x4 με την M{4}
Γράμματα και Κείμενο (Characters and Text) Για την εισαγωγή κειμένου στο MATLAB χρησιμοποιούμε μονά εισαγωγικά. Π.χ.: s = 'Hello' s = Hello Το αποτέλεσμα δεν είναι του ίδιου τύπου με τις αριθμητικές μήτρες ή τις σειρές που είδαμε μέχρι τώρα. Είναι μία σειρά χαρακτήρων 1x5. Εσωτερικά, οι χαρακτήρες αποθηκεύονται όπως οι αριθμοί, αλλά όχι σε μορφή floating-point.
Γράμματα και Κείμενο (Characters and Text) Η εντολή: a = double(s) Μετατρέπει την σειρά χαρακτήρων σε αριθμητική μήτρα που έχει σε μορφή floating-point τον κώδικα ASCII κάθε χαρακτήρα. Θα είναι: a = Η εντολή 72 101 108 108 111 s = char(a) Αντιστρέφει την μετατροπή.
Γράμματα και Κείμενο (Characters and Text) Μετατρέποντας τους αριθμούς σε χαρακτήρες μπορούμε να εξερευνήσουμε τις διάφορες γραμματοσειρές του υπολογιστή μας. Οι εκτυπώσιμοι χαρακτήρες στο βασικό σύνολο των χαρακτήρων ASCII παρουσιάζονται με τους ακέραιους 32:127. (Οι μικρότεροι του 32 ακέραιοι, παρουσιάζουν μη εκτυπώσιμους χαρακτήρες ελέγχου.) Αυτοί οι ακέραιοι τοποθετούνται σε μια σειρά 6x6, με: F = reshape(32:127,16,6)';
Γράμματα και Κείμενο (Characters and Text) Οι εκτυπώσιμοι χαρακτήρες στο εκτεταμένο σύνολο των χαρακτήρων ASCII, παρουσιάζονται με F+128. Όταν αυτοί οι ακέραιοι εκλαμβάνονται σαν χαρακτήρες, το αποτέλεσμα εξαρτάται από την γραμματοσειρά που χρησιμοποιείται. Δίνουμε τις εντολές: char(f) char(f+128) Και κατόπιν αλλάζουμε την γραμματοσειρά που έχουμε στο Command Window.
Γράμματα και Κείμενο (Characters and Text) Για να αλλάξουμε την γραμματοσειρά που χρησιμοποιούμε στο Command Window, πάμε στο Home Environment Preferences > Fonts. Εάν συμπεριλαμβάνεται tabs στο πρόγραμμα, χρησιμοποιείστε γραμματοσειρά σταθερού πλάτους, όπως το Monospaced, για την ευθυγράμμιση της θέσης των tab στις διάφορες γραμμές.
Γράμματα και Κείμενο (Characters and Text) Η συνένωση με τετραγωνικές αγκύλες [], ενώνει μεταβλητές χαρακτήρων και κάνει μεγαλύτερες ακολουθίες. Η εντολή: h = [s, ' world'] Ενώνει τους χαρακτήρες οριζόντια και δίνει: h = Hello world Σημειώνεται πως πρέπει να παρεμβληθεί ένα κενό πριν το 'w' στην έκφραση h.
Γράμματα και Κείμενο (Characters and Text) Η εντολή: v = [s; 'world'] Ενώνει τους χαρακτήρες κάθετα και δίνει: v = Hello world Και οι δύο λέξεις στην έκφραση v πρέπει να έχουν το ίδιο μήκος. Οι σειρές που προκύπτουν είναι αμφότερες σειρές χαρακτήρων. Η h 1x11 και η v 2x5.
Γράμματα και Κείμενο (Characters and Text) Για την επεξεργασία ενός κειμένου με γραμμές διαφορετικού μήκους, έχουμε δύο επιλογές: Ή ευθυγραμμισμένη σειρά χαρακτήρων Ή σειρά κελιών με ακολουθίες Όταν δημιουργούμε σειρές χαρακτήρων, πρέπει να έχουμε το ίδιο μήκος για κάθε γραμμή της σειράς, και το κάνουμε συμπληρώνοντας το τέλος των μικρότερων γραμμών με κενά. Η εντολή char το κάνει αυτό για λογαριασμό μας. Για παράδειγμα:
Γράμματα και Κείμενο (Characters and Text) S = char('a','rolling','stone','gathers','momentum.') Παράγει μία σειρά χαρακτήρων 5x9: S = A rolling stone gathers momentum.
Γράμματα και Κείμενο (Characters and Text) Εναλλακτικά, μπορούμε να αποθηκεύσουμε το κείμενο σε Σειρά Κελιών. Η εντολή: C = {'A';'rolling';'stone';'gathers';'momentum.'} Δημιουργεί μία Σειρά Κελιών 5x1 που δεν χρειάζεται ευθυγράμμιση, γιατί κάθε γραμμή μπορεί να έχει διαφορετικό μήκος: C = 'A' 'rolling' 'stone' 'gathers' 'momentum.'
Γράμματα και Κείμενο (Characters and Text) Μπορούμε να μετατρέψουμε μια σειρά ευθυγραμμισμένη (padded), σε σειρά κελιών με ακολουθίες, με: C = cellstr(s) Και να αντιστρέψουμε την διαδικασία με: S = char(c)
Δομές (Structures) Οι Δομές είναι πολυδιάστατες Σειρές του MATLAB με στοιχεία που είναι προσβάσιμα με δείκτες κειμένου. Για παράδειγμα: S.name = 'Ed Plum'; S.score = 83; S.grade = 'B+' Δημιουργεί μία ανυσματική δομή με τρία πεδία: S = name: 'Ed Plum' score: 83 grade: 'B+'
Δομές (Structures) Όπως όλα στο περιβάλλον του MATLAB, έτσι και οι δομές είναι σειρές κι έτσι μπορούμε να εισάγουμε πρόσθετα στοιχεία. Τότε κάθε στοιχείο της σειράς είναι μια δομή με διάφορα πεδία, τα οποία μπορούν να προστεθούν ένα κάθε φορά. S(2).name = 'Toni Miller'; S(2).score = 91; S(2).grade = 'A-'; Ή μπορεί να προστεθεί ένα στοιχείο με το συνολικό δεδομένο: S(3) = struct('name','jerry Garcia',... 'score',70,'grade','c')
Δομές (Structures) Τώρα η δομή είναι αρκετά μεγάλη κι έτσι τυπώνεται μόνο η σύνοψή της: S = 1x3 struct array with fields: name score Grade Υπάρχουν διάφοροι τρόποι να ξαναμαζέψουμε τα διαφορετικά πεδία σε άλλες σειρές του MATLAB και βασίζονται στον διαχωρισμό της λίστας με κώμα. Το: S.score Είναι το ίδιο με: S(1).score, S(2).score, S(3).score
Δομές (Structures) Εάν βάλτε την έκφραση που παράγει αυτή την λίστα μέσα σε [], το MATLAB αποθηκεύει κάθε στοιχείο της λίστας σε μια σειρά. Στο ακόλουθο παράδειγμα δημιουργεί ένα αριθμητικό άνυσμα που περιέχει το πεδίο του score για κάθε στοιχείο της σειράς δομής και μετά υπολογίζει τον Μ.Ο: scores = [S.score] scores = 83 91 70 avg_score = sum(scores)/length(scores) avg_score = 81.3333
Δομές (Structures) Για να δημιουργήσουμε μια σειρά χαρακτήρων από ένα πεδίο του κειμένου (π.χ. το name), καλούμε την εντολή char στην comma-separated list που δημιουργήθηκε με το S.name: names = char(s.name) names = Ed Plum Toni Miller Jerry Garcia
Δομές (Structures) Κατά τον ίδιο τρόπο μπορούμε να δημιουργήσουμε μια cell array από το πεδίο name, βάζοντας την έκφραση δημιουργίας λίστας σε {}: names = {S.name} names = 'Ed Plum' 'Toni Miller' 'Jerry Garcia
Δομές (Structures) Για να εκχωρίσουμε τα πεδία κάθε στοιχείου της σειράς δομής, σε ξεχωριστές μεταβλητές εκτός της δομής, εξειδικεύουμε κάθε έξοδο στα αριστερά του σημείου = βάζοντάς την μέσα σε []: [N1 N2 N3] = S.name N1 = Ed Plum N2 = Toni Miller N3 = Jerry Garcia