Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής & Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων Εργαστήριο Τηλεπικοινωνιακών Συστημάτων 1 η Εργαστηριακή Άσκηση Εισαγωγή στο MATLAB Μάθημα: Εισαγωγή στις Τηλεπικοινωνίες Εξάμηνο: 3 ο Κωδικός Μαθήματος: ΨΣ-301 Ακαδημαϊκό Έτος: 2018-2019 Διδάσκων: Αθανάσιος Κανάτας
Στόχος: Η εργαστηριακή άσκηση έχει ως στόχο τη γνωριμία και την εξοικείωση με το προγραμματιστικό περιβάλλον του MATLAB (MatrixLaboratory). Αρχικά, θα αναφερθούμε σε σύμβολα, σταθερές και μεταβλητές που χρησιμοποιεί το MATLAB. Στη συνέχεια, θα μιλήσουμε για τις βασικές μαθηματικές και προπαρασκευασμένες συναρτήσεις και για τη χρήση μιγαδικών και τυχαίων αριθμών. Tέλος, θα αναφερθούμε στη δημιουργία γραφημάτων με το MATLAB. Επιδιωκόμενα Αποτελέσματα: Ύστερα από την ολοκλήρωση αυτής της εργαστηριακής άσκησης θα μπορείτε να: - διαχειρίζεστε πίνακες και να κάνετε υπολογισμούς στο MATLAB - χρησιμοποιείτε έτοιμες συναρτήσεις και να φτιάχνετε δικές σας - χρησιμοποιείτε και να επεξεργάζεστε μιγαδικούς και τυχαίους αριθμούς - απεικονίζετε συναρτήσεις και άλλα μεγέθη στο MATLAB. Περιγραφή περιεχομένου: 1. Εισαγωγικά Θέματα στο MATLAB Εισαγωγή στο προγραμματιστικό περιβάλλον, σε βασικά σύμβολα και σταθερές, και στις βασικές μεταβλητές του MATLAB. 2. Βασικές Μαθηματικές & Προπαρασκευασμένες Συναρτήσεις Παρουσίαση και χρήση βασικών μαθηματικών & προπαρασκευασμένων συναρτήσεων του MATLAB. 3. Μιγαδικοί Αριθμοί & Τυχαίοι Αριθμοί Δημιουργία και επεξεργασία μιγαδικών και τυχαίων αριθμών στο MATLAB. 4. Γραφήματα Σχεδίαση γραφημάτων και συναρτήσεων με διάφορες μεθόδους στο MATLAB. Απαιτούμενη προετοιμασία: Βασικές γνώσεις μαθηματικών και προγραμματισμού Μελέτη της 1 ης σειράς διαφανειών του μαθήματος, ή/και του 1 ου κεφαλαίου του βιβλίου του μαθήματος «Εισαγωγή στις Τηλεπικοινωνίες», Αθανάσιος Κανάτας, 2 η Έκδοση, 2018, Εκδόσεις Τζιόλα Α. Κανάτας Καθηγητής Πανεπιστημίου Πειραιώς 2
1. Εισαγωγικά Θέματα στο MATLAB Περιβάλλον του MATLAB Το προγραμματιστικό περιβάλλον του MATLAB περιλαμβάνει συνήθως τα παρακάτω παράθυρα: - Παράθυρο Εντολών (Command Window): Σε αυτό το παράθυρο εκτελούμε απλές εντολές. Η εμφάνιση του συμβόλου >> δηλώνει ότι μπορούμε να γράψουμε και να εκτελέσουμε εντολές. Διαφορετικά, δεν μπορούμε επειδή συνήθως γίνεται επεξεργασία των προηγούμενων εντολών. Για να εκτελεσθεί η εντολή που γράψαμε, πατάμε Enter. Για να αλλάξουμε γραμμή χωρίς να εκτελεσθεί η εντολή που γράψαμε, κρατάμε πατημένο το Shift και πατάμε Enter. - Χώρος Εργασίας (Workspace): Σε αυτό το παράθυρο αποθηκεύονται όλες οι μεταβλητές που έχουμε δημιουργήσει. - Ιστορικό Εντολών (Command History): Εδώ αποθηκεύονται οι εντολές που εκτελούμε στο παράθυρο εντολών. - Ισχύων Φάκελος (Current Folder): Δείχνει το φάκελο directory που βλέπει το MATLAB. Για να κλείσουμε το MATLAB χωρίς να χρησιμοποιήσουμε το εικονίδιο κλεισίματος, εκτελούμε την εντολή quit ή την εντολή exit. Για να εισάγουμε σχόλια στο MATLAB, χρησιμοποιούμε το σύμβολο %. Ό,τι γράφεται δεξιά του συμβόλου %, θεωρείται ως σχόλιο από το MATLAB. Περισσότερα για τα σχόλια θα αναφέρουμε στη συνέχεια. Σε περίπτωση που χρειαζόμαστε βοήθεια για κάποια εντολή, μπορούμε (μεταξύ των άλλων) να χρησιμοποιήσουμε την εντολή help. Εκτελέστε την εντολή help exit. Στη συνέχεια εκτελέστε την εντολή help. Για να φτιάξουμε δικές μας συναρτήσεις και αρχεία κώδικα στο MATLAB, πατάμε στο εικονίδιο που λέει New Script. Τα αρχεία που δημιουργούνται έχουν κατάληξη.m. Η σύνταξη που χρησιμοποιούμε για συναρτήσεις είναι η εξής: function [y1,y2,,yk] = name(x1,x2,,xk) ΠΡΟΣΟΧΗ!!!: Όταν αποθηκεύουμε αρχεία προσέχουμε ώστε το όνομα του αρχείου να μην είναι ίδιο με κάποια συνάρτηση του MATLAB. Επίσης για τις συναρτήσεις, το όνομα του αρχείου πρέπει να είναι το ίδιο με το όνομα της συνάρτησης (name). Για να συνεχίσουμε μια εντολή στην επόμενη γραμμή, γράφουμε στο τέλος. Με τη χρήση του παραπάνω συμβόλου, το MATLAB θεωρεί ότι η εντολή συνεχίζεται στην επόμενη γραμμή. Α. Κανάτας Καθηγητής Πανεπιστημίου Πειραιώς 3
Τελεστές Πράξεων + Πρόσθεση - Αφαίρεση * Πολλαπλασιασμός / Διαίρεση \ Αριστερή Διαίρεση ^ Ύψωση σε Δύναμη Σημείωση: Όταν εκτελούμε εντολές στο MATLAB και δεν δηλώνουμε μεταβλητή, τα αποτελέσματα αποθηκεύονται αυτόματα στη μεταβλητή ans. Σε περίπτωση που εκτελέσουμε πολλές εντολές ταυτόχρονα, το αποτέλεσμα της τελευταίας εντολής θα αποθηκευτεί στη μεταβλητή ans. Επίσης, όταν χρησιμοποιούμε ερωτηματικό στο τέλος των εντολών, τα αποτελέσματα δεν εμφανίζονται στο παράθυρο εντολών. Εκτελέστε στο MATLAB τις εντολές 2/4 και 2\4. Τι παρατηρείτε; Ποια η λειτουργία της αριστερής διαίρεσης; Τελεστές Σύγκρισης < Μικρότερο <= Μικρότερο ή ίσο > Μεγαλύτερο >= Μεγαλύτερο ή ίσο ~= Διάφορο == Ίσο Οι παραπάνω τελεστές επιστρέφουν 0 ή 1. Επιστρέφουν 0 αν η πρόταση είναι ψευδής (false) και 1 αν η πρόταση είναι αληθής (true). Επίσης, αντί για το == μπορούμε να χρησιμοποιήσουμε και τις εντολές isequal και eq. Λογικοί Τελεστές &, and() Λογικό AND, or() Λογικό OR ~, not() Λογικό NOT xor() Λογικό Exclusive OR all() Αληθής αν ισχύουν όλες οι συνθήκες any() Αληθής αν ισχύει έστω μία από τις συνθήκες Α. Κανάτας Καθηγητής Πανεπιστημίου Πειραιώς 4
Για βοήθεια σχετικά με αυτούς τους τελεστές, help relop (relational operators). Δομές Επιλογής & Επανάληψης if condition_1 commands elseif condition_2 commands else commands end switch variable case value_1 commands case value_2 commands otherwise commands end for counter = vector commands end while condition commands end Ορισμοί Αριθμών Οι αριθμοί στο MATLAB ορίζονται ως συνήθως. Παρόλα αυτά, υπάρχουν διάφορες τροποποιήσεις. Για να ορίσουμε δεκαδικούς αριθμούς στο MATLAB χρησιμοποιούμε την τελεία. Για παράδειγμα, 1.2. Σε περίπτωση που το ακέραιο μέρος του αριθμού είναι 0, αυτό μπορεί να παραληφθεί. Για παράδειγμα, ο αριθμός 0.6 μπορεί να οριστεί γράφοντας 0.6 ή παραλείποντας το 0 και γράφοντας απλά.6. Στα αποτελέσματα που εμφανίζονται στο παράθυρο εντολών, πολλές φορές θα δούμε ότι οι αριθμοί εμφανίζονται με χρήση του e. Το e ορίζει αριθμούς της μορφής y*10 x, δηλαδή πολλαπλασιάζει τον αριθμό y με το αριθμό 10 υψωμένο στη δύναμη x. Εκτελέστε την εντολή 5e2. Τι παρατηρείτε; Αν θέλαμε να ορίσουμε τον πολλαπλασιασμό του 3 με την 5 η δύναμη του 10 με τη χρήση του e, ποια εντολή θα χρησιμοποιούσαμε; Α. Κανάτας Καθηγητής Πανεπιστημίου Πειραιώς 5
Σταθερές pi Η σταθερά π i Η φανταστική μονάδα i j Η φανταστική μονάδα j inf, -inf ± NaN realmax realmin eps ( ), μπορεί να οριστεί και ως Inf Αόριστος αριθμός (Not a Number), μπορεί να οριστεί και ως nan. Ο μεγαλύτερος δεκαδικός αριθμός που μπορεί να οριστεί. Ο μικρότερος δεκαδικός αριθμός που μπορεί να οριστεί. Η σχετική ακρίβεια που έχουμε ανάμεσα σε δεκαδικούς αριθμούς. Προσοχή!!!: Δεν ορίζουμε μεταβλητές με το όνομα των σταθερών που υπάρχουν στο MATLAB. Σε περίπτωση που το κάνουμε, το όνομα αντιστοιχεί στη μεταβλητή που έχουμε ορίσει και όχι στη σταθερά. Σε περίπτωση που θέλουμε να ελέγξουμε αν κάποιος αριθμός είναι ( ± ) ή αόριστος, μπορούμε να χρησιμοποιήσουμε τις εντολές isinf και isnan. Αν ένας αριθμός δεν εμπίπτει στις παραπάνω δύο περιπτώσεις, τότε είναι πεπερασμένος (finite). Αυτό ελέγχεται με το isfinite. Αναπαράσταση Αριθμών Χρησιμοποιώντας την εντολή format μπορούμε να διαλέξουμε το είδος της αναπαράστασης των αριθμών και των αποτελεσμάτων που εμφανίζονται στο παράθυρο εντολών. Εκτελέστε την εντολή format long και εμφανίστε τον αριθμό π. Στη συνέχεια γυρίστε ξανά σε format short και εμφανίστε πάλι τον π. Τι παρατηρείτε; Μεταβλητές-Πίνακες Ο βασικός τύπος μεταβλητών στο MATLAB είναι οι πίνακες. Δηλαδή, το MATLAB «βλέπει» όλους τους τύπους δεδομένων σαν πίνακες. Για να δούμε όλους τους τύπους δεδομένων στο MATLAB, πληκτρολογούμε help datatypes. Για να ορίσουμε αριθμούς μπορούμε να γράψουμε, για παράδειγμα, a = 10. Α. Κανάτας Καθηγητής Πανεπιστημίου Πειραιώς 6
Για να ορίσουμε πίνακες γράφουμε: Α = [a11,a12; a21 a22]. Το κόμμα ή το κενό ορίζουν στοιχεία της ίδιας γραμμής, ενώ το ερωτηματικό χρησιμοποιείται για να αλλάξουμε γραμμή. Τα στοιχεία του πίνακα μπορεί να είναι τα ίδια πίνακες. Α) Δημιουργήστε τους παρακάτω πίνακες και την παρακάτω μεταβλητή. 0 1 0 2 A = 3 5 2, B = 2 0 1, 0 C =, d = 4 0 1 1 1 Β) Η εντολή size επιστρέφει τις διαστάσεις ενός πίνακα. Χρησιμοποιήστε την για να βρείτε τις διαστάσεις του πίνακα C και της μεταβλητής d. Τι παρατηρείτε για την μεταβλητή d; Γ) Ποια η διαφορά της εντολής length από την εντολή size; Δώστε παραδείγματα. Για να διαλέξουμε ένα στοιχείο ενός πίνακα γράφουμε, για παράδειγμα, Α(3,2). Για να επιλέξουμε ολόκληρη στήλη ή ολόκληρη γραμμή χρησιμοποιούμε το σύμβολο :, π.χ. Α(:,2). Επίσης, για να δηλώσουμε το τελευταίο στοιχείο σε μια στήλη ή γραμμή ενός πίνακα χρησιμοποιούμε το end. Επίσης, το σύμβολο : χρησιμοποιείται και για εισαγωγή βήματος για επαναλήψεις τύπου for. Για παράδειγμα, το 1:2:5 σημαίνει από το 1 έως το 5 με βήμα 2. Αυτή η σύνταξη μπορεί να χρησιμοποιηθεί και για επιλογή στοιχείων. Α) Βρείτε το στοιχείο (2,1) και την 3 η γραμμή του πίνακα B. Β) Δημιουργήστε τον πίνακα D, ο οποίος αποτελείται από τις δύο τελευταίες στήλες του πίνακα Β και τον πίνακα C. Να χρησιμοποιήσετε αποκλειστικά το όρισμα end για την επιλογή της προτελευταίας και της τελευταίας στήλης του πίνακα B. Για να διαγράψουμε κάποια γραμμή ή κάποια στήλη του πίνακα που έχουμε δημιουργήσει χρησιμοποιούμε το [], εφόσον επιλέξουμε την αντίστοιχη γραμμή ή στήλη. Π.χ. Α(1,:) = []. Για να διαγράψουμε όλο τον πίνακα (ανεξαρτήτως διάστασης), χρησιμοποιούμε την εντολή clear. Για παράδειγμα, αν θέλουμε να διαγράψουμε τον πίνακα Α, πληκτρολογούμε clear A. Πράξεις Πινάκων Στο MATLAB μπορούν να γίνουν οι πράξεις πινάκων κανονικά χρησιμοποιώντας τους τελεστές πράξεων, πάντα σύμφωνα με τους περιορισμούς που ισχύουν για τις διαστάσεις των πινάκων. Α. Κανάτας Καθηγητής Πανεπιστημίου Πειραιώς 7
(Για περισσότερες λεπτομέρειες για τον τελεστή \ πατήστε help \). Οι διαιρέσεις γίνονται με πολλαπλασιασμό με τον αντίστροφο, όπως φαίνεται παρακάτω. A B A B A inv B 1 / = = ( ) 1 A \ B = A B = inv( A) B Πολλές φορές όμως στις προσομοιώσεις που υλοποιούμε, θέλουμε να κάνουμε πράξεις στοιχείο με στοιχείο. Αυτό επιτυγχάνεται με τη χρήση της τελείας πριν τον τελεστή πράξης. Για την πρόσθεση και την αφαίρεση, όπως είναι προφανές, το σύμβολο της τελείας δεν είναι απαραίτητο. Εκτελέστε στο παράθυρο εντολών τα εξής: A = ones(4); B = A;. A) Ποια είναι η λειτουργία της εντολής ones; B) Υλοποιήστε κανονικό πολλαπλασιασμό πινάκων και πολλαπλασιασμό στοιχείο με στοιχείο. Τι παρατηρείτε; Γ) Πληκτρολογήστε help ones. Ποιες δύο παρόμοιες εντολές εμφανίζει η βοήθεια του ones; Ποια η λειτουργία των δύο αυτών εντολών; Δ) Πληκτρολογήστε τις εντολές clear και clc. Ποια η λειτουργία της clc; Τύποι Πινάκων inv(), ή ^(-1) Αντίστροφος Πίνακας transpose() Ανάστροφος Πίνακας zeros() Πίνακας με μηδενικά ones() Πίνακες με όλα τα στοιχεία ίσα με 1 eye() Μοναδιαίος πίνακας inf() Πίνακας με στοιχεία το άπειρο nan() Πίνακας με στοιχεία αόριστους αριθμούς magic() Μαγικός πίνακας hadamard() Πίνακας Hadamard tril() Μετατροπή σε άνω τριγωνικό πίνακα triu() Μετατροπή σε κάτω τριγωνικό πίνακα toeplitz() Μετατροπή σε πίνακα Toeplitz hankel() Μετατροπή σε πίνακα Hankel Α. Κανάτας Καθηγητής Πανεπιστημίου Πειραιώς 8
Α) Δημιουργήστε έναν τετραγωνικό πίνακα Α, του οποίου όλα τα στοιχεία είναι ίσα με 5. Β) Πολλαπλασιάστε (όχι στοιχείο-στοιχείο) τον πίνακα Α με ένα μοναδιαίο αντίστοιχων διαστάσεων. Κάντε το ίδιο για έναν πίνακα, του οποίου όλα τα στοιχεία είναι ίσα με 1. Ποια είναι η επίδραση των παραπάνω πολλαπλασιασμών; Γ) Βρείτε τον αντίστροφο του παραπάνω πίνακα με τη χρήση της ^(-1) και της.^(-1). Είναι αναμενόμενα τα αποτελέσματα; Δ) Η εντολή sum χρησιμοποιείται για τον υπολογισμό του αθροίσματος των στοιχείων ενός πίνακα. Χρησιμοποιήστε τη για να αποδείξετε ότι ο πίνακας magic(5) είναι πράγματι μαγικός. Α. Κανάτας Καθηγητής Πανεπιστημίου Πειραιώς 9
2. Βασικές Μαθηματικές & Προπαρασκευασμένες Συναρτήσεις Συναρτήσεις Πινάκων det() diag() abs() norm() eig() rank() sum() cumsum() prod() cumprod() diff() max() min() sort() Η ορίζουσα του πίνακα Επιστρέφει τα στοιχεία της κύριας διαγωνίου Απόλυτη τιμή των στοιχείων του πίνακα Η νόρμα του πίνακα Επιστρέφει τις ιδιοτιμές και τα ιδιοδιανύσματα Η τάξη του πίνακα Άθροισμα στοιχείων ενός πίνακα Σωρευτικό άθροισμα (το επόμενο με τα προηγούμενα) Πολλαπλασιασμός των στοιχείων Σωρευτικός πολλαπλασιασμός Αφαίρεση στοιχείου από το αμέσως επόμενο Εύρεση του μεγαλύτερου στοιχείου Εύρεση του μικρότερου στοιχείου Ταξινόμηση πίνακα Στις παραπάνω συναρτήσεις μπορούμε να συναντήσουμε διαφορετικούς τρόπους σύνταξης ανάλογα με το αποτέλεσμα που θέλουμε. Μέσω της βοήθειας του MATLAB μπορούμε να δούμε τη σύνταξη των εντολών. Α) Δημιουργήστε έναν διαγώνιο πίνακα με στοιχεία στην κύρια διαγώνιο τα 1,2,3,4,5. Β) Βρείτε τη νόρμα και την ορίζουσα του πίνακα. Γ) Δημιουργήστε τον παρακάτω πίνακα και βρείτε το άθροισμα των στοιχείων της 2 ης στήλης, και το άθροισμα των στοιχείων των γραμμών του. Στη συνέχεια βρείτε το συνολικό άθροισμα όλων των στοιχείων του. 3 6 4 6 4 1 5 10 A = 4 8 7 5 2 1 4 10 Δ) Εργαστείτε παρόμοια για το γινόμενο των αντίστοιχων στοιχείων. Ε) Βρείτε το μέγιστο και το ελάχιστο στοιχείο του πίνακα A, καθώς και τη θέση τους. ΣΤ) Ταξινομήστε την πρώτη γραμμή του πίνακα κατά φθίνουσα σειρά. Α. Κανάτας Καθηγητής Πανεπιστημίου Πειραιώς 10
Βασικές Μαθηματικές Συναρτήσεις sqrt() Τετραγωνική ρίζα nthroot() Ν-ωστή πραγματική ρίζα για πραγματικούς αριθμούς exp() Εκθετική συνάρτηση log() Φυσικός λογάριθμος (με βάση το e) log2() Λογάριθμος με βάση το 2 log10() Λογάριθμος με βάση το 10 factorial() Παραγοντική συνάρτηση round() Στρογγυλοποίηση προς τον κοντινότερο ακέραιο ceil() Στρογγυλοποίηση προς τον μεγαλύτερο κοντινότερο ακέραιο προς το («προς τα πάνω») floor() Στρογγυλοποίηση προς τον μικρότερο κοντινότερο ακέραιο προς το - («προς τα κάτω») fix() Στρογγυλοποίηση προς τον κοντινότερο ακέραιο προς το 0 («προς τα κάτω» ή «προς τα πάνω» ανάλογα με το πρόσημο) mod() Επιστρέφει το πηλίκο της διαίρεσης rem() Επιστρέφει το υπόλοιπο της διαίρεσης Το MATLAB έχει έτοιμες συναρτήσεις για τους λογάριθμους με βάση το 2, το e και το 10. Φτιάξτε μια δική σας συνάρτηση που να υπολογίζει τον λογάριθμο οποιασδήποτε βάσης χρησιμοποιώντας τον παρακάτω τύπο. log b ( x) log = log k k ( x) ( b) Βασικές Τριγωνομετρικές Συναρτήσεις sin() Ημίτονο asin() Αντίστροφο ημίτονο cos() Συνημίτονο acos() Αντίστροφο συνημίτονο tan() Εφαπτομένη atan() Αντίστροφη εφαπτομένη cot() Συνεφαπτομένη acot() Αντίστροφη συνεφαπτομένη sinh() Υπερβολικό ημίτονο asinh() Αντίστροφο υπερβολικό ημίτονο cosh() Υπερβολικό συνημίτονο acosh() Αντίστροφο υπερβολικό συνημίτονο tanh() Υπερβολική εφαπτομένη atanh() Αντίστροφη υπερβολική εφαπτομένη coth() Υπερβολική συνεφαπτομένη acosh() Αντίστροφη υπερβολική συνεφαπτομένη Α. Κανάτας Καθηγητής Πανεπιστημίου Πειραιώς 11
3. Μιγαδικοί Αριθμοί & Τυχαίοι Αριθμοί Μιγαδικοί Αριθμοί Για να ορίσουμε έναν μιγαδικό αριθμό στο MATLAB γράφουμε: C = a + b*i ή C = a + b*j, ή αλλιώς χρησιμοποιώντας την εντολή complex(a,b). real() Το πραγματικό μέρος ενός μιγαδικού imag() Το φανταστικό μέρος ενός μιγαδικού abs() Το μέτρο ενός μιγαδικού angle() Η φάση/γωνία ενός μιγαδικού isreal() Επιστρέφει αληθής αν ο αριθμός είναι πραγματικός conj() Ο συζυγής ενός μιγαδικού. Ο ανάστροφος ενός μιγαδικού Ο αναστροφοσυζυγής ενός μιγαδικού Για τους πραγματικούς αριθμούς ο ανάστροφος μπορεί να υπολογιστεί είτε με., είτε με, καθώς επίσης και με την εντολή transpose, όπως είδαμε παραπάνω. Α) Αρχικά σβήστε όλες τις μεταβλητές και «καθαρίστε» την οθόνη εντολών. Στη συνέχεια δημιουργήστε τον μιγαδικό αριθμό C = 2+4j. Β) Βρείτε το πραγματικό και το φανταστικό μέρος του C. Ονομάστε τα a και b. Γ) Βρείτε το πλάτος R του δοσμένου αριθμού με τη χρήση της εντολής abs (R1) και με τον παρακάτω τύπο (R2). 2 2 R = C = a + b Στη συνέχεια να συγκρίνετε τα δύο μεγέθη που βρήκατε με την εντολή isequal. Τι παρατηρείτε; Δ) Χρησιμοποιήστε τον παρακάτω τύπο (δίνεται στο βιβλίο σας) για να βρείτε τη φάση του μιγαδικού αριθμού. 1 b tan a 0 a b = + a b a 1 tan a 0, b 0 1 tan a 0, b 0 Για να υλοποιήσετε στο MATLAB τον παραπάνω τύπο, δημιουργήστε δική σας συνάρτηση που να υπολογίζει τη φάση. Τι τροποποιήσεις πρέπει να κάνετε έτσι ώστε να δέχεται διανύσματα η συνάρτησή σας; Α. Κανάτας Καθηγητής Πανεπιστημίου Πειραιώς 12
Ε) Χρησιμοποιήστε την εντολή angle για να βρείτε τη φάση του μιγαδικού. Υπάρχει διαφορά στον τρόπο υπολογισμού της φάσης ανάμεσα στην εντολή angle και στη συνάρτηση που φτιάξατε; Τυχαίοι Αριθμοί & Βασικές Συναρτήσεις Στατιστικής Στον παρακάτω πίνακα περιλαμβάνονται έτοιμες συναρτήσεις για παραγωγή ψευδοτυχαίων αριθμών. rand() Ομοιόμορφα κατανεμημένοι ψευδοτυχαίοι αριθμοί randn() Κανονικά κατανεμημένοι ψευδοτυχαίοι αριθμοί randi() Ομοιόμορφα κατανεμημένοι ψευδοτυχαίοι ακέραιοι randperm() Τυχαία μετάθεση ακέραιων αριθμών συγκεκριμένου διαστήματος Στον επόμενο πίνακα περιλαμβάνονται εντολές στατιστικών μεγεθών. mean() Μέση τιμή του δείγματος median() Η μεσαία τιμή του δείγματος std() Η τυπική απόκλιση του δείγματος var() Η διακύμανση του δείγματος cov() Η συν-διακύμανση του δείγματος corrcoef() Οι συντελεστές συσχέτισης mode() Η τιμή που συναντάται τις περισσότερες φορές στο δείγμα Α) Προσομοιώστε στο MATLAB τη ρίψη ενός ζαριού με έξι πλευρές, δηλαδή οι τιμές που θα προκύπτουν θα είναι ακέραιες στο διάστημα [1-6]. Υπενθυμίζεται ότι η κάθε πλευρά έχει ίση πιθανότητα με τις υπόλοιπες να εμφανιστεί. Η προσομοίωση να υλοποιείται για 1000 ρίψεις και να γίνεται χωρίς τη χρήση επαναληπτικής δομής. Β) Η παραπάνω προσομοίωση με πόσους τρόπους μπορεί να γίνει, σύμφωνα με τον πίνακα εντολών που σας δόθηκε; Γ) Αντί για την εντολή round χρησιμοποιήστε τις εντολές floor και ceil, και ξανατρέξτε την προσομοίωση. Στην προσομοίωση με floor υπάρχει ο αριθμός 6 και αντίστοιχα σε αυτήν με το ceil υπάρχει ο αριθμός 1; Τι παρατηρείται εάν υπολογίσετε τη μέση τιμή της κάθε προσομοίωσης; Α. Κανάτας Καθηγητής Πανεπιστημίου Πειραιώς 13
4. Γραφήματα Εισαγωγή στα Γραφήματα Ο συνήθης τρόπος για να δημιουργήσουμε γραφήματα στο MATLAB είναι με την εντολή plot(x,y), όπου το x αντιστοιχεί στον άξονα x και το y στον άξονα y. Στην ίδια εντολή plot μπορούμε να βάλουμε και παραπάνω από μία συναρτήσεις με τη σύνταξη plot(x1,y1,x2,y2, ). Έστω ότι θέλουμε να σχεδιάσουμε μια συνάρτηση f(x) = y, όπου το x ανήκει στο διάστημα [a,b]. Αρχικά, θα φτιάξουμε ένα διάνυσμα x στο διάστημα [a,b] και στη συνέχεια τροποποιώντας κατάλληλα το x, θα υπολογίσουμε την τιμή του διανύσματος y. Προσοχή!!!: Ο αριθμός των στοιχείων (length) των δύο διανυσμάτων είναι ίσος. Παράδειγμα: Έστω ότι θέλουμε να σχεδιάσουμε τη συνάρτηση f(x) = 3x + 5 ορισμένη στο διάστημα [-5,5]. x = -5:0.1:5; f = 3*x + 5; plot(x,y) Μια εντολή για να χωρίζουμε ένα συγκεκριμένο διάστημα σε ν ίσα διαστήματα είναι η εντολή linspace. Σχεδιάστε τη συνάρτηση f (x) = x 2 στο διάστημα [-10,10] με διανύσματα μήκους 5,10 και 100 στοιχείων. Στη συνέχεια παραθέτουμε πίνακα με διάφορες τροποποιήσεις στη σχεδίαση των γραφημάτων. Χρώμα Σχεδίασης Τύπος Σημείων Τύπος Γραμμής b (μπλε) g (πράσινο) r (κόκκινο) c (κυανό) m (μοβ) y (κίτρινο) k (μαύρο) w (άσπρο). (τελεία) ο (κύκλος) x (x) + (σταυρός) * (αστερίσκος) s (τετράγωνο) d (ρόμβος) ν (τρίγωνο «κάτω») ^ (τρίγωνο «πάνω») < (τρίγωνο «αριστερά») > (τρίγωνο «δεξιά») p (πεντάγωνο) h (εξάγωνο) - (συνεχής) : (διάστικτη) -. (γραμμή & τελεία) -- (διακεκομμένη) Α. Κανάτας Καθηγητής Πανεπιστημίου Πειραιώς 14
Σχεδιάστε τις συναρτήσεις f ( x) = xcos( x), g( x) = xsin( x) και 2 h( x) = x cos( x) με x [ 2,2 ], στο ίδιο γράφημα με και χωρίς τη χρήση της εντολής hold on. Χρησιμοποιήστε διαφορετικά χρώματα και τύπους σημείων και γραμμής για τη σχεδίαση των συναρτήσεων. Για να αλλάξουμε το πλάτος/πάχος της γραμμής ή συμβόλου της σχεδίασης, χρησιμοποιούμε την plot(x,y, LineWidth,n), όπου n: αριθμός που αντιστοιχεί στο πλάτος της γραμμής. Η τυπική τιμή του πλάτους της γραμμής είναι 0.5. Πηγαίνετε στη βοήθεια του plot. Στο τέλος του κειμένου της βοήθειας έχει ένα παράδειγμα με σημάνσεις (markers). Εξηγήστε τι κάνει η κάθε εντολή και φτιάξτε ένα γράφημα της επιλογής σας με markers σχήματος κύκλου, εξωτερικού χρώματος μαύρου και εσωτερικού χρώματος [1, 1,1]. Το μέγεθος των σημάνσεων να είναι ίσο με 9. Άλλες εντολές που είναι χρήσιμες, όταν δημιουργούμε γραφήματα στο MATLAB, είναι οι παρακάτω. grid title xlabel ylabel legend gtext text axis xlim ylim Εισαγωγή πλέγματος στη γραφική παράσταση Εισαγωγή τίτλου στη γραφική παράσταση Ορισμός ονομασίας του άξονα x Ορισμός ονομασίας του άξονα y Εισαγωγή ονομασίας στις συναρτήσεις του γραφήματος Εισαγωγή κειμένου σε σημείο επιλεγμένο με το ποντίκι Εισαγωγή κειμένου σε συγκεκριμένο σημείο Τροποποίηση των αξόνων Ορισμός ορίων του άξονα x Ορισμός ορίων του άξονα y Σε περίπτωση που θέλουμε να φτιάξουμε πολλά γραφήματα σε διαφορετικά παράθυρα χρησιμοποιούμε την εντολή figure. Α) Πληκτρολογήστε το παρακάτω απόσπασμα. Τι παρατηρείτε; Β) Γράψτε την εντολή close all. for k = 1:4 figure(k) end Γ) Δημιουργήστε δύο γραφικές παραστάσεις της αρεσκείας σας σε διαφορετικά παράθυρα. Στις συγκεκριμένες παραστάσεις να γίνει εισαγωγή πλέγματος και να ονομαστούν η γραφική Α. Κανάτας Καθηγητής Πανεπιστημίου Πειραιώς 15
παράσταση, οι άξονες και οι συναρτήσεις. Επίσης, στην πρώτη γραφική παράσταση να γίνεται εισαγωγή κειμένου με την εντολή gtext, και στη δεύτερη να γίνεται εισαγωγή κειμένου με την εντολή text. Επίσης, με την εντολή subplot μπορεί να επιτευχθεί η απεικόνιση πολλών γραφημάτων στο ίδιο παράθυρο. Χωρίστε το παράθυρο γραφήματος σε τέσσερα υποπαράθυρα με την εντολή subplot. Στη συνέχεια, στο 1 ο υποπαράθυρο σχεδιάστε τη συνάρτηση λάθους (error function) και στο 4 ο υποπαράθυρο την αντίστροφή της. Οι γραφικές παραστάσεις να σχεδιαστούν στο διάστημα [0,2]. Η συνάρτηση λάθους δίνεται στο MATLAB από την εντολή erf, και η αντίστροφή της δίνεται από την εντολή erfc. Σχεδίαση Διακριτών Συναρτήσεων Συνήθως, για να σχεδιάσουμε διακριτές συναρτήσεις στο MATLAB, έχουμε δύο επιλογές. - Με χρήση της εντολής plot με σχεδίαση σημείων και όχι γραμμής. - Με την εντολή stem. Σχεδιάστε στο ίδιο παράθυρο με τη χρήση subplot τη διακριτή συνάρτηση του ημιτόνου στο διάστημα [-4π,4π] με τους δύο παραπάνω τρόπους. Σχεδίαση σε Πολικές Συντεταγμένες Για τη σχεδίαση σε πολικές συντεταγμένες χρησιμοποιούμε την εντολή polar. Α) Δημιουργήστε ένα διάνυσμα με 4 τυχαίους μιγαδικούς αριθμούς, όπου το πραγματικό και το φανταστικό μέρος τους ακολουθούν ομοιόμορφη κατανομή στο διάστημα (0,1). Β) Απεικονίστε το πλάτος και τη φάση των παραπάνω αριθμών σε πολικό σύστημα συντεταγμένων. Γ) Γιατί οι τυχαίοι μιγαδικοί αριθμοί εμφανίζονται όλοι στο πρώτο τεταρτημόριο; Α. Κανάτας Καθηγητής Πανεπιστημίου Πειραιώς 16