Διεθυνσιοδότηση (Indexing)

Σχετικά έγγραφα
2ο ΓΕΛ ΑΓ.ΔΗΜΗΤΡΙΟΥ ΑΕΠΠ ΘΕΟΔΟΣΙΟΥ ΔΙΟΝ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού

Εισαγωγή στις Αρχές της επιστήμης των ΗΥ

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

Θεωρητικές Ασκήσεις. ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. 1 ο Μέρος

ΕΚΦΩΝΗΣΕΙΣ & ΛΥΣΕΙΣ ΘΕΜΑΤΩΝ ΤΘ ΑΝΑ ΚΕΦΑΛΑΙΟ ΚΑΙ ΠΑΡΑΓΡΑΦΟ

Τυπικές χρήσεις της Matlab

Programming και Scripts

3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting)

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 2 Εντολές Εισόδου/Εξόδου Τελεστές. Δρ. Γιώργος Λαμπρινίδης 23/10/2015 Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 1

1 η Εργαστηριακή Άσκηση MATLAB Εισαγωγή

3 ο Εργαστήριο Μεταβλητές, Τελεστές

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

Χρονικές σειρές 4 o μάθημα: ΠΙΝΑΚΕΣ ΚΑΙ ΔΙΑΝΥΣΜΑΤΑ

Εισαγωγή στον Προγραμματισμό

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ

ΓΛΩΣΣΑ ΑΛΦΑΒΗΤΟ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΣΤΑΘΕΡΕΣ ΜΕΤΑΒΛΗΤΕΣ

ΕΠΙΣΤΗΜΟΝΙΚΟΣ ΥΠΟΛΟΓΙΣΜΟΣ. Τσιριγώτης Γεώργιος

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού

ΑΡΧΗ 1ης ΣΕΛΙΔΑΣ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ

Άσκηση 1. Ποια από τα κάτω αλφαριθμητικά είναι αποδεκτά ως ονόματα μεταβλητών σε έναν αλγόριθμο i. Τιμή

Διαδικασιακός Προγραμματισμός

6. ΠΙΝΑΚΕΣ & ΑΛΦΑΡΙΘΜΗΤΙΚΑ

Παράδειγμα για διαχείριση strings

ΣΥΝΑΡΤΗΣΕΙΣ. Η σύνταξη μιας συνάρτησης σ ένα κελί έχει την γενική μορφή: =όνομα_συνάρτησης(όρισμα1; όρισμα2;.)

Εισαγωγικά στοιχεία αλγορίθμων -Δομή Ακολουθίας Δομή Επιλογής ΗΜΕΡΟΜΗΝΙΑ 10/ 07/ 2017 ΟΝΟΜΑΤ/ΜΟ ΒΑΘΜΟΣ


Εντολές της LOGO (MicroWorlds Pro)

Νέο υλικό. Matlab2.pdf - Παρουσίαση μαθήματος 2. Matlab-reference.pdf Σημειώσεις matlab στα ελληνικά (13 σελίδες).

2.1. Εντολές Σχόλια Τύποι Δεδομένων

Χρονικές σειρές 1 ο μάθημα: Εισαγωγή στη MATLAB

Σημαντικές δυνατότητες των σύγχρονων υπολογιστικών μηχανών: Αξιόπιστη καταγραφή πολύ μεγάλου όγκου δεδομένων

Μεταβλητές τύπου χαρακτήρα

Βασικοί τύποι δεδομένων (Pascal) ΕΠΑ.Λ Αλίμου Γ Πληροφορική Δομημένος Προγραμματισμός (Ε) Σχολ. Ετος Κων/νος Φλώρος

Πρόβλημα 29 / σελίδα 28

Αριθμητική Ανάλυση και Εφαρμογές

Δομές Δεδομένων και Αλγόριθμοι

7 ο Γυμνάσιο Καβάλας Καλλιόπη Παρσέλια Σχολ. έτος: Το περιβάλλον προγραμματισμού MicroWorlds Pro

ΕΡΩΤΗΣΕΙΣ ΔΙΑΦΟΡΩΝ ΤΥΠΩΝ ΣΤΟ ΚΕΦΑΛΑΙΟ 2.2

1 Ο Λύκειο Ρόδου. Β ΓΕΛ ΕισΑρχΕπ Η/Υ. Γεωργαλλίδης Δημήτρης

Δομές Ακολουθίας- Επιλογής - Επανάληψης. Δομημένος Προγραμματισμός

Εργαστήριο 6 ο 7 ο / Ερωτήματα Ι

Σημειώσεις του εργαστηριακού μαθήματος Πληροφορική ΙΙ. Εισαγωγή στην γλώσσα προγραμματισμού

1. Όλα τα προβλήματα μπορούν να λυθούν με τη βοήθεια HY. 2. Ο υπολογισμός του εμβαδού τετραγώνου είναι πρόβλημα άλυτο.

2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ

Εισαγωγή στην επιστήμη των υπολογιστών. Πράξεις με μπιτ

Διαδικασιακός Προγραμματισμός

