Σύντομες εισαγωγικές σημειώσεις για την Matlab
Δήλωση Μεταβλητών Για να εισάγει κανείς δεδομένα στη Matlab υπάρχουν πολλοί τρόποι. Ο πιο απλός είναι στη γραμμή εντολών να εισάγουμε αυτό που θέλουμε και να πατήσουμε enter. Καλό θα ήταν να αναθέσουμε σε μία μεταβλητή την τιμή που θέλουμε ώστε να μπορούμε να την χρησιμοποιήσουμε όποια στιγμή θέλουμε. Η ανάθεση τιμών σε μεταβλητές γίνετε με τον ακόλουθο τρόπο. Γράφουμε το όνομα της μεταβλητής στη συνέχεια βάζουμε = και ακολούθως εισάγουμε μέσω του πληκτρολογίου τα δεδομένα. Π.χ: >> a = 1 >> B = [1 2 3;4 5 6] >> s = good ΠΑΡΑΤΗΡΗΣΕΙΣ: Συνηθίζεται αν θέλουμε να δώσουμε σε μία μεταβλητή ως τιμή έναν πίνακα να ξεκινάει με κεφαλαίο. Οι μεταβλητές δεν μπορούν να ξεκινούν με αριθμό η οποιοδήποτε σύμβολο. Στη Matlab υπάρχει διαφορά μεταξύ κεφαλαίων και πεζών. Δηλαδή η μεταβλητή a δεν είναι η ίδια με την μεταβλητή Α. Όπως θα παρατηρήσατε, αν προσπαθήσατε να εισάγεται τα παραδείγματα που δώσαμε παραπάνω, όταν πατάτε enter εμφανίζονται αμέσως από κάτω η μεταβλητή με τη τιμή που της δώσαμε. Αν δε θέλουμε να συμβεί αυτό, αρκεί στο τέλος κάθε φορά να βάζουμε ελληνικό ερωτηματικό. Η εντολή input Ένας άλλος τρόπος για να κάνει εισάγει κανείς δεδομένα είναι με την εντολή input. Η χρήση της οποίας είναι πολύ απλή. Αν γράψουμε για παράδειγμα στην γραμμή εντολών >> Α = input( Δώσε μια τιμή : ); Και πατήσουμε enter θα εμφανιστεί το μήνυμα που βρίσκετε μέσα στα εισαγωγικά και ο υπολογιστής θα περιμένει να του εισάγουμε εμείς μία τιμή την οποία θα την αναθέσει στη μεταβλητή Α και επειδή βάλαμε ερωτηματικό στο τέλος δε θα εμφανιστεί τίποτα στο τέλος.
Η εντολή disp >> a = 3; >> b = 5; >> c =a + b; Στις πιο πάνω κάνουμε τα εξής : αναθέτουμε στις μεταβλητές a και b τις τιμές 3 και 5 αντίστοιχα. Στη συνέχεια τις προσθέτουμε και τοποθετούμε το αποτέλεσμα στη μεταβλητή c. Εμείς τώρα αν θέλουμε να δούμε την τιμή που έχει η c αρκεί να γράψουμε : >> disp( c ) Και το αποτέλεσμα της πράξης αυτής θα είναι: 8 Αν θέλουμε να εμφανιστεί και το όνομα της μεταβλητής πρέπει να γράψουμε πιο πριν >> disp( c = ); Αυτό θα μας εμφανίσει τη συμβολοσειρά c =. Ακόμα μπορούμε απλώς να γράψουμε το όνομα της μεταβλητής που θέλουμε χωρίς ερωτηματικό στο τέλος. Η εντολή if-elseif-else Η if elseif-else έχει την ακόλουθη μορφή: if {λογική έκφραση} elseif { λογική έκφραση } else
Για παράδειγμα if a = = 1 disp( a = 1 ) elseif a = = 2 disp( a = 2 ) else disp( wrong value ) Τι κάνει το παραπάνω; Ελέγχει αν η μεταβλητή a έχει τη τιμή 1 οπότε τυπώνει το μήνυμα στην πρώτη disp, αν δεν είναι 1 ελέγχει αν είναι 2 οπότε τυπώνει το δεύτερο μήνυμα. Αν και ούτε αυτό συμβαίνει τότε τυπώνει το τρίτο μήνυμα. ΠΡΟΣΟΧΗ : Η εντολή if πρέπει να συνοδεύεται στο τέλος πάντα από το Η εντολή for for {μεταβλητή} = {διάνυσμα γραμμή με τις τιμές της μεταβλητής} Παράδειγμα: for i = 0:0.1:1 disp( i ); Το αποτέλεσμα θα είναι να τυπωθούν όλοι οι αριθμοί από το 0 ως το 1 κάθε φορά αυξανόμενοι κατά 0.1. Απ ότι αντιληφθήκατε η εντολή for χρησιμοποιείτε αν θέλουμε να επαναλάβουμε ένα σύνολο εντολών δεδομένο αριθμό φορών. Μια εντολή for μπορεί να περιέχει στο σώμα εντολών της μια άλλη for, αρκεί η άλλη εντολή να έχει διαφορετική μεταβλητή ως μετρητή, όπως επίσης να συνοδεύεται από τι δικό της ξεχωριστό.
Η εντολή while while {λογική έκφραση} Η εντολή while είναι και αυτή μια εντολή επανάληψης η οποία εκτελείτε όσο η ικανοποιείται η λογική της έκφραση. Γίνεται αντιληπτό ότι τη while μπορούμε να την χρησιμοποιήσουμε όταν θέλουμε να εκτελέσουμε ένα πλήθος εντολών αρκετές φορές αλλά δε ξέρουμε τον ακριβή αριθμό των επαναλήψεων, και το μόνο που γνωρίζουμε είναι ότι θέλουμε να εκτελούνται όσο ικανοποιούνται ορισμένες συνθήκες. Για παράδειγμα : sum = 0; while sum < 10 sum =sum + 3; Θα προσθέτει στη μεταβλητή sum το 3 μέχρι αυτή να ξεπεράσει το 10 και τότε θα σταματήσει. Η εντολή break Εάν θέλουμε για οποιοδήποτε λόγο να διακόψουμε την επαναληπτική διαδικασία των εντολών for & while μπορούμε να χρησιμοποιήσουμε την εντολή break. sum = 0; while sum < 10 sum =sum + 3; if sum == 9 break disp(sum); Το αποτέλεσμα αυτού του συνόλου εντολών είναι να σταματήσει η εκτέλεση του while πριν ακόμα η μεταβλητή sum να ξεπεράσει το 10. Για την ακρίβεια θα σταματήσει όταν θα έχει την τιμή 9.
ΔΗΜΙΟΥΡΓΙΑ ΚΑ ΕΚΤΕΛΕΣΗ M-FILES Eνα από τα πράγματα που κάνουν την Matlab να υπερτερεί απέναντι σε άλλες γλώσσες προγραμματισμού, είναι η ευκολία με την οποία μπορεί κανείς να προγραμματίσει. Η Matlab λοιπόν μας δίνει τη δυνατότητα να δημιουργήσουμε τα λεγόμενα m-files. Αυτά χωρίζονται σε δύο κατηγορίες. Τα script files και τις functions. SCRIPT FILES Τα script files είναι ένα σύνολο εντολών που αντί να τις εκτελούμε μια μετά την άλλη στην γραμμή εντολών χάνοντας πολύτιμο χρόνο, τις γράφουμε στο παράθυρο του editor και εκτελούνται απλώς αν πληκτρολογήσουμε το όνομα του αρχείου στο οποίο περιέχονται στο command line. Αυτό μας δίνει το πλεονέκτημα να μπορούμε να αποθηκεύουμε πλήθος εντολών, έτσι ώστε να τις χρησιμοποιούμε όποτε θέλουμε. Τα script files λειτουργούν με γενικές μεταβλητές, δηλαδή είναι «ορατές» και έξω από το σώμα του αρχείου, στις οποίες μπορούμε να εισάγουμε τις τιμές τους με τους τρόπους που αναφέραμε στο 1.2.1. Παρατηρήσεις: Όπως και στις μεταβλητές το όνομα ενός script file θα πρέπει να αρχίζει με γράμμα. Δεν επιτρέπεται το όνομα που θα δώσουμε να χρησιμοποιείτε από μεταβλητή ή συνάρτηση πού ήδη υπάρχει. ΠΑΡΑΔΕΙΓΜΑ
FUNCTIONS Οι functions αποτελούν τη δεύτερη κατηγορία των m files. Μπορούμε μάλιστα ότι είναι και η σημαντικότερη. Η μεγάλη διαφορά με τα script files είναι ότι οι μεταβλητές είναι τοπικές. Δηλαδή μία μεταβλητή που περιέχεται σε μια function δεν μπορεί να επηρεαστεί από διαδικασίες εκτός function. Ακόμα μια function μπορεί να δεχθεί δεδομένα σαν ορίσματα και να επιστρέψει αποτελέσματα. Μια function πρέπει πάντα να αρχίζει με την ακόλουθη γραμμή: function [out 1,,out n] = name (inp 1,,inp m) Όπου out 1,, out n είναι τα αποτελέσματα που θέλουμε να μας επιστρέφει. name το όνομα της function και inp 1,, inp m τα ορίσματά της. Μια function δεν είναι απαραίτητο να έχει ορίσματα ή να επιστρέφει αποτελέσματα. Σαν ορίσματα, αντίστοιχα αποτελέσματα, μπορούν να μπουν μεταβλητές των οποίων οι τιμές μπορούν να είναι πολλών ειδών. Όπως για παράδειγμα αριθμοί, συμβολοσειρές, structures, πίνακες και πολλές άλλες δομές που μπορεί να επεξεργαστεί η Matlab. Το πιο σημαντικό που πρέπει να προσέξει όταν εργάζεται κανείς με functions είναι ότι πρέπει το m file να έχει το ίδιο όνομα με το name που είπαμε προηγουμένως. Παράδειγμα function
Για να καλέσουμε μια συνάρτηση αρκεί στη γραμμή εντολών ή μέσα σε μια άλλη συνάρτηση να γράψουμε το όνομα της συνάρτησης με τα ορίσματα της καθώς και να αναθέσουμε τα αποτελέσματα σε μεταβλητές. Για παράδειγμα πως θα καλούσαμε την συνάρτηση kyklos που βλέπουμε στην από πάνω εικόνα; >> d = kyklos( [0 0],1,10); Αυτό έχει ως επακόλουθο η d να είναι ένας 10x2 πίνακας με πρώτη γραμμή την χ συντεταγμένη σημείων της περιμέτρου κύκλου με κέντρο (0,0) και ακτίνα 1 και η δεύτερη τις y συντεταγμένες. Όπως βλέπεται αν έχουμε μόνο ένα αποτέλεσμα σαν έξοδο δεν χρειάζονται οι αγκύλες. ΠΙΝΑΚΕΣ / ΧΡΗΣΙΜΕΣ ΕΝΤΟΛΕΣ / ΤΕΛΕΣΤΕΣ H Matlab είναι πολύ καλή όταν δουλεύουμε με πίνακες. Αυτό συμβαίνει γιατί ότι δεδομένο της εισάγουμε του συμπεριφέρεται σαν να είναι πίνακας. Ακόμα και τις συμβολοσειρές τις θεώρει πίνακες χαρακτήρων. Πώς δηλώνουμε πίνακες όμως; 1 2 3 Έστω ότι θέλουμε να εισάγουμε τον πίνακα T = 4 5 6 θα γράψουμε στη 7 8 9 γραμμή εντολών >> Τ = [1 2 3;4 5 6;7 8 9] Τα ερωτηματικά μέσα στις αγκύλες υποδηλώνουν την αλλαγή γραμμής στον πίνακα. Μεταξύ πινάκων μπορούμε να εφαρμόσουμε κανονικά ότι πράξεις θα κάναμε στο χαρτί. Χρήσιμοι τελεστές σε αυτές τις ενέργειες είναι οι ακόλουθοι. + Πρόσθεση - Αφαίρεση * Πολλαπλασιασμός ^ Ύψωση σε δύναμη.* Πολλαπλασιασμός στοιχείο με στοιχείο.^ύψωση σε δύναμη στοιχείο με στοιχείο Ανάστροφος πίνακας.
Εκτός από αυτούς τους τελεστές υπάρχουν και άλλες χρήσιμες. det(a) υπολογίζει την ορίζουσα του πίνακα Α inv(a) υπολογίζει τον αντίστροφο του Α eye(n) δημιουργεί έναν nχn μοναδιαίο πίνακα zeros(n,m) δημιουργεί έναν nχm πίνακα με μηδενικά ones(n,m) δημιουργεί έναν nχm πίνακα με μονάδες rand(n,m) δημιουργεί έναν nχm πίνακα με τυχαίους αριθμούς μεταξύ 0 και 1 Επίσης υπάρχουν έξι λογικές σχέσεις = = ίσο >= μεγαλύτερο ή ίσο <= μικρότερο ή ίσο > μεγαλύτερο < μικρότερο ~= διάφορο Καθώς και οι λογικοί τελεστές & AND OR ~ NOT Άλλες χρήσιμες συναρτήσεις είναι cos( ) συνημίτονο, sin( ) ημίτονο, tan( ) εφαπτομένη, exp( ) εκθετική, log( ) λογάριθμος, sqrt ( ) τετραγωνική ρίζα επίσης με τη λέξη pi η Matlab καταλαβαίνει το π, καθώς και με τα i,j παριστάνει τη φανταστική μονάδα. Αυτά ήταν με συντομία κάποια εισαγωγικά στοιχεία για την Matlab και το πώς μπορούμε να δουλέψουμε με αυτή. Στην συνέχεια θα γίνουμε πιο συγκεκριμένοι καθώς θα ασχοληθούμε με τη δημιουργία γραφικών καθώς και την εφαρμογή της θεωρίας στην οπoία βασίζεται η επεξεργασία τους, με τη βοήθεια της Matlab.