Τομέας Γεωδαισίας και Τοπογραφίας 3ο Εξάμηνο ΑΠΘ/ΤΑΤΜ Τομέας Γεωδαισίας και Τοπογραφίας 3ο Εξάμηνο Σήματα και Φασματικές Μέθοδοι στη Γεωπληροφορική Signals and Spectral Methods in Geoinformatics Ακαδημαϊκή Χρονιά: 2014 – 2015 Πρόγραμμα: Τετάρτη 4 – 8 μ.μ. Διδάσκοντες: A. Δερμάνης, Η.Ν. Τζιαβός, Γ. Βέργος Ιστοσελίδες μαθήματος: http://olimpia.topo.auth.gr/courses/index.html http://web.auth.gr/e-topo/
ΕΙΣΑΓΩΓΗ ΣΤΟ ΛΟΓΙΣΜΙΚΟ MATLAB
ΕΙΣΑΓΩΓΗ ΣΤΟ ΛΟΓΙΣΜΙΚΟ MATLAB
ΕΙΣΑΓΩΓΗ ΣΤΟ ΛΟΓΙΣΜΙΚΟ MATLAB
ΕΙΣΑΓΩΓΗ ΣΤΟ ΛΟΓΙΣΜΙΚΟ MATLAB (Τι είναι το MATLAB) Είναι ένα πολύ ικανό, αποτελεσματικό και εύκολο εργαλείο που συνδυάζει πολύπλοκους υπολογισμούς, γραφικά προσομοιώσεις και προγραμματισμό στο ίδιο περιβάλλον. Παίρνει το όνομά του από τις λέξεις MATrix LABoratory
ΕΙΣΑΓΩΓΗ ΣΤΟ ΛΟΓΙΣΜΙΚΟ MATLAB
ΕΙΣΑΓΩΓΗ ΣΤΟ ΛΟΓΙΣΜΙΚΟ MATLAB (ΙΣΤΟΡΙΑ) Το MATLAB αποτελεί τη φυσική εξέλιξη προγραμμάτων σε FORTRAN για την επίλυση γραμμικών προβλημάτων (πρόγραμμα LINPACK) και προβλημάτων εύρεσης ιδιοτιμών (EISPACK). Αναπτύχθηκε αρχικά από τον Cleve Moler τη δεκαετία του 1970. Στις αρχές του ’80 ο ίδιος ο Moler διαπίστωσε την ανάγκη ενός λογισμικού που θα πραγματοποιεί τις ίδιες εργασίες χωρίς όμως να είναι αναγκασμένοι οι φοιτητές του να γνωρίζουν FORTRAN. Επίσης διαπιστώθηκε η ανάγκη ύπαρξης γραφικού περιβάλλοντος και σχεδιασμού διαγραμμάτων.
ΕΙΣΑΓΩΓΗ ΣΤΟ ΛΟΓΙΣΜΙΚΟ MATLAB (ΙΣΤΟΡΙΑ) Τη δεκαετία του 1980 το πρόγραμμα γράφτηκε ξανά σε γλώσσα C με περισσότερες λειτουργίες, βιβλιοθήκες, δυνατότητα γραφικών και απεικονίσεων. Το 1984 δημιουργήθηκε η εταιρεία MathWorks Inc η οποία είναι υπεύθυνη μέχρι σήμερα για τη διανομή, ανάπτυξη, υποστήριξη και πώληση του MATLAB http://www.mathworks.com
ΕΙΣΑΓΩΓΗ ΣΤΟ ΛΟΓΙΣΜΙΚΟ MATLAB
ΕΙΣΑΓΩΓΗ ΣΤΟ ΛΟΓΙΣΜΙΚΟ MATLAB (ΠΛΕΟΝΕΚΤΗΜΑΤΑ)
ΕΙΣΑΓΩΓΗ ΣΤΟ ΛΟΓΙΣΜΙΚΟ MATLAB (ΠΛΕΟΝΕΚΤΗΜΑΤΑ) Διαθέτει πολύ μεγάλη βιβλιοθήκη εντολών επιτρέποντας την αντικατάσταση δεκάδων ή εκατοντάδων γραμμών κώδικα σε άλλες γλώσσες (π.χ. FORTRAN) με μία απλή εντολή (για παράδειγμα fft).
ΕΙΣΑΓΩΓΗ ΣΤΟ ΛΟΓΙΣΜΙΚΟ MATLAB
ΕΙΣΑΓΩΓΗ ΣΤΟ ΛΟΓΙΣΜΙΚΟ MATLAB (MEIOΝΕΚΤΗΜΑΤΑ) Το MATLAB είναι μια μεταφραζόμενη προγραμματιστική γλώσσα που απαιτεί τον μεταφραστή (το MATLAB δηλαδή) για να εκτελεστεί κάποιο πρόγραμμα. Δεν παράγει εκτελέσιμα αρχεία (π.χ. EXE). Σε γενικές γραμμές είναι πιο αργό από τις γλώσσες προγραμματισμού που έχουν μεταγλωττιστή. Το MATLAB είναι σχεδιασμένο για επιστημονι- κούς υπολογισμούς και δεν είναι κατάλληλο για κάποιες άλλες λειτουργίες (π.χ., ανάγνωση κειμένου).
ΕΚΚΙΝΗΣΗ ΤΟΥ MATLAB ΚΑΙ ΒΑΣΙΚΗ ΔΙΑΡΘΡΩΣΗ Εκκίνηση του προγράμματος Διάρθρωση του προγράμματος
ΕΚΚΙΝΗΣΗ ΤΟΥ MATLAB ΚΑΙ ΒΑΣΙΚΗ ΔΙΑΡΘΡΩΣΗ
MatLab & TopoLab Προκειμένου να μπορέσετε να χρησιμοποιήσετε το MATLAB στο TOPOLAB θα πρέπει να έχετε λογαριασμό για το δίκτυο υπολογιστικών νησίδων του AFS (ΚΛΔΔ/ΚΥΤΠ-ΑΠΘ). Ο λογαριασμός ταυτίζεται με αυτόν που (πρέπει) να διαθέτετε ήδη για τις ηλεκτρονικές δηλώσεις μαθημάτων!!! Σε περίπτωση που δεν έχετε τέτοιο λογαριασμό πρέπει να επικοινωνήσετε ΑΜΕΣΑ με τη γραμματεία του Τμήματος ώστε να γίνουν οι απαραίτητες ενέργειες.
MatLab για χρήστες του ΑΠΘ
MatLab για χρήστες του ΑΠΘ (2η επιλογή) Η είσοδος και η χρήση του MatLab μπορεί να γίνει και από το σπίτι με τη χρήση της υπηρεσίας Terminal Servers του ΑΠΘ Δεν απαιτείται εγκατάσταση κανενός λογισμικού στον υπολογιστή του χρήση παρά μόνο η διάθεση λογαριασμού χρήστη ΑΠΘ (που έχετε πλέον όλοι!!!!!) http://web.itc.auth.gr/portal/content/view/76/207/
ΕΚΚΙΝΗΣΗ ΤΟΥ MATLAB ΚΑΙ ΒΑΣΙΚΗ ΔΙΑΡΘΡΩΣΗ Workspace & Directory Command-Window Command- History
ΒΑΣΙΚΗ ΔΙΑΡΘΡΩΣΗ ΤΟΥ MATLAB (command window) Επιτρέπει την εισαγωγή εντολών, τη δημιουργία και τροποποίηση παραμέτρων, την εκτέλεση προγραμμάτων και συναρτήσεων που δημιουργούμε ή που είναι ήδη διαθέσιμες. Επίσης, αποτελεί και μια από τις επιφάνειες εμφάνισης των αποτελεσμάτων. Command-Window
ΒΑΣΙΚΗ ΔΙΑΡΘΡΩΣΗ ΤΟΥ MATLAB (Current directory) To MATALAB, όπως και τα WINDOWS και το UNIX, έχει έναν τρέχοντα κατάλογο (directory) εργασίας. Οι συναρτήσεις του MATLAB μπορούν να κληθούν (φορτωθούν) από κάποιο κατάλογο. Τα προγράμματα που γράφουμε είναι διαθέσιμα να τρέξουν μόνο όταν ο επιλεγμένος κατάλογος είναι αυτός στον οποίο βρίσκονται. Σε ένα φάκελο των Windows θα δείτε μόνο τα προγράμματα που έχετε κάνει και όχι τα δεδομένα. Αυτά τα «βλέπετε» μόνο στο MATLAB ή στα Windows αν τα εξάγετε. Directory
ΒΑΣΙΚΗ ΔΙΑΡΘΡΩΣΗ ΤΟΥ MATLAB (Workspace) Στo MATALAB, όταν εκτελούμε κάποιες εντολές (είτε στο command window είτε με κάποιο m-file), όλες οι μεταβλητές που υπολογίζονται από το πρόγραμμα αποθηκεύονται στο workspace (χώρος εργασίας) Από εκεί μπορούμε να δούμε το μέγεθός τους, τα στοιχεία τους, τον χώρο που καταλαμβάνουν και να αντιγράψουμε μέρος τους. Ο χώρος του workspace «καθαρίζεται» πλήρως με την εντολή clear all ενώ σε περίπτωση που επιθυμούμε να διαγράψουμε μια μόνο μεταβλητή τότε δίνουμε clear var. Workspace
ΒΑΣΙΚΗ ΔΙΑΡΘΡΩΣΗ ΤΟΥ MATLAB (command history) Περιλαμβάνει όλες τις εντολές που χρησιμοποιήθηκαν από την στιγμή που άνοιξε το πρόγραμμα ή και παλαιότερες. Οι παλαιότερες εντολές μπορούν να σβηστούν αν το θέλει ο χρήστης. Οι εντολές από το Command History μπορούν να τοποθετηθούν στο παράθυρο εντολών (Command Window) με απλό σύρσιμο ή και αντιγραφή/επικόλληση. Στην περίπτωση αυτή εκτελούνται ξανά. Command History
ΒΑΣΙΚΗ ΔΙΑΡΘΡΩΣΗ ΤΟΥ MATLAB (MATLAB EDITOR) Ο κειμενογράφος του MATLAB αποτελεί το βασικό εργαλείο δημιουργίας προγραμμάτων τα οποία εκτελούνται από το Command Window. Δίνει δυνατότητες εκτέλεσης και εκσφαλμάτωσης προγραμμάτων. Τα αρχεία που δημιουργούνται με Save-As ονομάζονται m-files (επέκταση *.m) και περιλαμβάνουν τον κώδικα των προγραμμάτων μας. Τα αρχεία αυτά εμφανίζονται και στους φακέλους των Windows (βλ. Current Directory) MATLAB Editor
ΑΠΛΕΣ ΕΝΤΟΛΕΣ ΣΤΟ MATLAB who whos save delete clear all clear clc help % close all dir ή ls load
ΑΠΛΕΣ ΕΝΤΟΛΕΣ ΣΤΟ MATLAB (who) Η εντολή whos κάνει το ίδιο με την who αλλά επιπλέον εμφανίζει το μέγεθος, τον τύπο των μεταβλητών και τον χώρο που καταλαμβάνουν.
ΑΠΛΕΣ ΕΝΤΟΛΕΣ ΣΤΟ MATLAB (save & delete) Η εντολή save αποθηκεύει όλες τις μεταβλητές από το χώρο εργασίας σε ένα αρχείο που ονομάζεται αυτόματα matlab.mat. Η εντολή save test αποθηκεύει όλες τις μεταβλητές από το χώρο εργασίας στο αρχείο test.mat. Η εντολή save test var1 var2 αποθηκεύει μόνο τις μεταβλητές var1 και var2 από το χώρο εργασίας στο αρχείο test.mat. Η εντολή delete σβήνει κάποιο αρχείο από το χώρο εργασίας. Π.χ. η delete test.mat σβήνει το αρχείο test.mat
ΑΠΛΕΣ ΕΝΤΟΛΕΣ ΣΤΟ MATLAB (clear, clear all, clc) Η εντολή clear διαγράφει όλες τις μεταβλητές από τον χώρο εργασίας. Συνήθως χρησιμοποιείται για να διαγράψουμε μια μεταβλητή, π.χ., clear var1. Η εντολή clear all διαγράφει όλες τις μεταβλητές και τις συναρτήσεις (functions) που έχουμε δημιουργήσει στο χώρο εργασίας. Η εντολή clc διαγράφει όλα τα στοιχεία από το παράθυρο εργασίας (command window) και δεν επηρεάζει τις μεταβλητές και τις συναρτήσεις που έχουμε ορίσει. Είναι αντίστοιχη της cls στο DOS και της clear στο UNIX.
ΑΠΛΕΣ ΕΝΤΟΛΕΣ ΣΤΟ MATLAB (help) Η εντολή help command δίνει βοήθεια για τη συγκεκριμένη εντολή. Για παράδειγμα η εντολή help fft δίνει βοήθεια για την εντολή fft που εκτελεί τον ταχύ μετασχηματισμό Fourier ενός σήματος στο MATLAB. Αντίστοιχα, η εντολή help conv δίνει βοήθεια για την εντολή conv που εκτελεί την γραμμική συνέλιξη δύο σημάτων στο MATLAB.
ΑΠΛΕΣ ΕΝΤΟΛΕΣ ΣΤΟ MATLAB (%) Το % δεν αποτελεί εντολή αλλά σύμβολο που επιτρέπει την παράθεση σχολίων σε κάποιο πρόγραμμα (m-file) του MATLAB.
ΑΠΛΕΣ ΕΝΤΟΛΕΣ ΣΤΟ MATLAB (close all, dir ή ls) Η εντολή close all κλείνει όλα τα παράθυρα εικόνων από το MATLAB. Οι εντολές dir και ls λειτουργούν με τον ίδιο τρόπο και δίνουν τον κατάλογο των περιεχομένων του τρεόχοντος φακέλου εργασίας.
ΑΠΛΕΣ ΕΝΤΟΛΕΣ ΣΤΟ MATLAB (load) Η εντολή load επιτρέπει να φορτωθούν δεδομένα στον σώρο εργασίας του MATLAB από τον φάκελο εργασίας. Για παράδειγμα το load hHNgrav_33.txt φορτώνει το αρχείο hHNgrav_33.txt και όλες τις παραμέτρους του στο Workspace.
ΔΕΔΟΜΕΝΑ, ΜΕΤΑΒΛΗΤΕΣ & ΣΥΝΑΡΤΗΣΕΙΣ ΣΤΟ MATLAB
ΔΕΔΟΜΕΝΑ ΣΤΟ MATLAB Το MATLAB χρησιμοποιεί ουσιαστικά ένα μόνο αριθμητικό αντικείμενο, τους ορθογώνιους πίνακες. Κάθε πίνακας μπορεί να είναι διάνυσμα, τετραγωνικός, να περιλαμβάνει ακέραιους & μιγαδικούς αριθμούς ή ακόμη και κείμενο. Σε αντίθεση με την FORTRAN και άλλες γλώσσες προγραμματισμού, στο MATLAB δεν είναι απαραίτητο να δηλώσουμε τον τύπο της μεταβλητής, αν είναι δηλαδή ακέραιος, πραγματικός, μιγαδικός αριθμός ή αλφαριθμητική. Επίσης δεν χρειάζεται να δηλώσουμε την ακρίβειά τους (απλή, διπλή ή τετραπλή ακρίβεια).
ΕΙΣΑΓΩΓΗ ΔΕΔΟΜΕΝΩΝ ΣΤΟ MATLAB Προσοχή πρέπει να δωθεί στο ότι οι μεταβλητές στο MATLAB είναι case sensitive δηλαδή οι μεταβλητές Α & a είναι δύο διαφορετικές μεταβλητές. Ο πιο απλός τρόπος να δηλώσουμε μια μεταβλητή είναι… Το ; μετά από τη δήλωση μιας μεταβλητής δεν εμφανίζει το αποτέλεσμα στο παράθυρο εντολών.
ΕΙΣΑΓΩΓΗ ΔΕΔΟΜΕΝΩΝ ΣΤΟ MATLAB Ο προηγούμενος τρόπος είναι ο πιο απλός για να δηλωθούν ακέραιοι αριθμοί και μεταβλητές κινητής υποδιαστολής. Σε κάθε περίπτωση το MATLAB τους αντιμετωπίζει σαν πίνακες!!! Δηλαδή στην προκειμένη περίπτωση σαν πίνακες 1x1. Σε τέτοιες μεταβλητές μπορούμε να κάνουμε τις γνωστές πράξεις + (πρόσθεση), - (αφαίρεση), / διαίρεση, * (πολλαπλασιασμό), ^ ύψωση σε δύναμη. Προσοχή!!! Στο MATLAB τα σύμβολα / & \ λειτουργούν διαφορετικά.
ΕΙΣΑΓΩΓΗ ΠΙΝΑΚΩΝ ΣΤΟ MATLAB Ένας πίνακας λοιπόν ορίζεται με μια ακολουθία αριθμών χρησιμοποιώντας το σύμβολο ; για να αλλάξουμε γραμμή.
ΠΡΑΞΕΙΣ ΠΙΝΑΚΩΝ ΣΤΟ MATLAB Σε αντιστοιχία με τις πράξεις ανάμεσα σε πίνακες στοιχεία γίνονται και οι πράξεις μεταξύ πινάκων. Ο πολλαπλασιασμός μεταξύ πινάκων μπορεί να γίνει είτε με * είτε με .* Στην πρώτη περίπτωση το αποτέλεσμα είναι το γνωστό αλγεβρικό γινόμενο πινάκων ενώ στη δεύτερη ο πίνακας που προκύπτει έχει στοιχεία της μορφής aij*bij. Γίνεται δηλαδή πολλαπλασιασμός στοιχείο με στοιχείο.
ΠΡΑΞΕΙΣ ΠΙΝΑΚΩΝ ΣΤΟ MATLAB Με την πράξη Α/Β προκύπτει το αποτέλεσμα της πράξης Α*Β-1. Με την πράξη Α./Β προκύπτει το αποτέλεσμα της πράξης aij/bij. Αντίστοιχα, με την πράξη Α\Β προκύπτει το αποτέλεσμα της πράξης Α-1*Β ενώ με την πράξη Α.\Β προκύπτει το αποτέλεσμα της πράξης bij/aij.
ΧΡΗΣΙΜΑ ΚΑΙ ΣΥΝΤΟΜΑ ΓΙΑ ΠΙΝΑΚΕΣ ΣΤΟ MATLAB Το MATLAB διαθέτει εσωτερικές εξισώσεις που μας δίνουν γρήγορα και εύκολα τον ανάστροφο (‘), τον αντίστροφο (inv) και την ορίζουσα (det) ενός πίνακα.
ΧΡΗΣΙΜΑ ΚΑΙ ΣΥΝΤΟΜΑ ΓΙΑ ΠΙΝΑΚΕΣ ΣΤΟ MATLAB Με την εντολή zeros προκύπτει ένας μηδενικός πίνακας των διαστάσεων που ορίζουμε (n,m) όπου πάντα πρώτα είναι ο αριθμός των γραμμών και μετά των στηλών. Τί συμβαίνει αν δώσουμε την εντολή A=zeros(5);;;;;;; Αντίστοιχα λειτουργεί και η εντολή ones Τέλος η εντολή eye(n) δημιουργεί ένα μοναδιαίο πίνακα
ΤΡΙΓΩΝΟΜΕΤΡΙΑ ΣΤΟ MATLAB Το MATLAB όπως και κάθε άλλη γλώσσα προγραμματισμού και όπως κάθε εργαλείο στον Η/Υ αντιλαμβάνεται σαν μονάδα μέτρησης γωνιών μόνο τα ακτίνια (rad). Οπότε οποιοσδήποτε υπολογισμός τριγωνομετρικών αριθμών πρέπει να γίνεται σε ακτίνια. Η τιμή του π δεν χρειάζεται να υπολογιστεί αφού υπάρχει σαν μεταβλητή του MATLAB pi() Οι τριγωνομετρικοί αριθμοί υπολογίζονται με τα γνωστά, δηλαδή sin, cos, tan, cotan, csc, sec. Αν θέλουμε να υπολογίσουμε τριγωνομετρικούς αριθμούς σε μοίρες τότε χρησιμοποιούμε τα sind, cosd, tand, catd, cscd, secd. Στην περίπτωση των πινάκων η πράξη γίνεται στοιχείο-στοιχείο.
ΓΡΗΓΟΡΗ ΕΙΣΑΓΩΓΗ ΔΕΔΟΜΕΝΩΝ ΣΤΟ MATLAB Υπάρχουν περιπτώσεις που τα στοιχεία ενός πίνακα παρουσιάζουν μια ακολουθία, π.χ. αυξάνονται συνεχώς κατά πολλαπλάσια κάποιου αριθμό, δηλαδή Σε αυτές τις περιπτώσεις η δημιουργία αυτής της μεταβλητής/πίνακα γίνεται πολύ πιο εύκολα από το να πληκτρολογήσουμε όλα τα δεδομένα. Η γενική μορφή είναι variable = start:increment:end
ΧΡΗΣΙΜΕΣ ΣΥΝΑΡΤΗΣΕΙΣ ΤΟΥ MATLAB Το MATLAB περιλαμβάνει ένα πλήθος χρήσιμων συναρτήσεων μεταξύ των οποίων και οι max, min, mean, median, std, sum Αν υποθέσουμε ότι Α=1:11 τότε
ΧΡΗΣΙΜΕΣ ΣΥΝΑΡΤΗΣΕΙΣ ΤΟΥ MATLAB Οι προηγούμενες συναρτήσεις λειτουργούν διαφορετικά στην περίπτωση των πινάκων, για παράδειγμα
ΧΡΗΣΙΜΕΣ ΣΥΝΑΡΤΗΣΕΙΣ ΤΟΥ MATLAB Δύο πολύ χρήσιμες συναρτήσεις είναι και οι rand και randn που μας δίνουν αποτελέσματα που ακολουθούν την ομογενή (τυχαίες τιμές γύρω από τη μονάδα) και την κανονική κατανομή (μ=0 & σ2=1) αντίστοιχα. Μπορούμε να δημιουργήσουμε μεταβλητές πίνακες ή διανύσματα, δηλαδή Α=randn(5) και Α=randn(5,1) Αν θέλουμε να δημιουργήσουμε μια μεταβλητή που θα ακολουθεί την κανονική κατανομή με μεταβλητότητα π.χ. 10 τότε Α=10*randn(5)
ΕΠΙΛΟΓΗ ΣΥΓΚΕΚΡΙΜΕΝΩΝ ΣΤΟΙΧΕΙΩΝ ΠΙΝΑΚΩΝ ΠΙΝΑΚΑΣ 3x9 Πράξεις μεταξύ στοιχείων πινάκων ΕΜΦΑΝΙΣΗ ΣΥΓΚΕΚΡΙΜΕΝΟΥ ΣΤΟΙΧΕΙΟΥ ΤΟΥ ΠΙΝΑΚΑ
ΑΣΚΗΣΕΙΣ (1/1) Ημερομηνία Παράδοσης 23/10/2013 Έστω ότι έχουμε τα συνεχή σήματα y1=4sin(t) y2=4sin(2t) y3=4sin(t/2) που ορίζονται στο διάστημα 0 ≤ t ≤ 2π. Να δημιουργήσετε στο MATLAB έναν πίνακα που να περιέχει τις τιμές του χρόνου με βήμα π/8 και στη συνέχεια να υπολογίσετε τις τιμές των συναρτήσεων για το διάστημα ορισμού τους. Για κάθε μια από αυτές να βρείτε τις χρονικές στιγμές που παίρνουν τις μέγιστες και ελάχιστες τιμές τους καθώς και τον αριθμό των μέγιστων και ελάχιστων μέσα στο πεδίο ορισμού. Τι διαφορές παρατηρείτε και γιατί; Σχολιάστε τα αποτελέσματα.