ΜΑΘΗΜΑ / ΤΑΞΗ : ΑΕΠΠ / Γ ΛΥΚΕΙΟΥ-ΘΕΡΙΝΑ ΣΕΙΡΑ: 1 η ΗΜΕΡΟΜΗΝΙΑ: 09/09/2012

Εισαγωγή στη Matlab Εισαγωγή στην Αριθμητική Ανάλυση Διδάσκων: Γεώργιος Ακρίβης Βοηθός: Δημήτριος Ζαβαντής

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL

Ένα περιοδικό για το ΑΕΠΠ Τεύχος Πανελλαδικών ΙΙ

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού

Κεφάλαιο ΙV: Δείκτες και πίνακες. 4.1 Δείκτες.

Επαναληπτικό διαγώνισμα στην Α.Ε.Π.Π - 18 / Απριλίου / 2010 ΘΕΜΑ 1

Σχεδίαση Βάσεων Δεδομένων

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2016

Βασικές έννοιες προγραμματισμού

Λίστες στο Scratch 2.0.

ΘΕΜΑ Β Β1. Να συμπληρώσετε τις παρακάτω προτάσεις χρησιμοποιώντας τις λέξεις Θεωρητική ή Εφαρμοσμένη:

Διαδικασιακός Προγραμματισμός

Εισαγωγή στο MATLAB. Κολοβού Αθανασία, ΕΔΙΠ,

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ

FORTRAN και Αντικειμενοστραφής Προγραμματισμός

Σύντομες εισαγωγικές σημειώσεις για την. Matlab

Σου προτείνω να τυπώσεις τις επόμενες τέσσερις σελίδες σε ένα φύλο διπλής όψης και να τις έχεις μαζί σου για εύκολη αναφορά.

ΤΟΜΟΣ Α : Συμβολικός Προγραμματισμός

Μαρία Λουκά. Εργαστήριο Matlab. Αριθμητικός υπολογισμός ιδιοτιμών και ιδιοδιανυσμάτων. Τμήμα Πληροφορικής και Τηλεπικοινωνιών.

Αναφορά (1/2) Μπορούμε να ορίσουμε μια άλλη, ισοδύναμη αλλά ίσως πιο σύντομη, ονομασία για ποσότητα (μεταβλητή, σταθερή, συνάρτηση, κλπ.

18/ 07/ Σελίδα 1 6

Διαγραφή Επιλέγετε Διαγραφή για να διαγράψετε μία ήδη υπάρχουσα διαδικασία εισαγωγής ASCII

Να γράψετε τους αριθμούς 1, 2, 3 από τη Στήλη Α και δίπλα το γράμμα α, β, γ, δ, ε από τη Στήλη Β που δίνει τη σωστή αντιστοιχία.

4 ο ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ ΓΕΝΙΚΟΣ ΣΚΟΠΟΣ :

Γνωρίστε το Excel 2007

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ. Πεδί α

Μαθηματικά Γ Γυμνασίου

Διαχείριση Βάσης Δεδομένων (dbadmin)

Λογικός τύπος Τελεστές σύγκρισης Λογικοί τελεστές Εντολές επιλογής Εμβέλεια Μαθηματικές συναρτήσεις Μιγαδικός τύπος ΔΕΥΤΕΡΗ ΔΙΑΛΕΞΗ

i 1 Όσο i <> 100 επανάλαβε i i + 2 Γράψε A[i] Τέλος_επανάληψης

Λίγα λόγια από το συγγραφέα Κεφάλαιο 1: Βάσεις δεδομένων και Microsoft Access Κεφάλαιο 2: Microsoft Access

Προγραμματισμός Η/Υ. Χειρισμός Αρχείων. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Διαδικασιακός Προγραμματισμός

Εισαγωγή στη γλώσσα προγραμματισμού C++14

4 η ΕΝΟΤΗΤΑ Μητρώα και συνθήκες στο MATLAB

Προγραμματισμός Η/Υ (ΤΛ2007 )

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης

Kεφάλαιο 11 Λίστες και Ανάλυση Δεδομένων Kεφάλαιο 12 Εργαλεία ανάλυσης πιθανοτήτων Kεφάλαιο 13 Ανάλυση δεδομένων...

7. Βασικά στοιχεία προγραµµατισµού.

ΑΕΠΠ 2o Επαναληπτικό Διαγώνισμα

Προγραμματισμός Η/Υ (ΤΛ2007 )

Εκτυπώσεις -> Ενσωματωμένες -> Νέες Μισθολογικές Εκτυπώσεις -> Νέα Μηνιαία Κατάσταση (3 γραμμές) Α3 (Οριζόντια) Α/Α 1037

Προγραμματισμός Ι (ΗΥ120)

Επιλέξτε Κελιά /Γραμματοσειρά και δώστε συγκεκριμένο μέγεθος και τύπο

Σημειωματάαριο Δευτέρας 16 Οκτ. 2017

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2

Θέματα Προγραμματισμού Η/Υ

Παρακάτω θα δούμε πιο αναλυτικά τον καθένα από αυτούς.

Transcript:

Διεθυνσιοδότηση (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