ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ. Προγραμματισμός Γραφικής Διεπαφής Χρήστη (GUI) στο Matlab για την μοντελοποίηση Συστημάτων από Αριθμητικές Βάσεις Δεδομένων



Σχετικά έγγραφα
Πως θα κατασκευάσω το πρώτο πρόγραμμα;

Ο Οδηγός γρήγορης εκκίνησης

SPSS Statistical Package for the Social Sciences

Microsoft Excel Κεφάλαιο 1. Εισαγωγή. Βιβλίο εργασίας

Οδηγός γρήγορης εκκίνησης

A3.3 Γραφικά Περιβάλλοντα Επικοινωνίας και Διαχείριση Παραθύρων

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010

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

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

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

Atlantis - Νέο user interface

Εισαγωγή στο πρόγραμμα Microsoft word 2003

Λίγα λόγια από το συγγραφέα Κεφάλαιο 1: Microsoft Excel Κεφάλαιο 2: Η δομή ενός φύλλου εργασίας... 26

Εισαγωγή στην Αριθμητική Ανάλυση

ΠΛΗΡΟΦΟΡΙΚΗ Ι Εργαστήριο 1 MATLAB ΠΛΗΡΟΦΟΡΙΚΗ Ι ΕΡΓΑΣΤΗΡΙΟ 1. Θέμα εργαστηρίου: Εισαγωγή στο MATLAB και στο Octave

Οδηγίες για προσθήκη Web Frames Tools to the Quick Access Bar σε μεταγενέστερη έκδοση του Word

Αλλαγή της εμφάνισης κειμένου: μέγεθος γραμματοσειράς, είδος γραμματοσειράς

Οδηγίες Χρήσης της MySQL

Σχεδιάζοντας Εφαρμογές για το Διαδίκτυο

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

Vodafone Business Connect

GreekLUG Ελεύθερο Λογισμικό & Λογισμικό Ανοικτού Κώδικα

Οδηγίες Εγκατάστασης της εφαρμογής Readium και Readium για μαθητές με αμβλυωπία για την ανάγνωση βιβλίων epub σε Υπολογιστή.

Browsers. Λειτουργικότητα και Παραμετροποίηση

Επεξεργασία πολλαπλών φύλλων εργασίας - Γραφημάτων Excel

Γραφικά περιβάλλοντα από τον χρήστη Graphical User Interfaces (GUI)

Field Service Management ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ

Περιεχόμενα. Κεφάλαιο 1 Γνωριμία με το Excel...9

ΜΑΘΗΜΑ Άνοιγμα Της Εφαρμογής Επεξεργασίας Κειμένου. 2. Κύρια Οθόνη Της Εφαρμογής Κειμένου ΣΤΟΧΟΙ:

ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ GRS-1

Συστήματα Αναμονής (Queuing Systems)

Σχεδιάζοντας Εφαρμογές για το Διαδίκτυο

Πανεπιστήμιο Δυτικής Μακεδονίας. Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών. Ηλεκτρονική Υγεία. Εργαστήριο 4 ο : MATLAB

Κεφάλαιο 2.3: Ρυθμίσεις των Windows

Περιεχόμενα. Λίγα λόγια από τον συγγραφέα Microsoft Excel Η δομή ενός φύλλου εργασίας... 21

Περιεχόμενα. Κεφάλαιο 1 Γνωριμία με το Excel... 9

Εργαστήριο «Τεχνολογία Πολιτισμικού Λογισμικού» Ενότητα. Επεξεργασία πινάκων

Οδηγίες για την εγκατάσταση του πακέτου Cygwin

Δραστηριότητα 1. Προγραμματίζω τον υπολογιστή (10 ώρες).

Computing and Information Systems Service. Windows XP

Εφαρμογή Ηλεκτρονικής Υποβολής Δηλώσεων Ε9. Οδηγίες Χρήσης

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client

Εκκίνηση προγράμματος

Πρακτικές οδηγίες για την Επεξεργασία Κειμένου

Atlantis - Νέο user interface

Γ ΓΥΜΝΑΣΙΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ ΤΗ ΓΛΩΣΣΑ MicroWorlds Pro

ΕΓΧΕΙΡΙΔΙΟ ΜΑΘΗΤΗ. της Πλατφόρμας Τηλεκατάρτισης

Άνοιγμα (και κλείσιμο) της εφαρμογής Εγγράφου Κειμένου

ΑΝΤΙΓΡΑΦΗ ΑΡΧΕΙΟΥ ΣΕ ΔΙΣΚΕΤΑ ΑΝΤΙΓΡΑΦΗ ΑΡΧΕΙΟΥ ΑΠΟ ΔΙΣΚΕΤΑ. Από τον κατάλογο που εμφανίζεται επιλέγω: Αποστολή προς Δισκέτα (3,5)

POWERPOINT Είναι το δημοφιλέστερο πρόγραμμα παρουσιάσεων.

ΤΕΙ ΚΑΒΑΛΑΣ. Πτυχιακή εργασία ΕΙΣΑΓΩΓΗ. Μιλτιάδης Κακλαμάνης

Χρήσιμες Λειτουργίες των. Windows 7

4 ο Εργαστήριο Τυχαίοι Αριθμοί, Μεταβλητές Συστήματος

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

Σύντομη περιγραφή 5. Για να ξεκινήσετε 6. Οι οθόνες του προγράμματος 8. Εγκατάσταση προγράμματος 6 Δημιουργία κωδικών χρήστη 7

MANAGER SIDE BAR. Μία άλλη λειτουργία είναι το ξυπνητήρι. Μπορείτε να ορίσετε τον χρόνο υπενθύμισης. Μετά την λήξη του χρόνου θα ειδοποιηθείτε ηχητικά

MATLAB Desktop (Επιφάνεια Εργασίας MATLAB) [1.]

Ενότητα 15 Μορφοποίηση της Γραφικής Παράστασης

ΜΑΘΗΜΑ 10 Ο ΟΡΓΑΝΩΣΗ ΤΗΣ Β ΓΙΑ ΧΡΗΣΤΕΣ (NON-EXPERTS) Α. ΗΜΙΟΥΡΓΙΑ ΠΙΝΑΚΑ ΕΠΙΛΟΓΩΝ 1. TOOLS DATA UTILITIES SWITCHBOARD MANAGER YES

A7.2 Δημιουργία Απλής Γραφικής Εφαρμογής σε Περιβάλλον Scratch

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ Python. 1η Ομάδα Ασκήσεων

Επιλογή ενός στοιχείου γραφήματος από μια λίστα στοιχείων γραφήματος

Περιεχόμενα. Λίγα λόγια από το συγγραφέα... 7

Δημιουργώντας μια εφαρμογή ζωγραφικής. 2 η Εργασία

21. ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 4 - ΔΗΜΙΟΥΡΓΩΝΤΑΣ ΜΕ ΤΟ BYOB BYOB. Αλγόριθμος Διαδικασία Παράμετροι

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

Οδηγίες Χρήσης της MySQL

ΔΗ Μ Ι Ο ΥΡ Γ Ι Α W I K I με τ η χρήση τ η ς υπ ηρεσίας h t t p : / id ot.com /

Περιεχόμενα. Μέρος 1: Βασικές έννοιες Πληροφορικής και επικοινωνιών Μέρος 2: Χρήση υπολογιστή και διαχείριση αρχείων Πρόλογος...

Λεπτομέριες τοιχοποιίας Σχεδίαση κάτοψης

Πρακτικές συμβουλές κατά την πληκτρολόγηση ., ; :! ( ) " " Άνοιγμα και αποθήκευση εγγράφου Αρχείο, Άνοιγμα. Αρχείο / Αποθήκευση

APP INVENTOR ΟΔΗΓΟΣ 8 Οκτωβρίου 2018

ModellingSpace. Εγχειρίδιο Χρήστη

Αναζήτηση στον Ιστό. Πληκτρολόγηση του URL: στο πλαίσιο αναζήτησης του Mozilla Firefox. Enter ή κλικ στο Αναζήτηση

Joomla! with K2 - User Guide

Εγχειρίδιο του Accerciser, έκδοση 0.2.0

Πρώτη επαφή με το μαθηματικό πακέτο Mathematica

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

Εισαγωγή στο GNU Octave/MATLAB

Δραστηριότητα 9 Δημιουργία και διαχείριση blog μέσω του Blogger. Δημιουργία ιστολογίου

ΥΠΗΡΕΣΙΕΣ ΔΙΑΔΙΚΤΟΥ Explorer & Outlook 2013

Περιεχόμενα. Λίγα λόγια από το συγγραφέα... 7

Ευ ομή. Εγχειρίδιο χρήσης του περιβάλλοντος LT125-dp

Σχεδόν όλες οι ιστοσελίδες βασίζονται σε μεγάλο βαθμό σε πίνακες. Για να εισάγουμε έναν πίνακα επιλέγουμε από το μενού Insert->Table.

Microsoft PowerPoint 2010 Πανεπιστήμιο Κύπρου

Οδηγός Εγκατάστασης και Χρήσης του Arebas Easy

Περιεχόμενα. Κεφάλαιο 1 Εισαγωγή στην Access...9. Κεφάλαιο 2 Χειρισμός πινάκων... 25

Εγκατάσταση αρχείων βιβλιοθήκης VHOPE και VHOPE

Microsoft PowerPoint 2007

ΕΡΓΑΣΤΗΡΙΟ 1: Εισαγωγή, Χρήσιμες Εφαρμογές

Παράρτημα A: PHP, HTML φόρμες και το πρωτόκολλο HTTP.

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

περιεχόμενα Εισαγωγή 6 Τα βασικά συστατικά του υπολογιστή 10 Η επιφάνεια εργασίας (desktop) 16 Windows 7 Windows 8 Τα πρώτα βήματα στο Internet 84

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

Σε αυτό το μάθημα θα ασχοληθούμε με τη βελτίωση της εμφάνισης ενός ιστοτόπου, αλλά και τον εύκολο χειρισμό όλων των αλλαγών τις οποίες επιθυμούμε να

Εγχειρίδιο χρήσης Print2PDF σελ. 1 από 32

Συνοπτικός Οδηγός Χρήσης του Moodle για τον Καθηγητή

ΕΓΧΕΙΡΙΔΙΟ ΟΔΗΓΙΩΝ ΧΡΗΣΤΗ. Ηλεκτρονική Υποβολή Α.Π.Δ.

BowTie Pro. Το σύγχρονο, γρήγορο και εύκολο στη χρήση εργαλείο ανάλυσης κινδύνου. Η μέθοδολογία Bowtie

ΚΕΦΑΛΑΙΟ 5. Matlab GUI για FWSVM και Global SVM

Transcript:

ΑΝΩΤΑΤΟ ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ (Α.Τ.Ε.Ι) ΚΑΒΑΛΑΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΒΙΟΜΗΧΑΝΙΚΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Προγραμματισμός Γραφικής Διεπαφής Χρήστη (GUI) στο Matlab για την μοντελοποίηση Συστημάτων από Αριθμητικές Βάσεις Δεδομένων Κισκορίδου Ιωάννα Α.Ε.Μ. : 2483 Γεραντίδου Σημέλα Α.Ε.Μ. : 2563 Επιβλέπων Καθηγητής : Δρ. Τσαχουρίδης Βασίλειος Καβάλα, Ιούνιος 2013 1

Περίληψη: Η πτυχιακή μας εργασία έχει ως αντικείμενο την κατασκευή μιας γραφικής διεπαφής χρήστη (graphical user interface (gui)) στο λογισμικό Matlab. Σκοπό έχει την αριθμητική μοντελοποίηση και προσομοίωση συστημάτων από αποθηκευμένα αριθμητικά δεδομένα μετρήσεων σε βάσεις δεδομένων Excel. Η μοντελοποίηση και η προσομοίωση αυτή γίνονται με τη μέθοδο ελαχίστων τετραγώνων (MET). Η μέθοδος αυτή είναι η δόκιμη μέθοδος που χρησιμοποιείται ευρύτατα κατά τη μελέτη ενός φαινομένου, όπου προσπαθούμε να προσδιορίσουμε τη μορφή της άγνωστης σχέσης, στην οποία ταιριάζουν καλύτερα τα πλεονάζοντα δεδομένα των μετρήσεων μας, ελέγχοντας μια σειρά γνωστών σχέσεων. Στόχος της ΜΕΤ είναι ο προσδιορισμός των σταθερών συντελεστών a, b της σχέσης που επιλέξαμε για να περιγράψουμε το φαινόμενο. Η σχέση για την οποία τα πειραματικά δεδομένα προσαρμόζονται καλύτερα πάνω στη γραφική της παράσταση είναι και η ζητούμενη. 2

Περιεχόμενα Κεφάλαιο 1 Εισαγωγή στο Matlab 1.1 Πρόλογος Σελίδα 6 1.2 Πληκτρολογώντας στο Παράθυρο Εντολών (Command Window).. Σελίδα 7 1.3 Ηλεκτρονική Βοήθεια (online help) Σελίδα 8 1.4 Βοήθεια για το Matlab στο Internet. Σελίδα 9 1.5 Τερματίζοντας μια συνεδρία (session). Σελίδα 10 Κεφάλαιο 2 Εισαγωγή στο gui (Graphical User Interface) 2.1 Εισαγωγή Σελίδα 11 2.2 Πώς δουλεύει το γραφικό περιβάλλον χρήστη (GUI).. Σελίδα 11 GUIDE (Περιβάλλον Ανάπτυξης GUI - GUI Development Environment) 2.3 Δημιουργώντας και εμφανίζοντας ένα GUI.. Σελίδα 17 2.4 Ιδιότητες Αντικειμένων Σελίδα 20 2.5 Συναρτήσεις Callback του GUI Σελίδα 22 2.6 Δημοσίευση των προγραμμάτων σε Matlab. Σελίδα 24 2.6.1 M-Files, M-Books, Reports και αρχεία HTML Σελίδα 24 3

2.7 Διαμορφώνοντας τον Web Browser. Σελίδα 25 2.7.1 Microsoft Internet Explorer.. Σελίδα 26 2.7.2 Netscape Navigator.. Σελίδα 26 Κεφάλαιο 3 Μέθοδος Ελαχίστων Τετραγώνων 3.1 Βασικές έννοιες της Μεθόδου. Σελίδα 28 Κεφάλαιο 4 Επεξήγηση Κώδικα 4.1 ΕΠΕΞΗΓΗΣΗ ΣΥΝΑΡΤΗΣΗΣ gerantidou_kiskoridou_3 Σελίδα 31 4.2 ΕΠΕΞΗΓΗΣΗ ΕΝΤΟΛΩΝ ΚΑΙ ΙΔΙΟΤΗΤΩΝ ΤΗΣ ΣΥΝΑΡΤΗΣΗΣ gerantidou_kiskoridou_3 Σελίδα 39 4.2.1 Function... Σελίδα 39 4.2.2 Global (Χ Υ Ζ) Σελίδα 40 4.2.3. Figure. Σελίδα 40 4.2.4 Menubar (figure, none) Σελίδα 41 4.2.5 Integerhandle Σελίδα 41 4.2.6 Units (pixels, centimeters, characters, inches normalized, points) Σελίδα 41 4.2.7 Position [distance from left, distance from bottom, width, height]... Σελίδα 42 4.2.8 Tag... Σελίδα 42 4.2.9 Toolbar (auto, none, figure). Σελίδα 42 4

4.2.10 NumberTitle (on, off). Σελίδα 42 4.2.11 Windowstyle (Normal, modal).. Σελίδα 43 4.2.12 Name (string). Σελίδα 43 4.2.13 Color (value 1, value 2, value 3) Σελίδα 43 4.2.14 Resize (on, off)... Σελίδα 43 4.2.15 uicontrol (User Interface control ή στοιχείο διεπαφή χρηστών).. Σελίδα 44 4.2.16 Style... Σελίδα 44 4.2.17 Horizontalalignment (left, center, right) Σελίδα 44 4.2.18 SelectionHighLight (on, off). Σελίδα 45 4.2.19 Value. Σελίδα 45 4.2.20 String. Σελίδα 45 4.2.21 Callback Σελίδα 46 4.2.22 Max Σελίδα 46 4.2.23 Visible (on, off). Σελίδα 47 4.2.24 BackgroundColor.. Σελίδα 47 4.2.25 FontWeight (light, normal, demi, bold) Σελίδα 47 4.2.26 Axes ( PropertyName, Property Value).. Σελίδα 47 4.2.27 str(1). Σελίδα 48 4.2.28 uimenu. Σελίδα 48 4.2.29 Separator.. Σελίδα 48 4.2.30 Save (filename) Σελίδα 49 4.3 ΕΠΕΞΗΓΗΣΗ ΣΥΝΑΡΤΗΣΗΣ add_datafile. Σελίδα 49 4.4 ΕΠΕΞΗΓΗΣΗ ΕΝΤΟΛΩΝ ΚΑΙ ΙΔΙΟΤΗΤΩΝ ΤΗΣ ΣΥΝΑΡΤΗΣΗΣ add_datafile 4.4.1 If. Σελίδα 58 4.4.2 If Get (object, PropertyName ). Σελίδα 58 4.4.3 Set (object, PropertyName, PropertyValue). Σελίδα 58 4.4.4 PathName Σελίδα 58 5

4.4.5 Uigetfile (FilterSpec, DialogTitle).. Σελίδα 59 4.4.6 xlsread (filename) Σελίδα 59 4.4.7 Plot (X,Y) Σελίδα 60 4.5 ΕΠΕΞΗΓΗΣΗ ΣΥΝΑΡΤΗΣΗΣ lssscpe_v02 : 388-427. Σελίδα 60 4.6 ΕΠΕΞΗΓΗΣΗ ΣΥΝΑΡΤΗΣΗΣ Plotmodel : 429-434 Σελίδα 60 4.7 ΕΠΕΞΗΓΗΣΗ ΣΥΝΑΡΤΗΣΗΣ Save Figure : 436-453. Σελίδα 60 4.8 ΕΠΕΞΗΓΗΣΗ ΣΥΝΑΡΤΗΣΗΣ Save Model : 456-481.. Σελίδα 61 4.8.1 Reshape (A, m, n) Σελίδα 61 4.8.2 Zeros (x).. Σελίδα 61 4.8.3 Length (Y) Σελίδα 61 4.8.4 Num2str (w). Σελίδα 61 4.8.5 Uiputfile (FilterSpec, Dialog Title). Σελίδα 61 4.8.6 xlswrite ( filename, M, sheet, range )... Σελίδα 62 Κεφάλαιο 5 Εφαρμογή Gui στη μοντελοποίηση Συστήματος 5.1 Παράδειγμα Κατάδυσης Υποβρυχίου.. Σελίδα 63 5.2 Μετατροπή αρχείου Matlab σε.exe αρχείο. Σελίδα 76 Βιβλιογραφία Σελίδα 78 6

Κεφάλαιο 1 Εισαγωγή στο Matlab 1.1 Πρόλογος Το Matlab είναι ένα ενσωματωμένο υπολογιστικό περιβάλλον με τεχνικές γνώσεις το οποίο συνδυάζει τους αριθμητικούς υπολογισμούς, τα ανεπτυγμένα γραφικά και τη φαντασία, και μια γλώσσα προγραμματισμού υψηλού επιπέδου. Το Matlab περιέχει εκατοντάδες εντολές για μαθηματικούς υπολογισμούς. Μπορεί να χρησιμοποιηθεί για τη σχεδίαση συναρτήσεων, για επίλυση εξισώσεων, για εξάσκηση στη στατιστική και για πολλά άλλα. Είναι μια γλώσσα προγραμματισμού υψηλού επιπέδου που μπορεί να επικοινωνήσει με τα «ξαδέρφια» της, για παράδειγμα την γλώσσα FORTRAN και τη γλώσσα C. Μπορεί να παράγει ήχο και «ζωντανά» γραφικά. Μπορεί να κάνει προσομοιώσεις και μοντελοποίηση (ειδικά αν έχει πρόσβαση όχι μόνο στο βασικό Matlab, αλλά ακόμη και στο «συνεργό» του, το simulink). Μπορεί να ετοιμάσει υλικά για εξαγωγή στο Διαδίκτυο. Ακόμη, μπορεί να χρησιμοποιηθεί σε συνδυασμό με την επεξεργασία κειμένου και τις δυνατότητες δημοσίευσης του Microsoft Word στην επιφάνεια εργασίας, για να συνδυάσει μαθηματικούς υπολογισμούς με κείμενα και γραφικά, ώστε να παράγει ένα ενσωματωμένο, διαδραστικό και γεμάτο δυνατότητες αρχείο. Ένα πρόγραμμα τόσο εξελιγμένο περιέχει πολλά χαρακτηριστικά και πολλές επιλογές. Υπάρχουν πραγματικά εκατοντάδες χρήσιμες οδηγίες στη διάθεση του χρήστη. Η βοήθεια του Matlab (Matlab Help) περιέχει χιλιάδες εισόδους. Οι βασικές αναφορές, είτε το The MathWorks User s Guide για την παραγωγή, είτε οποιοσδήποτε άλλος ανταγωνιστής, περιέχουν μυριάδες πίνακες που περιγράφουν ένα ατελείωτο ρεύμα εντολών, επιλογών και χαρακτηριστικών για τα οποία ο χρήστης αναμένεται να μελετήσει ή να αποκτήσει πρόσβαση. Το Matlab είναι κάτι παραπάνω από μια αριθμομηχανή. Είναι ένα πολύ χρήσιμο και με πολλές δυνατότητες εργαλείο. Ακόμα κι αν κάποιος γνωρίζει λίγα για το Matlab μπορεί να το χρησιμοποιήσει για να πραγματοποιήσει υπέροχα πράγματα! Το δύσκολο σημείο όμως είναι να βρεθεί ποιες από τις εκατοντάδες εντολές, δεκάδες σελίδες βοήθειας και χιλιάδες αντικείμενα τεκμηρίωσης χρειάζονται να δει για να ξεκινήσει να το χρησιμοποιεί γρήγορα και αποτελεσματικά. 7

1.2 Πληκτρολογώντας στο Παράθυρο Εντολών (Command Window) Με κλικ στο command window αυτό ενεργοποιείται. Όταν ένα παράθυρο ενεργοποιηθεί, η γραμμή τίτλου του (titlebar) σκουραίνει. Είναι επίσης πιθανό πως ο κέρσορας θα αλλάξει από μορφή περιγράμματος σε στέρεα μορφή, ή από ανοιχτό σε σκούρο χρώμα, ή μπορεί απλώς να εμφανιστεί. Μετά από αυτό μπορεί να ξεκινήσει η πληκτρολόγηση εντολών. Πληκτρολογείται για παράδειγμα 1+1, και μετά πιέζεται το κουμπί ENTER ή RETURN. Έπειτα πληκτρολογείται factor(123456789) και στο τέλος sin(10). Το Desktop του Matlab θα φαίνεται όπως παρακάτω στο σχήμα 1.2. Σχήμα 1.1 Η επιφάνεια εργασίας του MATLAB 8

Σχήμα 1.2 Μερικές απλές εντολές 1.3 Ηλεκτρονική Βοήθεια (online help) Το Matlab διαθέτει έναν εκτεταμένο μηχανισμό ηλεκτρονικής βοήθειας, η πρόσβαση στην οποία μπορεί να γίνει με διάφορους τρόπους. Πληκτρολογώντας «help» στη γραμμή εντολών θα εμφανιστεί ένας μακροσκελής κατάλογος των θεμάτων για τα οποία η βοήθεια είναι διαθέσιμη. Αν για παράδειγμα πληκτρολογηθεί «help general» θα εμφανιστεί μια μεγάλη λίστα με τις εντολές «γενικής χρήσης» του Matlab. Αν επίσης για παράδειγμα πληκτρολογηθεί η εντολή «help solve» τότε θα εμφανιστούν λεπτομέρειες για την εντολή solve. Για κάθε περίπτωση παραπάνω, αν υπάρχουν περισσότερες λεπτομέρειες από όσες μπορούν να εμφανιστούν στην οθόνη, υπάρχει η δυνατότητα κύλισης του παραθύρου. Υπάρχει όμως ένας πολύ πιο φιλικός προς το χρήστη τρόπος ώστε να αποκτηθεί πρόσβαση στην ηλεκτρονική βοήθεια, και ονομάζεται Matlab Help Browser. Μπορεί να ενεργοποιηθεί με διάφορους τρόπους, για παράδειγμα πληκτρολογώντας helpwin ή helpdesk. Εναλλακτικά είναι διαθέσιμο μέσω της μπάρας μενού ή από το View ή το Help. 9

Τέλος, το κουμπί με το ερωτηματικό στη γραμμή εργαλείων θα «καλέσει» επίσης το Help Browser. Γενικότερα, σε κάθε hypertext browser υπάρχει η δυνατότητα, κάνοντας κλικ, να γίνει μια περιήγηση μέσα σε ένα πλήθος εντολών και πληροφοριών διεπαφής. Το σχήμα 1.3 απεικονίζει το Matlab Help Browser. Σχήμα 1.3 Το Help Browser του Matlab 1.4 Βοήθεια για το Matlab στο Internet Για απαντήσεις σε ερωτήσεις σχετικές με το Matlab αξίζει μια επίσκεψη στην ιστοσελίδα για το MathWorks http://www.mathworks.com Στο Matlab 6, το Web menu που βρίσκεται στη μπάρα Desktop menu μπορεί να μεταφέρει εκεί το χρήστη αυτόματα. Δεδομένου ότι τα αρχεία σε αυτό το site μετακινούνται περιοδικά, δεν υπάρχει με 10

ακρίβεια γνώση του τι βρίσκεται εκεί, αλλά παρακάτω επισημαίνονται κάποια πράγματα προς αναζήτηση. Κατ αρχάς, μπορούν να βρεθούν πλήρεις σειρές εγγράφων για το Matlab καθώς και για όλες τις εργαλειοθήκες (toolboxes). Αυτό είναι ιδιαίτερα χρήσιμο εάν δεν έχει γίνει εγκατάσταση των εγγράφων σε τοπικό επίπεδο, προκειμένου να εξοικονομηθεί χώρος. Δεύτερον, υπάρχουν κατάλογοι με τις συνήθεις ερωτήσεις σχετικά με το Matlab, αναφορές σφαλμάτων, διορθώσεις σφαλμάτων και άλλα. Τρίτον, υπάρχει ένας «δείκτης» με βιβλία βασισμένα το Matlab πληροφορίες για παραγγελίες. με περιγραφές καθώς και Και τέλος, υπάρχουν βιβλιοθήκες των M-Files που αναπτύχθηκαν τόσο από την εταιρεία The MathWorks όσο και από διάφορους χρήστες του Matlab τις οποίες μπορεί ένας χρήστης να κατεβάσει δωρεάν. Αυτές οι βιβλιοθήκες είναι ιδιαίτερα χρήσιμες αν υπάρχει ανάγκη για ένα πρότυπο είδος υπολογισμού για το οποίο υπάρχουν καθιερωμένοι αλγόριθμοι, αλλά και για το οποίο το Matlab δεν έχει κάποιο ενσωματωμένο M-File. Κατά πάσα πιθανότητα, κάποιος χρήστης έγραψε ένα M-File γι αυτό και το κατέστησε διαθέσιμο. Μπορούν επίσης να βρεθούν M-Files και βοήθεια για το Matlab οπουδήποτε αλλού στο Διαδίκτυο. Μια αναζήτηση για «Matlab» θα εμφανίσει δεκάδες tutorials γι αυτό, και βοηθητικές σελίδες όλων των επιπέδων, τα περισσότερα εκ των οποίων είναι βασισμένα σε διάφορα πανεπιστήμια. 1.5 Τερματίζοντας μια συνεδρία (session) Ο καλύτερος τρόπος για να ολοκληρωθεί μια συνεδρία (session) στο Matlab είναι να πληκτρολογηθεί «quit» στο prompt. Γίνεται επίσης με ένα κλικ στο σύμβολο που κλείνει τα παράθυρα (συνήθως ένα Χ στην πάνω αριστερή ή δεξιά γωνία). Καθένα από τα παραπάνω μπορεί είτε να κλείσει, είτε όχι, όλα τα άλλα παράθυρα του Matlab που είναι ανοιχτά. Μπορεί να χρειαστεί να κλείσουν χωριστά. Πράγματι, αφήνοντας τα παράθυρα που δημιουργούνται γύρω από το Matlab ανοιχτά, ενώ έχει «κλείσει» η επιφάνεια εργασίας του, μπορεί να αποβεί επικίνδυνο για το λειτουργικό σύστημα του υπολογιστή. Ένας ακόμη τρόπος εξόδου, είναι να χρησιμοποιηθεί η επιλογή EXIT MATLAB από το μενού File της επιφάνειας εργασίας. Πριν γίνει έξοδος από το Matlab θα πρέπει να είναι σίγουρο ότι έχουν αποθηκευτεί οποιεσδήποτε μεταβλητές, έχουν εκτυπωθεί οποιαδήποτε γραφικά ή άλλα αρχεία που χρειάζονται και ούτω καθεξής. 11

Κεφάλαιο 2 Εισαγωγή στο gui (Graphical User Interface) 2.1 Εισαγωγή Μια γραφική διεπαφή χρήστη (GUI) είναι ένα γραφικό περιβάλλον εργασίας σε ένα πρόγραμμα. Ένα καλό GUI μπορεί να κάνει τα προγράμματα ευκολότερα στη χρήση, παρέχοντάς τους μια συνεπή εμφάνιση και με διαισθητικό έλεγχο, όπως κουμπιά (buttons), λίστες (List boxes), ρυθμιστικά (sliders), μενού (Menus) και ούτω καθεξής. Το GUI θα πρέπει να συμπεριφέρεται με ένα κατανοητό και προβλέψιμο τρόπο, έτσι ώστε ο χρήστης να ξέρει τι να περιμένει, όταν εκτελεί μια ενέργεια. Για παράδειγμα, όταν σε ένα κουμπί γίνεται ένα κλικ του ποντικιού, το GUI θα πρέπει να κινήσει τη διαδικασία που περιγράφεται στην ετικέτα του κουμπιού. 2.2 Πώς δουλεύει το γραφικό περιβάλλον χρήστη (GUI) Μια γραφική διεπαφή χρήστη (GUI) παρέχει στο χρήστη ένα οικείο περιβάλλον στο οποίο θα εργαστεί. Το περιβάλλον αυτό όπως προαναφέρθηκε περιέχει κουμπιά (Pushbuttons), Κουμπιά εναλλαγής (toggle buttons), καταλόγους (Lists), μενού (Menus), πλαίσια κειμένου (text boxes) κλπ, τα οποία είναι γνωστά στους χρήστες, έτσι ώστε οι δεύτεροι να μπορούν να επικεντρωθούν στη χρήση της εφαρμογής, παρά στους μηχανικούς που εμπλέκονται ώστε να κάνουν πράγματα. Ωστόσο, τα GUI είναι «δύσκολα» για τον προγραμματιστή, διότι μια εφαρμογή με βάση το GUI πρέπει να είναι προετοιμασμένη για τα κλικ του ποντικιού (ή ενδεχομένως για είσοδο από το πληκτρολόγιο) για κάθε στοιχείο του GUI ανά πάσα στιγμή. Αυτές οι είσοδοι είναι γνωστές ως γεγονότα(events), και ένα πρόγραμμα που αποκρίνεται στα γεγονότα ονομάζεται γεγονοστρεφές (event driven). Τα τρία κυρίαρχα στοιχεία που απαιτούνται για τη δημιουργία ενός GUI στο Matlab είναι τα εξής: 1. Συστατικά (Components). Κάθε στοιχείο στο GUI του Matlab είναι ένα γραφικό στοιχείο (κουμπιά, λίστες, πλαίσια κειμένου κλπ). Στους τύπους των στοιχείων περιλαμβάνονται γραφικοί έλεγχοι (Pushbuttons, edit boxes κλπ), στατικά στοιχεία όπως πλαίσια (frames) και συμβολοσειρές κειμένου (text strings), μενού (Menus), και άξονες (axes). Τα δυο πρώτα δημιουργούνται μέσω της συνάρτησης uicontrol, και τα μενού μέσω των συναρτήσεων uimenu και uicontextmenu. Οι άξονες οι οποίοι 12

χρησιμοποιούνται για την παρουσίαση γραφικών δεδομένων, δημιουργούνται μέσω της συνάρτησης axes. 2. Σχήματα (figures). Τα συστατικά ενός GUI πρέπει να διατάσσονται μέσα σε ένα σχήμα, το οποίο είναι ένα παράθυρο στην οθόνη του υπολογιστή. Στο παρελθόν, η δημιουργία των σχημάτων γινόταν αυτόματα, κάθε φορά που υπήρχε απεικόνιση δεδομένων. Ωστόσο, τα κενά σχήματα μπορούν να δημιουργηθούν μέσω της συνάρτησης figure και μπορούν να χρησιμοποιηθούν για να υποστηρίξουν οποιοδήποτε συνδυασμό των components. 3. Επανακλήσεις (callbacks). Τέλος, θα πρέπει να υπάρχει κάποιος τρόπος να εκτελεστεί μια ενέργεια εάν ο χρήστης κάνει κλικ σε ένα κουμπί, ή πληκτρολογήσει πληροφορίες. Ένα κλικ του ποντικιού ή το πάτημα ενός κουμπιού είναι ένα γεγονός (event) και το Matlab θα πρέπει να ανταποκρίνεται σε κάθε περίπτωση, αν το πρόγραμμα πρέπει να εκτελέσει τη λειτουργία του. Για παράδειγμα αν ένας χρήστης κάνει κλικ σε ένα κουμπί, το γεγονός αυτό θα πρέπει να προκαλέσει τον κώδικα του Matlab που υλοποιεί τη λειτουργία του κουμπιού αυτού, να εκτελεστεί. Ο εκτελέσιμος κώδικας που ανταποκρίνεται σε ένα γεγονός ονομάζεται επανάκληση (callback). Πρέπει να υπάρχει ένα callback που θα εφαρμόσει τη λειτουργία του σε κάθε γραφικό στοιχείο του GUI. Τα βασικά στοιχεία του GUI συνοψίζονται στον πίνακα 2.1 και ένα παράδειγμα με στοιχεία (elements) φαίνεται στο σχήμα 2.1. 13

Στοιχείο Δημιουργείται από Περιγραφή Γραφικοί Έλεγχοι Push Button uicontrol Ένα γραφικό στοιχείο το οποίο υλοποιεί το κουμπί (pushbutton). Ενεργοποιεί ένα callback όταν γίνεται πάνω του κλικ. Toggle Button uicontrol Ένα γραφικό στοιχείο που υλοποιεί ένα Toggle Button. Το Toggle Button είναι είτε «on» είτε «off» και αλλάζει κατάσταση κάθε φορά που επιλέγεται (clicked). Κάθε κλικ από κουμπί του ποντικιού επίσης ενεργοποιεί ένα callback. Radio Button uicontrol Το Radio Button είναι ένας τύπος του Toggle Button που εμφανίζεται σαν ένας μικρός κύκλος με μια τελεία στη μέση όταν είναι «on». Ομάδες των Radio Buttons χρησιμοποιούνται για να ενεργοποιήσουν αμοιβαία αποκλειστικές επιλογές. Κάθε κλικ του ποντικιού στο Radio Button ενεργοποιεί ένα callback. Check Box uicontrol Το Check Box είναι ένας τύπος του Toggle Button που 14

εμφανίζεται σαν ένα μικρό τετράγωνο με ένα checkmark μέσα όταν είναι «on». Κάθε κλικ του ποντικιού στο Check Box ενεργοποιεί ένα callback. Edit Box uicontrol To Edit Box εμφανίζει μια συμβολοσειρά κειμένου (text string) και δίνει την άδεια στο χρήστη να τροποποιεί την πληροφορία που εμφανίζεται. Το callback ενεργοποιείται όταν ο χρήστης πληκτρολογεί το κλειδί εισόδου (enter key). List Box uicontrol Το List Box είναι ένας γραφικός τρόπος που εμφανίζει σειρές από συμβολοσειρές κειμένου. Ένας χρήστης μπορεί να διαλέξει μια από τις συμβολοσειρές κειμένου με μονό ή διπλό κλικ πάνω του. Το Callback εμφανίζεται όταν ο χρήστης επιλέξει μια συμβολοσειρά. Popup Menus uicontrol Το Popup Menu είναι ένας γραφικός τρόπος που εμφανίζει σειρές από συμβολοσειρές κειμένου ως απόκριση σε ένα κλικ του ποντικιού. Όταν το Popup Menu δεν έχει πατηθεί, τότε μόνο η πρόσφατη επιλεγμένη συμβολοσειρά είναι ορατή. 15

Slider uicontrol Το Slider είναι ένας γραφικός τρόπος να ρυθμιστεί μια τιμή σε μια ομαλή, συνεχόμενη τάση σύροντας το slider με το ποντίκι. Κάθε αλλαγή του slider ενεργοποιεί ένα callback. Στατικά Στοιχεία Frame uicontrol Δημιουργεί ένα πλαίσιο τετράγωνου σχήματος και έχει μέσα μια φιγούρα. Τα πλαίσια χρησιμοποιούνται για να ομαδοποιήσουν σειρές από ελέγχους. Τα πλαίσια δεν εμφανίζουν ποτέ callbacks. Text Field uicontrol Δημιουργεί μια ετικέτα, η οποία είναι μια συμβολοσειρά κειμένου τοποθετημένη σε ένα σημείο στο σχήμα. Τα Text Fields δεν ενεργοποιούν ποτέ callbacks. Μενού και Άξονες Menu Items Uimenu Δημιουργεί ένα στοιχείο μενού (menu item). Τα Menu Items ενεργοποιούν ένα callback όταν το κουμπί του ποντικιού κάνει κλικ πάνω τους. Context Menus Uicontextmenu Δημιουργεί ένα context menu, το οποίο είναι ένα μενού που εμφανίζει ένα γραφικό αντικείμενο όταν ο χρήστης 16

κάνει αριστερό κλικ πάνω στο αντικείμενο αυτό. Axes axes Δημιουργεί μια καινούργια σειρά από άξονες για να εμφανίζει τα δεδομένα. Οι άξονες δεν ενεργοποιούν ποτέ callbacks. Πίνακας 2.1 Κάποια βασικά συστατικά του GUI Σχήμα 2.1 Παραπάνω φαίνονται παραδείγματα στοιχείων του GUI στο Matlab. Από πάνω προς τα κάτω και από αριστερά προς τα δεξιά, τα στοιχεία είναι τα εξής: (1) ένα Push Button, (2) ένα Toggle Button στην κατάσταση «on», (3) δύο Radio Buttons που περιβάλλονται από ένα πλαίσιο (frame), (4) 17

ένα Check Box, (5) ένα Text Field και ένα Edit Box, (6) ένα slider, (7) ένα σύστημα αξόνων (set of axes) και (8) ένα List Box. GUIDE (Περιβάλλον Ανάπτυξης GUI - GUI Development Environment) 2.3 Δημιουργώντας και εμφανίζοντας ένα GUI Τα GUIs στο Matlab δημιουργήθηκαν χρησιμοποιώντας ένα εργαλείο που ονομάζεται GUIDE. Το εργαλείο αυτό επιτρέπει στον προγραμματιστή να σχεδιάσει το γραφικό περιβάλλον (GUI), να επιλέξει, καθώς και να τοποθετήσει τα στοιχεία (components) του GUI που θα τοποθετήσει σε αυτό. Μόλις τα στοιχεία «μπουν» στη θέση τους, ο προγραμματιστής μπορεί να επεξεργαστεί τις ιδιότητές τους: Όνομα, χρώμα, μέγεθος, γραμματοσειρά, κείμενο που θα εμφανίζεται πάνω σε αυτό και ούτω καθεξής. Όταν το guide αποθηκεύσει το GUI, δημιουργείται ένα πρόγραμμα εργασίας. Αυτό περιλαμβάνει τις συναρτήσεις «σκελετό» τις οποίες μπορεί να τροποποιήσει ο προγραμματιστής, ώστε να εφαρμόσει τη συμπεριφορά του GUI. Όταν το guide εκτελείται, δημιουργείται ένας Layout Editor όπως φαίνεται στο σχήμα 1.2. Η μεγάλη λευκή περιοχή με τις γραμμές πλέγματος είναι η περιοχή διάταξης (layout area), όπου ο προγραμματιστής μπορεί να σχεδιάσει το GUI. Το παράθυρο του Layout Editor έχει μια παλέτα με τα στοιχεία του GUI στην αριστερή πλευρά της περιοχής διάταξης. Ένας χρήστης μπορεί να δημιουργήσει ένα οποιοδήποτε αριθμό GUI συστατικών, κάνοντας αρχικά κλικ στο επιθυμητό στοιχείο και στη συνέχεια σύροντας το περίγραμμά του στην περιοχή της διάταξης. Στο επάνω μέρος του παραθύρου υπάρχει μια μπάρα εργαλείων (toolbar). Περιέχει μια σειρά από χρήσιμα εργαλεία που επιτρέπουν στο χρήστη να διανέμει και να ευθυγραμμίσει τα συστατικά (components) του GUI, να προσθέσει μενού (menus) στο GUI και πολλά άλλα. Τα βασικά βήματα που απαιτούνται για τη δημιουργία ενός GUI στο Matlab είναι: 1. Λαμβάνεται η απόφαση για το ποια στοιχεία απαιτούνται για το GUI και ποια θα είναι η λειτουργία του κάθε στοιχείου. Κατόπιν σχεδιάζεται μια γενική διάταξη των στοιχείων γραπτά σε ένα κομμάτι χαρτί. 2. Χρησιμοποιείται το GUIDE (GUI Development Environment) για τη διάταξη των στοιχείων (components) σε ένα σχήμα (figure). Το μέγεθος του σχήματος, η ευθυγράμμιση και η απόσταση των στοιχείων μέσα στο σχήμα (figure) μπορούν να ρυθμιστούν χρησιμοποιώντας τα εργαλεία που βρίσκονται ενσωματωμένα στο guide. 18

3. Χρησιμοποιείται το εργαλείο του Matlab «Επιθεωρητής Ιδιοτήτων» (Property Inspector) που βρίσκεται επίσης ενσωματωμένο μέσα στο guide, ώστε να δώσει σε κάθε στοιχείο (component) ένα όνομα, μια ετικέτα (tag), καθώς και να ρυθμίσει τα χαρακτηριστικά του κάθε στοιχείου, όπως το χρώμα, το κείμενο που εμφανίζει και άλλα. 4. Αποθηκεύεται το figure σε ένα αρχείο. Όταν θα αποθηκευτεί, δύο αρχεία θα δημιουργηθούν στο δίσκο τα οποία θα έχουν το ίδιο όνομα, αλλά διαφορετική επέκταση. Το αρχείο «fig» περιέχει το ακριβές GUI που έχει δημιουργηθεί. Το αρχείο «MFile» περιέχει τον κώδικα που θα φορτώσει το σχήμα (figure) και τις βασικές callback συναρτήσεις για κάθε στοιχείο του GUI. 5. Γράφεται ο κώδικας για να εφαρμοστεί η συμπεριφορά που σχετίζεται με κάθε callback συνάρτηση. 19

Σχήμα 2.2 Το παράθυρο εργαλείων του GUIDE Σχήμα 2.3 Ο Property Inspector ο οποίος δείχνει τις ιδιότητες του Push Button. Παρατηρείται ότι η συμβολοσειρά (string) έχει τιμή «Click here», και το Tag έχει τιμή «MyFirstButton». Για το κουμπί (pushbutton) μπορούν να ρυθμιστούν πολλές ιδιότητες όπως χρώμα, μέγεθος, γραμματοσειρά, στοίχιση του κειμένου και άλλα. Ωστόσο, θα πρέπει να οριστούν δύο ιδιότητες: Η ιδιότητα String Property η οποία περιέχει το κείμενο που θα εμφανίζεται, και η ιδιότητα Tag Property που είναι το όνομα του κουμπιού. Σε αυτή την περίπτωση, το «String Property» θα οριστεί σε «click here» και το «Tag Property» σε «MyFirstButton». Για το πεδίο κειμένου (text field) θα πρέπει να οριστούν επίσης δύο ιδιότητες: Η ιδιότητα String Property η οποία περιέχει το κείμενο που θα εμφανίζεται, και η ιδιότητα Tag Property που είναι το όνομα του πεδίου κειμένου. Το όνομα αυτό θα απαιτηθεί από την callback συνάρτηση ώστε να εντοπιστεί και να ενημερωθεί το πεδίο κειμένου. Σε αυτή την περίπτωση το «String Property» θα οριστεί σε «Total clicks: 0» και το «Tag Property» εξ ορισμού σε «MyFirstText». Η περιοχή διάταξης μετά από αυτά τα βήματα φαίνεται στο σχήμα 2.3. Είναι δυνατό να καθοριστούν οι ιδιότητες ενός 20

figure κάνοντας κλικ σε ένα «καθαρό» σημείο του Layout Editor και στη συνέχεια, χρησιμοποιώντας τον Property Inspector να εξεταστούν και να οριστούν οι ιδιότητες του figure. Αν και δεν απαιτείται, είναι μια καλή ιδέα να οριστεί το Name Property του figure. Η συμβολοσειρά (string) στο Name Property, θα εμφανίζεται στη γραμμή τίτλου του GUI που προκύπτει όταν εκτελείται. 2.4 Ιδιότητες Αντικειμένων Κάθε αντικείμενο του GUI περιλαμβάνει μια εκτεταμένη λίστα ιδιοτήτων η οποία μπορεί να χρησιμοποιηθεί για να προσαρμόσει το αντικείμενο. Αυτές οι ιδιότητες διαφέρουν ελαφρώς από τύπο σε τύπο, σχήματα (figures), άξονες (axes), uicontrols. Οι ιδιότητες των αντικειμένων μπορούν να τροποποιηθούν χρησιμοποιώντας είτε τον Επιθεωρητή Ιδιοτήτων (Property Inspector) είτε τις συναρτήσεις get και set. Παρ όλα αυτά, ο Property Inspector είναι ένας βολικός τρόπος να προσαρμοστούν οι ιδιότητες κατά τη σχεδίαση του GUI. Πρέπει να χρησιμοποιούνται οι συναρτήσεις get και set για να προσαρμόζονται δυναμικά μέσα από ένα πρόγραμμα, όπως μέσα σε μια callback συνάρτηση. Ιδιότητα Color Menu Bar Name Περιγραφή Προσδιορίζει το χρώμα του σχήματος. Η τιμή είναι είτε το προκαθορισμένο χρώμα όπως το «r», «g» ή το «b», ή αλλιώς ένα διάνυσμα τριών στοιχείων προσδιορίζοντας τα κόκκινα, τα πράσινα και τα μπλε συστατικά του χρώματος σε 0-1 σκάλα. Για παράδειγμα, το χρώμα ματζέντα θα προσδιοριστεί από (101). Προσδιορίζει αν η προεπιλεγμένη ρύθμιση των μενού θα εμφανίζεται στο σχήμα ή όχι. Οι πιθανές τιμές είναι «figure» για να εμφανίζονται στο προεπιλεγμένο μενού, ή «none» για να τα διαγράψουμε. Η συμβολοσειρά περιέχει το όνομα του 21

εμφανίζεται στη γραμμή τίτλου του σχήματος. NumberTitle Position Selection Type Tag Units Visible Προσδιορίζει αν ο αριθμός του σχήματος θα εμφανίζεται στη γραμμή τίτλου ή όχι. Πιθανές τιμές είναι το «on» και το «off». Προσδιορίζει τη θέση του σχήματος στην οθόνη στις τιμές που προσδιορίζονται από το «units». Αυτή η τιμή δέχεται ένα διάνυσμα τεσσάρων στοιχείων στο οποίο τα δύο πρώτα στοιχεία είναι το «x» και το «y» (τα οποία είναι τοποθετημένα στην κάτω αριστερή γωνία του σχήματος), και τα επόμενα δύο στοιχεία είναι το πλάτος (width) και το ύψος (height) του σχήματος. Προσδιορίζει τον τύπο της επιλογής για το τελευταίο κλικ του ποντικιού σε αυτό το σχήμα. Ένα μονό κλικ επιστρέφει τον τύπο «normal». Ένα διπλό κλικ επιστρέφει τον τύπο «open». Αυτές είναι πρόσθετες επιλογές (βλ. Matlab στην ηλεκτρονική τεκμηρίωση). To όνομα του σχήματος, το οποίο μπορεί να χρησιμοποιηθεί για να τοποθετηθεί από το χρήστη. Οι μονάδες χρησιμοποιούνται για να περιγράψουν τις θέσεις του σχήματος. Πιθανές επιλογές είναι οι ίντσες (intches), τα εκατοστά (centimeters), κανονικοποιημένο (normalized), τα Pixels ή οι χαρακτήρες (characters). Οι προεπιλεγμένες μονάδες είναι τα Pixels. Προσδιορίζει αν το σχήμα είναι ορατό ή όχι. Πιθανές τιμές είναι το «on» και το «off». 22

Window Style Προσδιορίζει αν αυτό το σχήμα είναι κανονικό ή τροπικό (modal) (βλ. συζήτηση στα dialog Boxes). Πιθανές τιμές είναι το «normal» και το «modal». Πίνακας 2.2 Σημαντικές Ιδιότητες των figures 2.5 Συναρτήσεις Callback του GUI Όταν ο χρήστης είναι έτοιμος να δημιουργήσει μια συνάρτηση callback για ένα δεδομένο αντικείμενο, κάνει δεξί κλικ στο επιλεγμένο αντικείμενο, και μετά στην επιλογή Edit Callback. Το M-File που συνδέεται με το GUI θα έρθει στην επιφάνεια σε ένα Editor / Debugger παράθυρο, με τον κέρσορα τοποθετημένο σε ένα σύνολο γραμμών, όπως αυτές παρακάτω (αν ακόμα δεν έχει πραγματοποιηθεί αποθήκευση του GUI θα ζητηθεί να γίνει αρχικά, οπότε και το GUIDE να γνωρίζει τι όνομα να δώσει στο M-File. function varargout = pushbutton1 Callback(h, eventdata, handles, varargin) % Stub for Callback of the uicontrol handles.pushbutton1. disp( pushbutton1 Callback not implemented yet. ) % ------------------- end pushbutton1 Callback ----------------------- Στην περίπτωση αυτή υποτίθεται ότι το αντικείμενο που επιλέχθηκε ήταν το πρώτο Push Button που δημιουργήθηκε στο Layout Editor. Η ονομασία (string) PushButton1 παραπάνω είναι η προεπιλεγμένη ετικέτα του. Ένας άλλος τρόπος για να βρεθεί η ετικέτα (tag) του συγκεκριμένου αντικειμένου, είναι να επιλεχθεί και μετά φαίνεται στο Property Inspector. Το μόνο που χρειάζεται να πραγματοποιηθεί τώρα για να ενεργοποιηθεί το Push Button είναι να αντικατασταθεί η γραμμή με την εντολή disp στο κομμάτι κώδικα που φαίνεται παραπάνω, με εντολές που θέλει ο χρήστης να εκτελεστούν όταν κάνει κλικ στο κουμπί. Φυσικά χρειάζεται επίσης να αποθηκευτεί το M-File. Αυτό μπορεί να γίνει με το να ενεργοποιηθεί το GUI από το Editor / Debugger, ή από το Layout Editor. Κάθε φορά που αποθηκεύεται ή ενεργοποιείται το GUI, ένα σύνολο τεσσάρων γραμμών κώδικα όπως αυτές που 23

φαίνονται παραπάνω προστίθενται αυτόματα στο M-File του GUI για κάθε καινούργιο αντικείμενο ή στοιχεία του μενού που έχουν προστεθεί στο GUI και απαιτείται να έχουν callback συναρτήσεις. Το Matlab έχει έναν αριθμό από παράθυρα διαλόγου που μπορούν να χρησιμοποιηθούν είτε σαν callback συναρτήσεις, είτε μέσα σε ένα κοινό M-File. Για παράδειγμα, μπορεί να χρησιμοποιηθεί το inputdlg στη θέση του input. Πληκτρολογείται «Help uitools» για πληροφορίες στα διαθέσιμα παράθυρα διαλόγου. Χρησιμοποιούμε την παρακάτω callback συνάρτηση για το Toggle Button με ετικέτα «Hold is off»: set(handles.figure1, HandleVisibility, callback ) if get(h, Value ) hold on set(h, String, Hold is ON ); else hold off set(h, String, Hold is OFF ); end Λαμβάνεται η ετικέτα «Value» από το Toggle Button με τον ίδιο τρόπο όπως στο Popup Menu, αλλά για ένα Toggle Button αυτή η τιμή είναι είτε 0 αν το κουμπί είναι «out» (εξ ορισμού), είτε 1 αν το κουμπί είναι πατημένο «in» (Radio Buttons και Check Boxes επίσης έχουν μια τιμή 0 ή 1 στην ιδιότητα «Value»). Όταν ο χρήστης πατάει αρχικά το Toggle Button, η συνάρτηση callback παραπάνω «τρέχει» το hold on και επαναφέρει τη συμβολοσειρά (string) που εμφανίζεται στο Toggle Button ώστε να φανεί η αλλαγή. Την επόμενη φορά που ο χρήστης θα πατήσει το κουμπί. Αυτές οι λειτουργίες θα έχουν αντιστραφεί. Τελικά, αν δημιουργηθεί ένα GUI με ένα «κουτί» αξόνων, παρατηρείται ότι το GUIDE τοποθετεί στο M-File του GUI ένα περίγραμμα (όπως ένα callback περίγραμμα), αλλά με την ονομασία «ButtondownFcn» αντί αυτού. Όταν ο χρήστης κάνει κλικ σε ένα αντικείμενο αξόνων, καλείται αυτός ο τύπος της συνάρτησης αντί μιας callback συνάρτησης, αλλά μέσα στο περίγραμμα μπορεί να γραφεί η συνάρτηση όπως και μια callback συνάρτηση. Μπορεί ακόμα να συνδεθεί τόσο μια συνάρτηση με ένα αντικείμενο το οποίο έχει ήδη μια callback συνάρτηση, απλά κάνοντας κλικ στο αντικείμενο στο 24

Layout Editor και επιλέγοντας Edit ButtondownFcn. Αυτή η συνάρτηση θα τρέξει όταν ο χρήστης θα κάνει δεξί κλικ, σε αντίθεση με τη συνάρτηση callback όπου ο χρήστης κάνει αριστερό κλικ. Μπορούν επίσης οι συναρτήσεις να συνδεθούν με πολλούς άλλους τύπους συμβάντων των χρηστών. Για περισσότερες πληροφορίες, διαθέσιμη είναι η ηλεκτρονική τεκμηρίωση, ή και ο πειραματισμός κάνοντας δεξί κλικ σε διάφορα αντικείμενα, καθώς και στο πλέγμα πίσω από αυτά στο Layout Editor. 2.6 Δημοσίευση των προγραμμάτων σε Matlab Για να δημοσιευτούν τα προγράμματα γραμμένα σε Matlab ή να δρομολογηθούν προς το Διαδίκτυο, υπάρχουν μια σειρά από επιλογές, η κάθε μια από τις οποίες έχει πλεονεκτήματα και μειονεκτήματα. 2.6.1 M-Files, M-Books, Reports και αρχεία HTML Αρχικά, δεδομένου ότι τα M-Files (είτε τα script M-Files είτε τα function M-Files) είναι απλά αρχεία κειμένου, μπορούν να δημοσιευτούν όπως είναι σε μια σελίδα στο Διαδίκτυο για χρήστες που ενδιαφέρονται να τα κατεβάσουν. Είναι πιο πιθανό ωστόσο, να εκδηλωθεί ενδιαφέρον για ενσωμάτωση των γραφικών του Matlab σε μία ιστοσελίδα. Αν υπάρχει αυτή η περίπτωση, υπάρχουν βασικά και τρεις επιλογές: 1. Μπορεί να γίνει επεξεργασία του εγγράφου ως M-Book στο Microsoft Word. Μετά τον εντοπισμό των σφαλμάτων και την εκτέλεση του M-Book, υπάρχουν δύο επιλογές: Η πρώτη είναι το M-Book απλά να δημοσιευτεί σε ένα web site, επιτρέποντας στους αναγνώστες να το διαβάσουν έχοντας απλά εγκατεστημένο το Word, και να το εκτελέσουν έχοντας εγκατεστημένο τόσο το word όσο και το Matlab. Η δεύτερη επιλογή είναι να γίνει κλικ στο File:Save as και όταν εμφανιστεί το παράθυρο διαλόγου, κάτω από το «Save As Type», κλικ στο «Web Page (*.htm, *.html)». Η διαδικασία αυτή θα αποθηκεύσει ολόκληρο το έγγραφο σε μορφή HTML (Hyper Text Markup Language) για να δημοσιευτεί στο Διαδίκτυο και θα μετατρέψει αυτόματα όλα τα γραφικά στη σωστή μορφή. Μόλις το διαδικτυακό αυτό αρχείο δημιουργηθεί, μπορεί να τροποποιηθεί με έναν οποιοδήποτε επεξεργαστή HTML (συμπεριλαμβανομένου και του Word). 25

2. Αν υπάρχει εγκατεστημένο το Matlab Report Generator, αυτό μπορεί να πάρει τα Matlab προγράμματα και να τα μετατρέψει σε HTML reports με ενσωματωμένα γραφικά. 3. Τέλος, ένα web έγγραφο μπορεί να δημιουργηθεί με τον εκάστοτε επιθυμητό HTML επεξεργαστή και να προσθέσει συνδέσεις (links) στα Matlab γραφικά. Για να λειτουργήσει αυτό, θα πρέπει να αποθηκευτούν τα γραφικά σε μια «βολική» μορφή. Ο απλούστερος τρόπος για να γίνει αυτό είναι να επιλεχθεί File: Export στο figure window. Κάτω από το «Save As Type» που εμφανίζεται στο παράθυρο διαλόγου μπορεί να επιλεχθεί για παράδειγμα «JPEG images (*.jpeg)» και το αρχείο JPEG που θα προκύψει μπορεί να ενσωματωθεί στο έγγραφο με μια ετικέτα όπως <img src=sphere.jpg>. Αν το μέγεθος της εικόνας που προκύπτει δεν είναι το επιθυμητό, μπορεί να τροποποιηθεί με ένα οποιοδήποτε πρόγραμμα επεξεργασίας εικόνας (κάθε υπολογιστής στις μέρες μας έχει έναν!). Αν υπάρχει σκοπιμότητα η εικόνα αυτή να τροποποιηθεί πριν τη δημοσίευση, είναι προτιμότερο το Matlab να κάνει την αποθήκευση σε TIFF μορφή. Με αυτόν τον τρόπο καμία ανάλυση δε θα χαθεί πριν να ξεκινήσει η διαδικασία της επεξεργασίας. Για έναν έμπειρο χρήστη που θα ήθελε να κάνει χρήση του Matlab ως μηχανή για να τροφοδοτήσει έναν διαδραστικό δικτυακό τόπο, θα μπορούσε να γίνει αγορά του Matlab Web Server το οποίο έχει σχεδιαστεί ακριβώς γι αυτό το σκοπό. Δείγματα του τι μπορεί να κάνει βρίσκονται εδώ : http://www.mathworks.com/products/demos/webserver/ 2.7 Διαμορφώνοντας τον Web Browser Παρακάτω γίνεται επεξήγηση για το πώς να ρυθμιστούν τα δημοφιλέστερα προγράμματα περιήγησης στο Διαδίκτυο, ώστε να εμφανίζονται M-Files σε έναν M-File Editor ή να ξεκινούν τα M-Books αυτόματα. 26

2.7.1 Microsoft Internet Explorer Αν το Matlab και το Word βρίσκονται εγκατεστημένα στον υπολογιστή, ο Internet Explorer θα πρέπει αυτόματα να γνωρίζει πώς να ανοίξει M-Books. Με τα M-Files, μπορεί να δοθεί μια επιλογή λήψης του αρχείου, είτε «ανοίγματος» αυτού. Αν επιλεχθεί το άνοιγμα του αρχείου, θα εμφανιστεί στον M-File Editor μια ελαφρώς απλούστερη έκδοση του Editor / Debugger. 2.7.2 Netscape Navigator Η κατάσταση με το Netscape Navigator είναι λίγο πιο περίπλοκη. Με ένα κλικ σε ένα M-File (σε αυτό με κατάληξη.m) κατά πάσα πιθανότητα θα εμφανιστεί ως ένα απλό αρχείο κειμένου. Μπορεί να γίνει αρχικά αποθήκευση του αρχείου και μετά άνοιγμα αυτού με τον M-File Editor. Σε έναν υπολογιστή (αλλά όχι σε λειτουργικό σύστημα UNIX) μπορεί να γίνει άνοιγμα του M-File Editor χωρίς να γίνει εγκατάσταση του Matlab. Με κλικ του ποντικιού σε ένα M- Book (σε αυτό με κατάληξη.doc) ο browser θα δώσει πιθανώς την επιλογή για το άνοιγμα ή την αποθήκευση, εκτός κι αν υπάρχει προδιαμορφωμένο Netscape ώστε να γίνει άνοιγμα χωρίς ειδοποίηση (αυτό εξαρτάται από τις ρυθμίσεις ασφαλείας). 27

Σχήμα 2.4 Πλαίσιο Ιδιοτήτων του Netscape Όσον αφορά το πιο πρόγραμμα χρησιμοποιεί το Netscape ώστε να ανοίξει ένα αρχείο, ελέγχεται από τις προτιμήσεις του χρήστη. Για να πραγματοποιηθούν αλλαγές, επιλέγεται Edit: Preferences στη γραμμή μενού (menubar) του Netscape, μετά θα πρέπει να βρεθεί το Netscape section, και έπειτα αναζήτηση για την υποενότητα «Applications». Θα εμφανιστεί ένα πλαίσιο που μοιάζει με το σχήμα 2.4 (η εμφάνισή του εξαρτάται από το λειτουργικό σύστημα του υπολογιστή, καθώς και από την έκδοση του Netscape). Μετά θα πρέπει να γίνει αναζήτηση για το αρχείο τύπου «Microsoft Word Document» και αν είναι απαραίτητο, να αλλαχθεί το πρόγραμμα που χρησιμοποιείται για να ανοίγει τέτοιου είδους αρχεία. Τυπικές επιλογές θα είναι το Word ή το Wordpad για τα Windows και το StarOffice ή το PC File Viewer για τα UNIX. Οποιαδήποτε άλλη επιλογή πέρα από το Word θα επιτρέψει μόνο την ανάγνωση των M-Books και όχι την εκτέλεσή τους. 28

Κεφάλαιο 3 Μέθοδος Ελαχίστων Τετραγώνων Η μέθοδος των ελαχίστων τετραγώνων για τον προσδιορισμό των παραμέτρων ενός γραμμικού συστήματος έχει ως εξής. Έστω το σύστημα 1 x k Ax k Bu k όπου A, B είναι πίνακες καταλλήλων διαστάσεων 29

a a a a A: a a an1 an2 a 11 12 1n 21 22 2n nn, b b b b B: b b bn1 bn2 b 11 12 1m 21 22 2m nm xk και uk είναι τα διανύσματα κατάστασης (εξόδου) και εισόδου του συστήματος. Εάν είναι διαθέσιμες N μετρήσεις k 0,1, N. το παραπάνω σύστημα παίρνει τις τιμές x 2 1 x 3 2 xn N 1 και ισοδύναμα γράφεται όπως η παρακάτω εξίσωση πίνακα X, 2 3 x x X :, xn 1 2 : N 1 Η μέθοδος των ελαχίστων τετραγώνων προσδιορίζει τα στοιχεία των A, B από τις παρακάτω σχέσεις 30

31 1 1 2 T T X 11 21 1 12 22 1 2 1 2 : n n n n nn a a a a a vec a a a a, 11 21 1 12 22 2 2 1 2 : n n m m nm b b b b b vec b b b b

Κεφάλαιο 4 Επεξήγηση Κώδικα 4.1 ΕΠΕΞΗΓΗΣΗ ΣΥΝΑΡΤΗΣΗΣ gerantidou_kiskoridou_3 Στα πλαίσια της συνάρτησης αυτής (που εμπεριέχεται στο cd) δηλώνουμε και ορίζουμε τα χαρακτηριστικά όλων των αντικειμένων που υπάρχουν στο Graphical User Interface. Πιο συγκεκριμένα Στις γραμμές 18-28 του κώδικα, δημιουργούμε ένα νέα αντικείμενο. Το ονομάζουμε Signals and Systems. Το αντικείμενο αυτό είναι το περιβάλλον μέσα στο οποίο θα τοποθετήσουμε μετά όλα τα υπόλοιπα αντικείμενα (buttons, edit boxes κλπ). Hf=figure('menubar','none',... 'integerhandle','off',... 'units','normalized',... 'position',[0.2,0.2,0.7,0.7],... 'tag','component Selection',... 'toolbar','none',... 'NumberTitle','off',... 'windowstyle','normal',... 'name','signals & Systems',... 'Color',[0.9 0.6 0.8],... 'resize','on'); 32

Στις γραμμές 32-40 ορίζουμε το Push button με όνομα Data File, το οποίο μας επιτρέπει να ανοίξουμε excel αρχείο. Load_Data_File=uicontrol('Parent',Hf,... 'style','pushbutton',... 'units','normalized',... 'position',[0.89,0.9,0.06,0.05],... 'horizontalalignment','center',... 'SelectionHighlight','off',... 'Value',0,... 'String','DATA FILE',... 'Callback',@add_datafile);%#ok<*NASGU> Στις γραμμές 42-51 ορίζουμε το List Box με όνομα List Box States (το όνομα δεν φαίνεται), στο οποίο μας εμφανίζονται όλα τα διακριτά σημεία του αρχείου excel το οποίο επιλέξαμε να ανοίξουμε. List_Box_States=uicontrol('Parent',Hf,... 'style','listbox',... 'units','normalized',... 'position',[0.8,0.6,0.05,0.2],... 'horizontalalignment','center',... 'SelectionHighlight','off',... 33

'Max',realmax,... 'Visible','on',... 'String',' ',... 'Callback',@add_datafile); Στις γραμμές 53-62 ορίζουμε το Push Button με όνομα Select Input το οποίο πατώντας το (αφού επιλέξουμε ένα σημείο), επιλέγει το σημείο αυτό και το εισάγει στη λίστα με τις εισόδους. Select_Input=uicontrol('Parent',Hf,... 'style','pushbutton',... 'units','normalized',... 'position',[0.7,0.85,0.1,0.03],... 'horizontalalignment','center',... 'SelectionHighlight','off',... 'Value',0,... 'Visible','off',... 'String','Select Input',... 'Callback',@add_datafile); Στις γραμμές 64-73 ορίζουμε το Push Button με όνομα Remove Input το οποίο πατώντας το (αφού επιλέξουμε ένα σημείο από τη λίστα των σημείων εισόδου), εξάγει το σημείο από τη λίστα αυτή. Remove_Input=uicontrol('Parent',Hf,... 'style','pushbutton',... 'units','normalized',... 'position',[0.7,0.55,0.1,0.03],... 'horizontalalignment','center',... 'SelectionHighlight','off',... 'Value',0,... 'Visible','off',... 'String','Remove Input',... 34

'Callback',@add_datafile); Στις γραμμές 75-84 ορίζουμε το Push Button με όνομα Select Output το οποίο πατώντας το (αφού επιλέξουμε ένα σημείο), επιλέγει το σημείο αυτό και το εισάγει στη λίστα με τις εξόδους. Select_Output=uicontrol('Parent',Hf,... 'style','pushbutton',... 'units','normalized',... 'position',[0.85,0.85,0.1,0.03],... 'horizontalalignment','center',... 'SelectionHighlight','off',... 'Value',0,... 'Visible','off',... 'String','Select Output',... 'Callback',@add_datafile); Στις γραμμές 86-95 ορίζουμε το Push Button με όνομα Remove Output το οποίο πατώντας το (αφού επιλέξουμε ένα σημείο από τη λίστα των σημείων εξόδου), εξάγει το σημείο από τη λίστα αυτή. 35

Remove_Output=uicontrol('Parent',Hf,... 'style','pushbutton',... 'units','normalized',... 'position',[0.85,0.55,0.1,0.03],... 'horizontalalignment','center',... 'SelectionHighlight','off',... 'Value',0,... 'Visible','off',... 'String','Remove Output',... 'Callback',@add_datafile); Στις γραμμές 97-105 ορίζουμε το List Box με όνομα Text_Box_I (το όνομα δεν φαίνεται). Είναι το list box μέσα στο οποίο φαίνονται όλα τα σημεία που έχουμε επιλέξει να είναι οι είσοδοι στη γραφική μας παράσταση. Text_Box_I=uicontrol('Parent',Hf,... 'style','listbox',... 'units','normalized',... 'position',[0.7,0.6,0.1,0.2],... 'horizontalalignment','center',... 'SelectionHighlight','off',... 'Max',realmax,... 'Visible','on',... 'String',' '); Στις γραμμές 107-117 δημιουργούμε ένα text με όνομα SYSTEM INPUTS. Είναι το κείμενο που βρίσκεται πάνω από το αντίστοιχο List Box και διευκολύνει το χρήστη να καταλάβει τί ακριβώς πρέπει να τοποθετηθεί στη συγκεκριμένη λίστα. 36

Text_Box_SYSTEM_INPUTS=uicontrol('Parent',Hf,... 'style','text',... 'units','normalized',... 'position',[0.7,0.8,0.1,0.02],... 'horizontalalignment','center',... 'SelectionHighlight','off',... 'Max',realmax,... 'BackgroundColor',[0.5 0.4 1],... 'FontWeight','bold',... 'Visible','on',... 'String','SYSTEM INPUTS'); Στις γραμμές 119-127 ορίζουμε το List Box με όνομα Text_Box_Ο (το όνομα δεν φαίνεται). Είναι το list box μέσα στο οποίο φαίνονται όλα τα σημεία που έχουμε επιλέξει να είναι οι έξοδοι στη γραφική μας παράσταση. Text_Box_O=uicontrol('Parent',Hf,... 'style','listbox',... 'units','normalized',... 'position',[0.85,0.6,0.1,0.2],... 'horizontalalignment','center',... 'SelectionHighlight','off',... 'Max',realmax,... 'Visible','on',... 'String',' '); Στις γραμμές 129-139 δημιουργούμε ένα text με όνομα SYSTEM OUTPUTS. Είναι το κείμενο που βρίσκεται πάνω από το αντίστοιχο List Box και διευκολύνει το χρήστη να καταλάβει τί ακριβώς πρέπει να τοποθετηθεί στη συγκεκριμένη λίστα. 37

Text_Box_SYSTEM_OUTPUTS=uicontrol('Parent',Hf,... 'style','text',... 'units','normalized',... 'position',[0.85,0.8,0.1,0.02],... 'horizontalalignment','center',... 'SelectionHighlight','off',... 'Max',realmax,... 'BackgroundColor',[0.5 0.4 1],... 'FontWeight','bold',... 'Visible','on',... 'String','SYSTEM OUTPUTS'); Στις γραμμές 141-151 δημιουργούμε ένα text με όνομα STATES. Είναι το κείμενο που βρίσκεται πάνω από το αντίστοιχο List Box και διευκολύνει το χρήστη να καταλάβει τί ακριβώς υπάρχει μέσα στη συγκεκριμένη λίστα. DATA=uicontrol('Parent',Hf,... 'style','text',... 'units','normalized',... 'position',[0.8,0.8,0.05,0.02],... 'horizontalalignment','center',... 'SelectionHighlight','off',... 'Max',realmax,... 'BackgroundColor',[0.5 0.4 1],... 'FontWeight','bold',... 'Visible','on',... 'String','STATES'); Στις γραμμές 153-161 ορίζουμε ένα Push Button με όνομα Reset. Πατώντας το συγκεκριμένο κουμπί, σβήνονται τα σημεία από όλα τα List Boxes, καθώς και η γραφική τους απεικόνιση και το GUI επανέρχεται στην αρχική του μορφή. 38

Reset=uicontrol('Parent',Hf,... 'style','pushbutton',... 'units','normalized',... 'position',[0.89,0.3,0.06,0.05],... 'horizontalalignment','center',... 'SelectionHighlight','off',... 'Value',0,... 'String','RESET',... 'Callback',@add_datafile); %#ok<*nasgu> Στις γραμμές 164-172 ορίζουμε ένα Push Button με όνομα Model. Πατώντας το συγκεκριμένο κουμπί καλείται η συνάρτηση με δεδομένα τα αριθμητικά data από τις επιλεγμένες εισόδους (x) και εξόδους (y). Model=uicontrol('Parent',Hf,... 'style','pushbutton',... 'units','normalized',... 'position',[0.9,0.1,0.08,0.05],... 'horizontalalignment','center',... 'SelectionHighlight','off',... 'Value',0,... 'String','MODEL',... 'Callback',@lssscpe_v02); Στις γραμμές 174-183 ορίζουμε το List Box με όνομα List_Box_model (το όνομα δεν φαίνεται). Είναι το list box το οποίο έχει τις εξόδους από το list box με όνομα «System Outputs», απλά με διαφορετική μορφή. Δηλαδή αν οι έξοδοι στο «System Outputs» είναι x2, x7, x24, στο List box του μοντέλου αυτού θα είναι y2, y7, y24. 39

List_Box_model=uicontrol('Parent',Hf,... 'style','listbox',... 'units','normalized',... 'position',[0.8,0.3,0.05,0.2],... 'horizontalalignment','center',... 'SelectionHighlight','off',... 'Max',realmax,... 'Visible','off',... 'String',' ',... 'Callback',@plotmodel); Στη γραμμή 185 ορίζουμε τους άξονές μας μέσα στο GUI. F1=axes('Parent',Hf,'position',[0.1 0.3 0.5 0.5],'Visible','off'); Στις γραμμές 189-190 τοποθετούμε και δυο επιλογές στο menu bar του Gui μας: την επιλογή Save Figure με την οποία σώζουμε την γραφική μας παράσταση ως ένα JPEG αρχείο, και τέλος την επιλογή Save Model με την οποία σώζουμε τη γραφική μας παράσταση ως ένα.xls αρχείο. menu1=uimenu(hf,'label','save Figure','Separator','on','Visible','on','Callback',@save_figure); %#ok<*nasgu> menu2=uimenu(hf,'label','save Model','Separator','on','Visible','on','Callback',@save_model); 40

4.2 ΕΠΕΞΗΓΗΣΗ ΕΝΤΟΛΩΝ ΚΑΙ ΙΔΙΟΤΗΤΩΝ ΤΗΣ ΣΥΝΑΡΤΗΣΗΣ gerantidou_kiskoridou_3 4.2.1 Function Η συνάρτηση function [out1, out2, ] = funname (in1, in2, ) ορίζει τη λειτουργία funname η οποία δέχεται τις εισόδους in1, in2 κλπ και επιστρέφει τις εξόδους out1, out2 κλπ. Μπορούν να προστεθούν νέες συναρτήσεις στο λεξικό του Matlab με το να εκφράζονται ως όροι των ήδη υπαρχόντων συναρτήσεων. Οι υπάρχουσες εντολές και συναρτήσεις που συνθέτουν τη νέα λειτουργία, «διαμένουν» σε ένα αρχείο κειμένου που ονομάζεται M-File. Τα M-Files μπορούν να είναι είτε σενάρια (scripts), είτε συναρτήσεις. Τα scripts είναι απλά αρχεία που περιέχουν μια σειρά δηλώσεων του Matlab. Οι συναρτήσεις κάνουν χρήση των δικών τους τοπικών μεταβλητών και δέχονται εισόδους. Το όνομα ενός M-File ξεκινά με έναν αλφαβητικό χαρακτήρα και έχει ως επέκταση αρχείου την.m. Το όνομα αυτό, εκτός από την επέκτασή του, είναι αυτό που το Matlab αναζητά κάθε φορά που ο χρήστης θέλει να χρησιμοποιήσει το script ή την συνάρτηση. Η γραμμή στο επάνω μέρος ενός M-File περιέχει τον συντακτικό ορισμό του. Το όνομα της συνάρτησης, όπως ορίζεται στην πρώτη γραμμή του M-File, πρέπει να είναι ίδιο με το όνομα του αρχείου, χωρίς την.m επέκταση. Οι μεταβλητές μέσα στο σώμα της συνάρτησης είναι όλες τοπικές μεταβλητές. Μια συνάρτηση μπορεί να τερματιστεί με μια δήλωση «end» στο τέλος, αλλά στις περισσότερες περιπτώσεις, αυτό είναι προαιρετικό. Η δήλωση «end» απαιτείται μόνο σε M- Files τα οποία περιέχουν μία ή περισσότερες φωλιασμένες (nested) συναρτήσεις. Μέσα σε κάθε M-File, κάθε συνάρτηση πρέπει να τερματίζεται με μια δήλωση «end». Όταν το Matlab δεν αναγνωρίζει μια συνάρτηση βάση του ονόματος, ψάχνει στο δίσκο για ένα αρχείο με το ίδιο όνομα. Αν η συνάρτηση βρεθεί, το Matlab θα την τοποθετήσει στη μνήμη για μεταγενέστερη χρήση. Όταν καλείται ένα M-File από τη γραμμή εντολών ή από το εσωτερικό ενός άλλου M-File, το Matlab αναλύει τη λειτουργία του και την αποθηκεύει στη μνήμη. Η αναλυμένη πλέον συνάρτηση παραμένει στη μνήμη έως ότου εκκαθαριστεί με την εντολή «clear» ή με το κλείσιμο του Matlab. 4.2.2 Global (Χ Υ Ζ) 41

Εδώ οι μεταβλητές X, Y και Z ορίζονται ως μεταβλητές καθολικής εμβέλειας. Κανονικά, κάθε συνάρτηση του Matlab η οποία ορίζεται από ένα M-File, έχει και τις δικές της τοπικές μεταβλητές οι οποίες είναι διαφορετικές τόσο από εκείνες των άλλων συναρτήσεων, όσο και από εκείνες του πεδίου εργασίας. Ωστόσο, αν πολλές συναρτήσεις (ενδεχομένως και ο χώρος εργασίας - workspace) δηλώνουν όλοι ένα συγκεκριμένο όνομα ως καθολικό, όλοι μοιράζονται ένα μοναδικό αντίγραφο αυτής της μεταβλητής. Κάθε ανάθεση σε αυτή τη μεταβλητή, σε οποιαδήποτε συνάρτηση, είναι διαθέσιμη και σε όλες τις άλλες συναρτήσεις που την έχουν δηλώσει (τη μεταβλητή) ως καθολική. 4.2.3. Figure Figure ( PropertyName1, PropertyValue1, PropertyName2, PropertyValue2, ) = Η εντολή Figure δημιουργεί ένα νέο αντικείμενο, χρησιμοποιώντας τις τιμές που καθορίζονται από τις ιδιότητες μέσα στην παρένθεση. Το Matlab χρησιμοποιεί προκαθορισμένες τιμές για τις ιδιότητες που δεν ορίζονται χειροκίνητα. 4.2.4 Menubar (figure, none) Η ιδιότητα αυτή επιτρέπει στο χρήστη να μπορεί να εμφανίσει ή να αποκρύψει τη γραμμή μενού, την οποία το Matlab τοποθετεί στην κορυφή του παραθύρου του. Η προεπιλογή για το Menubar είναι να εμφανίζεται (figure). Η ιδιότητα αυτή επηρεάζει μόνο τα ενσωματωμένα μενού. Τα μενού που ορίζονται με την εντολή uimenu, δεν επηρεάζονται από την ιδιότητα αυτή. 4.2.5 Integerhandle Όταν δημιουργείται ένα νέο figure, το Matlab χρησιμοποιεί τον μικρότερο ακέραιο που δεν χρησιμοποιείται από κάποιο ήδη υπάρχον figure. Αν ένα figure διαγραφεί, τότε ο ακέραιός του μπορεί να ξαναχρησιμοποιηθεί. Το χαρακτηριστικό αυτό έχει σχεδιαστεί για παράθυρα διαλόγου, όπου όταν αφαιρείται το handle από ακέραιες τιμές, μειώνει την πιθανότητα λάθους σύνταξης στο παράθυρο διαλόγου. 4.2.6 Units (pixels, centimeters, characters, inches normalized, points) Η ιδιότητα αυτή καθορίζει τις μονάδες που το Matlab χρησιμοποιεί για να ερμηνεύσει το μέγεθος και τις θέσεις των δεδομένων. Όλες οι μονάδες μετρώνται από την κάτω αριστερή γωνία του παραθύρου. Οι κανονικοποιημένες μονάδες χαρτογραφούν την κάτω αριστερή 42

γωνία στο (0,0) και την άνω δεξιά γωνία στο (1.0, 1.0). Οι ίντσες, τα εκατοστά και τα σημεία (points) είναι απόλυτες μονάδες (ένα σημείο ισούται με 1/72 της ίντσας). Η προεπιλεγμένη τιμή για το Units είναι τα Pixels. Το μέγεθος ενός Pixel εξαρτάται από την ανάλυση της οθόνης. Οι μονάδες των χαρακτήρων ορίζονται από τους χαρακτήρες από την προεπιλεγμένη γραμματοσειρά του συστήματος. Το πλάτος ενός χαρακτήρα είναι όσο το πλάτος του χαρακτήρα «x», ενώ το ύψος του είναι η απόσταση μεταξύ δύο γραμμών ενός κειμένου (text). Το χαρακτηριστικό αυτό επηρεάζει τις ιδιότητες CurrentPoint και Position. Αν η τιμή του Units αλλάξει, είναι προτιμότερο να επιστρέψει ξανά στην προεπιλεγμένη τιμή μετά την ολοκλήρωση των υπολογισμών, ώστε να μην επηρεάσει άλλες συναρτήσεις που έχουν ορίσει την ιδιότητα Units στην προεπιλεγμένη της τιμή. 4.2.7 Position [distance from left, distance from bottom, width, height] Διάνυσμα τεσσάρων στοιχείων (απόσταση από αριστερά, απόσταση από τη βάση, πλάτος, ύψος). Αυτή η ιδιότητα καθορίζει το μέγεθος και τη θέση του figure window στην οθόνη. Τα πρώτα δυο στοιχεία (left και bottom) μπορούν να έχουν και αρνητικές τιμές σε συστήματα που έχουν περισσότερες από μια οθόνες. Το πλάτος (width) και το ύψος (height) ορίζουν τις διαστάσεις του παραθύρου. Μπορεί να χρησιμοποιηθεί η συνάρτηση get για να αποκτηθεί αυτή η ιδιότητα, καθώς και η συνάρτηση set για να αλλαχθεί το μέγεθος του figure, και να μετακινηθεί σε μια νέα θέση. Σημείωση: Για MS-Windows συστήματα, τα figure windows δεν μπορούν να έχουν πλάτος μικρότερο από 140 pixels, ανεξάρτητα από την τιμή που έχει η ιδιότητα Position. 4.2.8 Tag Η ιδιότητα Tag παρέχει ένα μέσο για τον εντοπισμό γραφικών αντικειμένων με μια ετικέτα καθορισμένη από το χρήστη. Αυτό είναι ιδιαίτερα χρήσιμο όταν κατασκευάζονται διαδραστικά γραφικά προγράμματα, που διαφορετικά θα έπρεπε να καθορίζουν τα αντικείμενα ως καθολικές (global) μεταβλητές ή να τις «περάσουν» ως arguments σε ρουτίνες callback. 4.2.9 Toolbar (auto, none, figure) 43

Έλεγχος εμφάνισης της γραμμής εργαλείων. Η ιδιότητα Toolbar δίνει τη δυνατότητα στο χρήστη να ρυθμίσει αν το Matlab θα εμφανίσει την προεπιλεγμένη γραμμή εργαλείων στο figure. Υπάρχουν τρεις πιθανές τιμές: None - όπου το toolbar δεν εμφανίζεται, auto όπου το toolbar εμφανίζεται, αλλά αφαιρείται αν ένα uicontrol προστεθεί στο σχήμα (figure), και τέλος το figure όπου το toolbar εμφανίζεται κανονικά. Η προεπιλεγμένη τιμή για το Toolbar είναι Auto. Σημείωση: η ιδιότητα αυτή επηρεάζει μόνο τη συγκεκριμένη γραμμή εργαλείων. Άλλες γραμμές εργαλείων (πχ το Plot Edit Toolbar) δεν επηρεάζονται. 4.2.10 NumberTitle (on, off) Η προεπιλεγμένη τιμή για το NumberTitle είναι «on». Καθορίζει αν η συμβολοσειρά Figure n (όπου n είναι ο αριθμός του figure) προτάσσεται στον τίτλο του παραθύρου του figure. 4.2.11 Windowstyle (Normal, modal) Όταν η τιμή έχει οριστεί σε modal, τότε το figure window παγιδεύει όλα τα συμβάντα που προέρχονται από πληκτρολόγιο και ποντίκι, εφ όσον είναι ορατά. Παράθυρα που ανήκουν σε άλλες εφαρμογές δεν επηρεάζονται. Όταν υπάρχουν πολλαπλά modal παράθυρα, αυτό που πιο πρόσφατα δημιουργήθηκε διατηρεί την εστίαση και παραμένει πάνω από όλα παράθυρα μέχρι να γίνει αόρατο (Invisible), ή να επιστρέψει στο Windowstyle τύπου normal, ή να διαγραφεί. Εκείνη τη στιγμή, η εστίαση επιστρέφει στο παράθυρο που διατηρούσε τελευταίο την εστίαση. Τα modal figures χρησιμοποιούνται για να δημιουργηθούν παράθυρα διαλόγου που αναγκάζουν το χρήστη να ανταποκριθεί, χωρίς να είναι σε θέση να αλληλεπιδράσει με άλλα παράθυρα. 4.2.12 Name (string) Αυτή η ιδιότητα καθορίζει τον τίτλο του figure window. Εξ ορισμού, το Name είναι κενό και ο τίτλος του figure εμφανίζεται ως Figure 1, Figure 2 και ούτω καθεξής. Αν το NumberTitle είναι ενεργοποιημένο (on), η συμβολοσειρά προσαρτάται στον αριθμό του figure και ο τίτλος του γίνεται Figure 1: <string>. 44

4.2.13 Color (value 1, value 2, value 3) Αυτή η ιδιότητα ελέγχει το χρώμα φόντου στο figure window. Ένα χρώμα μπορεί να καθοριστεί είτε με τη χρήση ενός διανύσματος τριών στοιχείων RBG τιμών, είτε με ένα από τα προκαθορισμένα ονόματα του Matlab. 4.2.14 Resize (on, off) Καθορίζει αν ο χρήστης μπορεί να αλλάξει το μέγεθος του παραθύρου με το ποντίκι. Η προεπιλεγμένη τιμή για το Resize είναι «on». Όταν είναι «off», το figure window δεν εμφανίζει κανένα στοιχείο αλλαγής μεγέθους (όπως μικρά κουτιά στις γωνίες του παραθύρου), για να είναι σαφές ότι το μέγεθός του δεν μπορεί να αλλάξει. 4.2.15 uicontrol (User Interface control ή στοιχείο διεπαφής χρηστών) Η εντολή αυτή δημιουργεί ένα uicontrol γραφικό αντικείμενο το οποίο θα χρησιμοποιηθεί για να εφαρμοστεί σε μια γραφική διεπαφή χρήστη. handle = uicontrol (parent, PropertyName, PropertyValue ) : Δημιουργείται ένα uicontrol στο αντικείμενο parent που προσδιορίζεται από το handle. Αν ο χρήστης προσδιορίσει μια διαφορετική τιμή για την ιδιότητα Parent, αυτή η τιμή θα υπερισχύσει. Το parent (γονέας) μπορεί να είναι handle ενός σχήματος (figure), ενός uipanel, ή ενός uibuttongroup. Όταν επιλέγονται, τα περισσότερα uicontrol αντικείμενα εκτελούν μια προκαθορισμένη ενέργεια. Το Matlab υποστηρίζει πολλά στυλ των uicontrols, όπου το καθένα είναι κατάλληλο για κάποιο διαφορετικό σκοπό: Check Boxes Editable Text Fields (πεδία εισαγωγής κειμένου) Frames (πλαίσια) List Boxes (λίστες) Pop-up Menus Push Buttons (κουμπιά) Radio Buttons Sliders 45

Static Text Labels (ετικέτες) Toggle Buttons 4.2.16 Style Η ιδιότητα αυτή προσδιορίζει το είδος του uicontrol που θα δημιουργηθεί. 4.2.17 Horizontalalignment (left, center, right) Η προεπιλεγμένη τιμή για το Horizontalalignment είναι «center». Η ιδιότητα αυτή καθορίζει την ευθυγράμμιση του κειμένου που ορίζεται για την ιδιότητα String (η ετικέτα του uicontrol). Left: Το κείμενο είναι ευθυγραμμισμένο αριστερά, με σημείο αναφοράς το uicontrol. Right: Το κείμενο είναι ευθυγραμμισμένο δεξιά, με σημείο αναφοράς το uicontrol. Center: Το κείμενο ευθυγραμμίζεται στο κέντρο, με σημείο αναφοράς το uicontrol. Στα MS συστήματα, η ιδιότητα αυτή επηρεάζει μόνο τα edit και text uicontrols. 4.2.18 SelectionHighLight (on, off) Η προεπιλεγμένη τιμή για το SelectionHighLight είναι «on». Το αντικείμενο τονίζεται όταν επιλεγεί. Όταν η ιδιότητα αυτή είναι on, το Matlab δείχνει την επιλεγμένη κατάσταση «σχεδιάζοντας» handles με τέσσερις ακμές και τέσσερις γωνίες. Όταν η ιδιότητα αυτή είναι off, το Matlab δεν εφιστά τα handles. 4.2.19 Value Η τρέχουσα τιμή του uicontrol. Η ιδιότητα αυτή ρυθμίζεται είτε διαδραστικά με το ποντίκι, είτε καλώντας τη συνάρτηση set. Το στυλ του uicontrol καθορίζει τις πιθανές τιμές που θα μπορούσε να έχει η παραπάνω ιδιότητα: Τα Check Boxes ρυθμίζουν ως Value : max όταν είναι επιλεγμένα (κατάσταση On), ενώ ρυθμίζουν ως Value : min όταν δεν είναι επιλεγμένα (κατάσταση Off). Τα List Boxes ρυθμίζουν ως Value ένα διάνυσμα δεικτών που αντιστοιχούν στις επιλεγμένες εισόδους της λίστας, όπου το 1 αντιστοιχεί στο πρώτο στοιχείο της λίστας, το 2 στο δεύτερο στοιχείο και ούτω καθεξής. Τα Pop-up Menus ρυθμίζουν το Value ως ένα δείκτη στο επιλεγμένο στοιχείο, όπου το 1 αντιστοιχεί στο πρώτο στοιχείο του μενού, το 2 στο δεύτερο στοιχείο του μενού και ούτω καθεξής. 46

Τα Radio Buttons ρυθμίζουν ως Value : max όταν είναι επιλεγμένα (κατάσταση On), ενώ ρυθμίζουν ως Value : min όταν δεν είναι επιλεγμένα (κατάσταση Off). Τα Sliders αντιστοιχούν την τιμή Value στον αριθμό που υποδεικνύεται από τη μπάρα (slider bar). Τα Toggle Buttons ρυθμίζουν ως Value : max όταν είναι επιλεγμένα (κατάσταση down), ενώ ρυθμίζουν ως Value : min όταν δεν είναι επιλεγμένα (κατάσταση up). Για τα Editable Boxes, Static Texts και Push Buttons δεν ρυθμίζεται αυτή η ιδιότητα. 4.2.20 String Για Check Boxes, Editable Texts, Push Buttons, Radio Buttons, Static Texts και Toggle Buttons, πάνω στο αντικείμενο εμφανίζεται το κείμενο (string). Για List Boxes και Pop-up Menus στο αντικείμενο εμφανίζονται το σύνολο των εισόδων ή των στοιχείων. Για uicontrol αντικείμενα που εμφανίζουν μία μόνο γραμμή κειμένου (check box, push button, radio button, toggle button), αν η τιμή για το string ορίζεται ως μια συστοιχία από συμβολοσειρές, μόνο η πρώτη συμβολοσειρά (string) εμφανίζεται και οι υπόλοιπες αγνοούνται. Οι χαρακτήρες και /n δεν ερμηνεύονται ως αλλαγή γραμμής. Αντί αυτού εμφανίζονται στο κείμενο που εμφανίζεται στο uicontrol. Για Editable Texts πολλαπλών γραμμών η αλλαγή γραμμής συμβαίνει ανάμεσα σε κάθε string της συστοιχίας. 4.2.21 Callback Είναι μια ρουτίνα που εκτελείται κάθε φορά που ενεργοποιείται το αντικείμενο uicontrol (πχ όταν ο χρήστης κάνει κλικ σε ένα push button ή μετακινήσει ένα slider). Η συνάρτηση αυτή θα πρέπει να οριστεί ως μια έγκυρη έκφραση στο Matlab ή με το όνομα ενός M-File. Για να εκτελεστεί η ρουτίνα επανάκλησης (callback function) για ένα Edit Text ο χρήστης πληκτρολογεί το επιθυμητό κείμενο, και μετά είτε κάνει κλικ σε ένα άλλο στοιχείο, είτε στη μπάρα μενού είτε στο φόντο του GUI. Για ένα Editable Text Box μια γραμμής ο χρήστης πατάει Enter. Για ένα Editable Text Box πολλαπλών γραμμών, ο χρήστης πατάει Ctrl+Enter. 4.2.22 Max Η μέγιστη τιμή. Αυτή η ιδιότητα καθορίζει την μεγαλύτερη επιτρεπόμενη τιμή για την ιδιότητα Value. Διαφορετικά uicontrols ερμηνεύουν και διαφορετικά την ιδιότητα Max: Check Boxes. To Max είναι η ρύθμιση της ιδιότητας Value, όταν το check box είναι επιλεγμένο. 47

Editable Text. Αν Max-Min >1, τότε τα Editable Text Boxes δέχονται εισόδους πολλαπλών γραμμών. Αν Max-Min <=1, τότε τα Editable Text Boxes δέχονται εισόδους μίας μόνο γραμμής. List Boxes. Αν Max-Min >1, τότε επιτρέπουν την επιλογή πολλαπλών στοιχείων. Αν Max-Min <=1, τότε τα List Boxes δεν επιτρέπουν την επιλογή πολλαπλών στοιχείων. Radio Buttons. To Max είναι η ρύθμιση της ιδιότητας Value, όταν το Radio Button είναι επιλεγμένο. Sliders. To Max είναι η μέγιστη τιμή για το slider και πρέπει να είναι μεγαλύτερη από την τιμή του Min. Η προεπιλεγμένη τιμή είναι 1. Toggle Buttons. To Max είναι η ρύθμιση της ιδιότητας Value, όταν το Toggle Button είναι επιλεγμένο. Η προεπιλεγμένη τιμή είναι 1. Pop-up menus, push buttons και static texts δεν χρησιμοποιούν την ιδιότητα Max. 4.2.23 Visible (on, off) Η προεπιλεγμένη τιμή για το Visible είναι «οn». Αν ρυθμιστεί σε «off» τότε το uicontrol στο οποίο αναφέρεται δεν είναι ορατό, αλλά εξακολουθεί να υπάρχει και ο χρήστης μπορεί να ρυθμίσει τις ιδιότητές του. 4.2.24 BackgroundColor Είναι το χρώμα που χρησιμοποιείται για το «γέμισμα» του uicontrol. Καθορίζεται με τη χρήση ενός διανύσματος τριών στοιχείων RGB ή με ένα από τα προκαθορισμένα ονόματα του Matlab. Το προεπιλεγμένο χρώμα καθορίζεται από τις ρυθμίσεις του Matlab. 4.2.25 FontWeight (light, normal, demi, bold) Η προεπιλεγμένη τιμή για το FontWeight είναι «normal». Γραμματοσειρά των χαρακτήρων κειμένου. Το Matlab χρησιμοποιεί αυτή την ιδιότητα για να επιλέξει μια γραμματοσειρά από αυτές που είναι διαθέσιμες στο εκάστοτε σύστημα. Ρυθμίζοντας αυτή την ιδιότητα σε «bold» ο χρήστης προκαλεί το Matlab να αλλάξει τη γραμματοσειρά σε bold εκδοχή, αν φυσικά είναι διαθέσιμη στο συγκεκριμένο σύστημα. 4.2.26 Axes ( PropertyName, Property Value) 48

Με την εντολή αυτή δημιουργείται ένα αντικείμενο με άξονες, το οποίο έχει τις προκαθορισμένες τιμές στις ιδιότητές του. Το Matlab χρησιμοποιεί προεπιλεγμένες τιμές για τις ιδιότητες τις οποίες ο χρήστης δεν ορίζει ρητά. Με το axes(h) το figure των αξόνων έρχεται σε «πρώτο πλάνο». Οι άξονες αυτοί είναι ο στόχος για τις λειτουργίες που αντλούν εικόνες, γραμμές, σχήματα και αντικείμενα που σχετίζονται με γραφικά κειμένου. Αν ο χρήστης θελήσει να κάνει τους άξονες να είναι οι τρέχοντες άξονες χωρίς να αλλάξει η κατάσταση του γονέα figure, θα πρέπει να ρυθμίσει την ιδιότητα CurrentAxes του Figure ώστε να περιέχει τους άξονες: set(figure_handle, CurrentAxes, axes_handle). Αυτό είναι χρήσιμο στην περίπτωση που επιθυμεί το figure να παραμείνει ελαχιστοποιημένο, ή να παραμείνει κάτω από άλλα στοιχεία (figures), αλλά παράλληλα θέλει να καθορίσει τους τρέχοντες άξονες. Με το h=axes( ) επιστρέφεται το handle του αντικειμένου αξόνων που δημιουργήθηκε. 4.2.27 str(1) Ορίζει το κείμενο και το εμφανίζει στους άξονες σε πλήρες παράθυρο. 4.2.28 uimenu Το uimenu δημιουργεί μια ιεραρχία των μενού και υπομενού που εμφανίζονται στο menu bar στο παράθυρο ενός figure. Μπορεί επίσης να χρησιμοποιηθεί για να δημιουργήσει στοιχεία μενού για μενού περιβάλλοντος. Το handle = uimenu('propertyname', PropertyValue,...) δημιουργεί ένα μενού στο menu bar του τρέχοντος figure, χρησιμοποιώντας τις τιμές των συγκεκριμένων ιδιοτήτων, και αναθέτει το menu handle στο handle. To handle = uimenu (parent, PropertyName, PropertyValue) δημιουργεί ένα υπομενού ενός μενού «γονέα», ή ένα στοιχείο σε ένα μενού πλαίσιο που καθορίζεται από το γονέα και εκχωρεί το menu handle στο handle. Αν ο γονέας αναφέρεται σε μια εικόνα αντί για κάποιο άλλο uimenu αντικείμενο ή για ένα uicontextmenu, το Matlab δημιουργεί ένα νέο μενού στο menu bar του αναφερόμενου figure. 4.2.29 Separator Ετικέτα μενού. Μια συμβολοσειρά προσδιορίζει την ετικέτα κειμένου στο στοιχείο του μενού. Ο χρήστης μπορεί να καθορίσει ένα μνημονικό για την ετικέτα χρησιμοποιώντας τον 49

χαρακτήρα &. O χαρακτήρας που ακολουθεί το & στη συμβολοσειρά, εμφανίζεται υπογραμμισμένος και επιλέγει το στοιχείο του μενού όταν ο χρήστης πληκτρολογήσει Alt ακολουθούμενο από το χαρακτήρα όταν το μενού είναι ορατό (visible). Ο χαρακτήρας & δεν εμφανίζεται. Για να εμφανιστεί ο χαρακτήρας & σε μια ετικέτα, χρησιμοποιούνται δύο χαρακτήρες & μέσα στη συμβολοσειρά. Δηλαδή : Το O&pen Selection αποδίδει open Selection Το Save && Go αποδίδει Save & Go Το Save&&Go αποδίδει Save&Go Το Save& Go αποδίδει Save& Go (το κενό space- δεν είναι μνημονικό) Υπάρχουν τρεις δεσμευμένες λέξεις: το default, το remove και το factory. Αν ο χρήστης θελήσει να χρησιμοποιήσει μια από τις δεσμευμένες αυτές λέξεις, θα πρέπει να προηγηθεί ένας backslash ( / ) χαρακτήρας πριν από αυτές. Για παράδειγμα : /remove αποδίδει remove /default αποδίδει default /factory αποδίδει /factory 4.2.30 Save (filename) Αποθηκεύει όλες τις μεταβλητές του παρόντος περιβάλλοντος εργασίας στο αρχείο filename. Αν ο χρήστης δεν καθορίσει μια επέκταση για το filename, τότε το Matlab χρησιμοποιεί την επέκταση.mat. Για να γίνει αποθήκευση σε άλλον κατάλογο, πρέπει να χρησιμοποιηθεί ένα πλήρες όνομα διαδρομής για το filename. 4.3 ΕΠΕΞΗΓΗΣΗ ΣΥΝΑΡΤΗΣΗΣ add_datafile : Η συνάρτηση αυτή μας επιτρέπει : Γραμμές κώδικα: 200-234. Αρχικά πατώντας το κουμπί Data File να ανοίξει ένα καινούργιο παράθυρο, από το οποίο θα βρούμε και θα ανοίξουμε το επιθυμητό excel αρχείο. 50

if get(load_data_file,'value') set(list_box_model,'value',1,'string',' ','Visible','off'); set(load_data_file,'value',0); [gdata0, pathname]=uigetfile('*.xls','select Data File'); [N_data,T_data,data]=xlsread([pathname gdata0],1); %#ok<asglu> sndata=size(n_data); j=[]; for i=1:sndata(2) if ~all(isnan(n_data(:,i))) j=[j i]; %#ok<*agrow> end end N_data=N_data(:,j); sndata=size(n_data); time=0:(sndata(1)-1); if ~isempty(sndata) & sndata(2) %#ok<*and2> STATELIST=cell(sNData(2),1); for i=1:sndata(2) STATELIST(i)={['x' num2str(i)]}; end 51

Γραμμές κώδικα: 235-262. Έπειτα, ενεργοποιεί τα List Boxes: States, System Inputs, System Outputs. Στη λίστα States φορτώνει τα αριθμητικά δεδομένα που περιέχει το excel αρχείο που ανοίξαμε. Στις λίστες System Inputs, System Outputs θα φορτωθούν τα αριθμητικά δεδομένα που εμείς έχουμε επιλέξει ως εισόδους και εξόδους αντίστοιχα. Τα σημεία αυτά (x1, x2, ) εισάγονται στην αντίστοιχη λίστα με τα Push Buttons: Select Input, Select Output και εξάγονται από τις λίστες με τα Push Buttons: Remove Input, Remove Output. Τα τέσσερα αυτά Push Buttons εμφανίζονται καθώς τρέχει αυτό το κομμάτι κώδικα. set(menu1,'visible','on'); set(menu2,'visible','on'); set(list_box_states,'visible','on','position',[0.8,0.6,0.05,0.2],'string',state LIST); set(select_input,'visible','on'); set(select_output,'visible','on'); set(remove_input,'visible','on'); set(remove_output,'visible','on'); input_data=zeros(sndata(2),1); output_data=zeros(sndata(2),1); else time=[]; N_data=[]; sndata=[0 0]; h=plot(0,0); set(menu1,'visible','off'); set(menu2,'visible','off'); set(h,'xdata',[],'ydata',[]); set(list_box_states,'value',1,'string',' '); set(f1,'position',[0.1 0.3 0.5 0.5],'Visible','off'); set(text_box_i,'string',' '); set(text_box_o,'string',' '); set(select_input,'visible','off'); 52

set(select_output,'visible','off'); set(remove_input,'visible','off'); set(remove_output,'visible','off'); end Γραμμές 266-279. Επιλέγοντας ένα σημείο και πατώντας το κουμπί Select Input, η εφαρμογή εισάγει το σημείο αυτό στη λίστα System Inputs. if sndata(2) h=plot(time,n_data(:,get(list_box_states,'value')));xlabel('k');ylabel(['x' num2str(get(list_box_states,'value'))]);title(['states: ' num2str(get(list_box_states,'value'))]);grid; if get(select_input,'value') 53

set(list_box_model,'value',1,'string',' ','Visible','off'); input_data(get(list_box_states,'value'))=get(list_box_states,'value'); set(list_box_states,'value',1); set(text_box_i,'value',1); set(text_box_o,'value',1); end Γραμμές 281-299. Επιλέγοντας ένα σημείο από τη λίστα System Inputs και πατώντας το κουμπί Remove Input, η εφαρμογή εξάγει το σημείο αυτό από τη λίστα System Inputs. (εννοείται πώς αν η λίστα αυτή δεν περιέχει κανένα στοιχείο, τότε το button αυτό δεν κάνει τίποτα). if get(remove_input,'value') set(list_box_model,'value',1,'string',' ','Visible','off'); stri=get(text_box_i,'string'); vri=get(text_box_i,'value'); if ~isempty(stri) char_stri=char(stri(get(text_box_i,'value'))); for i=1:length(vri) char_stri=char(stri(vri(i))); input_data(str2double(char_stri(2:end)))=0; end 54

end Γραμμές 301-303. Σε αυτό το κομμάτι κώδικα εκτελείται η λειτουργία του να επιλεχθεί ένα σήμα, και να τοποθετηθεί στη λίστα εισόδου ή εξόδου. Έτσι, επιλέγοντας το σήμα από τη λίστα States και πατώντας το κουμπί «Select Input» ή «Select Output», η τιμή του σήματος γίνεται «1» (που σημαίνει ότι επιλέχθηκε). Και ανάλογα με τον προορισμό που θα πάει το σήμα (σήμα εισόδου ή εξόδου), η τιμή του γίνεται «1» και σε εκείνη τη λίστα αντίστοιχα. set(list_box_states,'value',1); set(text_box_i,'value',1); set(text_box_o,'value',1); Γραμμές 307-316. Επιλέγοντας ένα σημείο και πατώντας το κουμπί Select Output, η εφαρμογή εισάγει το σημείο αυτό στη λίστα System Outputs. if get(select_output,'value') set(list_box_model,'value',1,'string',' ','Visible','off'); output_data(get(list_box_states,'value'))=get(list_box_states,'value'); 55

set(list_box_states,'value',1); set(text_box_i,'value',1); set(text_box_o,'value',1); end Γραμμές 318-334. Επιλέγοντας ένα σημείο από τη λίστα System Outputs και πατώντας το κουμπί Remove Output, η εφαρμογή εξάγει το σημείο αυτό από τη λίστα System Outputs. (εννοείται πώς αν η λίστα αυτή δεν περιέχει κανένα στοιχείο, τότε το button αυτό δεν κάνει τίποτα). if get(remove_output,'value') set(list_box_model,'value',1,'string',' ','Visible','off'); stro=get(text_box_o,'string'); vro=get(text_box_o,'value'); if ~isempty(stro) char_stro=char(stro(get(text_box_o,'value'))); for i=1:length(vro) char_stro=char(stro(vro(i))); output_data(str2double(char_stro(2:end)))=0; end end 56

Γραμμές 338-340. Σε αυτό το κομμάτι κώδικα εκτελείται η λειτουργία του να επιλεχθεί ένα σήμα, και να τοποθετηθεί στη λίστα εισόδου ή εξόδου. Έτσι, επιλέγοντας το σήμα από τη λίστα States και πατώντας το κουμπί «Select Input» ή «Select Output», η τιμή του σήματος γίνεται «1» (που σημαίνει ότι επιλέχθηκε). Και ανάλογα με τον προορισμό που θα πάει το σήμα (σήμα εισόδου ή εξόδου), η τιμή του γίνεται «1» και σε εκείνη τη λίστα αντίστοιχα. set(list_box_states,'value',1); set(text_box_i,'value',1); set(text_box_o,'value',1); Γραμμή 344. Η εφαρμογή παίρνει όλα τα δεδομένα τα οποία έχουμε ορίσει ως δεδομένα εισόδου. U=input_data(find(input_data)); %#ok<*fndsb> Γραμμή 345. Η εφαρμογή παίρνει όλα τα δεδομένα τα οποία έχουμε ορίσει ως δεδομένα εξόδου. Y=output_data(find(output_data)); Γραμμές 347-361. Με βάση τα παραπάνω δεδομένα εισόδου και εξόδου, δημιουργείται κάθε φορά και η εκάστοτε γραφική παράσταση, η οποία απεικονίζεται στα αριστερά του GUI. 57

INPUTS=cell(size(U)); for i=1:length(u) INPUTS(i)={['x' num2str(u(i))]}; end OUTPUTS=cell(size(Y)); for i=1:length(y) OUTPUTS(i)={['x' num2str(y(i))]}; end Γραμμές 363-364. Εισάγονται στις λίστες Text_Box_I και Text_Box_O οι είσοδοι και έξοδοι αντίστοιχα, σε μορφή string, δηλαδή ως x1, x5 κλπ. set(text_box_i,'string',inputs); set(text_box_o,'string',outputs); Γραμμές 368-386. Κώδικας που αφορά το Push Button Reset. Αν πατηθεί το κουμπί αυτό, το GUI επανέρχεται στην αρχική του μορφή. Άξονες και Push Buttons που εμφανίστηκαν μόλις άρχισε να τρέχει ο κώδικας των γραμμών 237+, τώρα δεν είναι πλέον ορατά. Έχουν μηδενιστεί όλα, ώστε να γίνει εκ νέου φόρτωση αρχείου. 58

if get(reset,'value') time=[]; N_data=[]; sndata=[0 0]; h=plot(0,0); set(h,'xdata',[],'ydata',[]); set(list_box_states,'value',1,'string',' '); set(list_box_model,'value',1,'string',' ','Visible','off'); set(f1,'position',[0.1 0.3 0.5 0.5],'Visible','off'); set(text_box_i,'string',' '); set(text_box_o,'string',' '); set(select_input,'visible','off'); set(select_output,'visible','off'); set(remove_input,'visible','off'); set(remove_output,'visible','off'); end 4.4 ΕΠΕΞΗΓΗΣΗ ΕΝΤΟΛΩΝ ΚΑΙ ΙΔΙΟΤΗΤΩΝ ΤΗΣ ΣΥΝΑΡΤΗΣΗΣ add_datafile : 4.4.1 If 59

Το If είναι μια έκφραση η οποία αν έχει λογικό 1 (αληθής) ή ένα μη μηδενικό αποτέλεσμα, εκτελεί μια ή περισσότερες εντολές του Matlab που βρίσκονται μέσα στα όρια της εντολής if. Μια έκφραση στο Matlab συνήθως αποτελείται από μεταβλητές ή μικρότερες εκφράσεις που ενώνονται μεταξύ τους με σχεσιακούς τελεστές (πχ <, >, =, ) ή λογικές συναρτήσεις (πχ isreal(a)). Απλές εκφράσεις μπορούν να συνδυαστούν με λογικούς τελεστές ( &&,, ~ ) σε συνδυαστικές εκφράσεις. Το Matlab υπολογίζει τις συνδυαστικές εκφράσεις από αριστερά προς τα δεξιά, ακολουθώντας τους κανόνες προτεραιότητας των τελεστών. Στις φωλιασμένες If, πρέπει κάθε If να έχει και το αντίστοιχο end. Η συνάρτηση If μπορεί να χρησιμοποιηθεί είτε μόνη της, είτε με else και elseif συναρτήσεις. 4.4.2 If Get (object, PropertyName ) Ανακτά την ιδιότητα Value του αντικειμένου object και την εκχωρεί στο If. 4.4.3 Set (object, PropertyName, PropertyValue) Ρυθμίζει την τιμή (value) της ιδιότητας PropertyName να είναι η τιμή του καθορισμένου αντικειμένου (object). Θέτει επίσης πολλαπλές τιμές των ιδιοτήτων με μια μόνο δήλωση. Μπορούν να χρησιμοποιηθούν δομές (structures), ζεύγη συμβολοσειρών PropertyName / PropertyValue, καθώς και ζεύγη κελιών με δείκτες PropertyName / PropertyValue στην ίδια κλήση ώστε να γίνει set. 4.4.4 PathName Επιστρέφει το όνομα της διαδρομής, το όνομα και την επέκταση του καθορισμένου αρχείου. Το αρχείο δεν είναι απαραίτητο να υπάρχει. Το όνομα του αρχείου είναι μια συμβολοσειρά που περικλείεται σε μονά εισαγωγικά. Το επιστρεφόμενο πεδίο περιέχει μια τελεία (. ) πριν την επέκταση του αρχείου. 4.4.5 Uigetfile (FilterSpec, DialogTitle) Η εντολή uigetfile εμφανίζει ένα αποκλειστικό παράθυρο διαλόγου που παραθέτει τα αρχεία στον τρέχοντα κατάλογο και δίνει τη δυνατότητα στο χρήστη να επιλέξει ή να πληκτρολογήσει το όνομα ενός αρχείου για να το ανοίξει. Αν το όνομα του αρχείου είναι έγκυρο και το αρχείο υπάρχει, το uigetfile επιστρέφει το όνομα του αρχείου και τη διαδρομή του όταν ο χρήστης 60

κάνει κλικ στο Άνοιγμα. Διαφορετικά, εμφανίζει ένα κατάλληλο μήνυμα λάθους από το οποίο ο έλεγχος επιστρέφει στο παράθυρο διαλόγου. Στη συνέχεια ο χρήστης μπορεί να εισάγει ένα άλλο όνομα αρχείου ή να κάνει κλικ στο Άκυρο. Αν ο χρήστης κάνει κλικ στο Άκυρο ή κλείσει το παράθυρο διαλόγου, η uigetdir επιστρέφει την τιμή 0. Στην συγκεκριμένη περίπτωση του κώδικά μας, η uigetfile εμφανίζει μόνο τα αρχεία με τις επεκτάσεις που ταιριάζουν στο FilterSpec. Το FilterSpec μπορεί να είναι ένα string, ένα κελί δεικτών με strings ή μπορεί να είναι της μορφής *sth. Για παράδειγμα, το *m απαριθμεί όλα τα Matlab M-Files. Ένα FilterSpec μπορεί να είναι επίσης το όνομα ενός αρχείου. Στην περίπτωση αυτή, το όνομα του αρχείου γίνεται το προεπιλεγμένο όνομα αρχείου και η επέκταση του αρχείου χρησιμοποιείται ως το προεπιλεγμένο φίλτρο. Αν το FilterSpec είναι ένα string, τότε η Uigetfile προσθέτει και την επιλογή All Files στη λίστα των τύπων αρχείων. Αν το FilterSpec δεν έχει καθοριστεί, η Uigetfile χρησιμοποιεί την προεπιλεγμένη λίστα των τύπων αρχείων (δηλαδή όλα τα Matlab αρχεία). 4.4.6 xlsread (filename) Επιστρέφει αριθμητικά δεδομένα από το πρώτο φύλλο του Microsoft Excel αρχείου με το όνομα Filename. Το όνομα του αρχείου είναι ένα string που περικλείεται σε μονά εισαγωγικά. Η xlsread αγνοεί οποιεσδήποτε εξωτερικές γραμμές ή στήλες του υπολογιστικού φύλλου που δεν περιέχουν αριθμητικά δεδομένα. Αν υπάρχουν μία ή περισσότερες μη αριθμητικές σειρές πάνω ή κάτω, αριστερά ή δεξιά, η xlsread δεν περιλαμβάνει τις γραμμές αυτές στην έξοδο. Για παράδειγμα, μια ή περισσότερες γραμμές κεφαλίδας που εμφανίζονται στην κορυφή ενός excel αγνοούνται από την xlsread. Οι εσωτερικές γραμμές ή στήλες στις οποίες μερικά ή όλα τα κελιά περιέχουν μη αριθμητικά δεδομένα, δεν αγνοούνται. Στα μη αριθμητικά κελιά αυτά αποδίδεται η τιμή NaN. Η πλήρης λειτουργικότητα της xlsread εξαρτάται από την ικανότητα να ξεκινήσει το excel ως ένας Com Server από το Matlab. Αν το σύστημα δεν έχει αυτή τη δυνατότητα, συνίσταται η σύνταξη της xlsread που «περνάει» τη βασική λέξη-κλειδί. Εφ όσον ο Com Server είναι διαθέσιμος, η xlsread μπορεί να χρησιμοποιηθεί σε Excel αρχεία με μορφές πέραν του XLS (για παράδειγμα HTML). 4.4.7 Plot (X,Y) Η εντολή plot δίνει τη γραφική παράσταση των γραμμών που ορίζονται μεταξύ των x,y ζευγών. Αν μόνο το x ή το y είναι ένας πίνακας, το διάνυσμα θα παρασταθεί συναρτήσει των 61

γραμμών ή των στηλών του πίνακα, ανάλογα με το αν η διάσταση της γραμμής ή της στήλης του διανύσματος ταιριάζει στον πίνακα. Αν το x είναι βαθμωτό και το y είναι ένα διάνυσμα, τότε τα μη συνδεόμενα αντικείμενα μιας γραμμής δημιουργούνται και αναπαριστώνται ως διακεκριμένα σημεία κάθετα στο x. 4.5 ΕΠΕΞΗΓΗΣΗ ΣΥΝΑΡΤΗΣΗΣ lssscpe_v02 : 388-427 Η συνάρτηση αυτή έχει ως αριθμητικά δεδομένα τα data από τις επιλεγμένες εισόδους (x) και εξόδους (y). Αν για παράδειγμα επιλέγουμε ως είσοδο (x1, x3) και ως έξοδο (x4, x5, x6, x7), τα x, y θα πρέπει να σχηματίζονται από τα αριθμητικά δεδομένα των (x1, x3) και (x4, x5, x6, x7) σαν τους πίνακες x = [x1; x3] και y = [x4; x5; x6; x7]. 4.6 ΕΠΕΞΗΓΗΣΗ ΣΥΝΑΡΤΗΣΗΣ Plotmodel : 429-434 Είναι η απεικόνιση μιας γραφικής παράστασης όταν επιλεχθούν κάποια σήματα από τα listbox εισόδων και εξόδων. Η απεικόνιση αυτή αποτελείται από ευθείες ή καμπύλες όπου με κόκκινο χρώμα φαίνονται οι έξοδοι, και μπλε χρώμα φαίνονται οι είσοδοι. 4.7 ΕΠΕΞΗΓΗΣΗ ΣΥΝΑΡΤΗΣΗΣ Save Figure : 436-453 Η συνάρτηση αυτή τρέχει όταν πατήσουμε το κουμπί Save Figure που βρίσκεται στη μπάρα μενού του GUI. Αφού λοιπόν επιλέξουμε να σωθεί το τρέχον figure, επιλέγουμε πού θέλουμε να αποθηκευτεί, και αποθηκεύεται με κατάληξη.jpg. 4.8 Επεξήγηση συνάρτησης Save Model : 456-481 Αποθηκεύει τη γραφική παράσταση σε αρχείο excel. Η γραφική παράσταση αποτελείται από τα αριθμητικά δεδομένα των εισόδων και των εξόδων. Έτσι, πατώντας το κουμπί με όνομα Save Model, σώζονται τα Α και Β σε ένα.xls αρχείο. 4.8.1 Reshape (A, m, n) 62

Επιστρέφει τον m * n πίνακα του οποίου τα στοιχεία έχουν ληφθεί κατακόρυφα από το Α. Σαν αποτέλεσμα θα εμφανιστεί error αν το Α δεν έχει m * n στοιχεία. 4.8.2 Zeros (x) Επιστρέφει έναν x * x πίνακα με μηδενικά. Εμφανίζεται μήνυμα λάθους, αν το x δεν είναι μετρήσιμο. 4.8.3 Length (Y) Επιστρέφει το μέγεθος της μεγαλύτερης διάστασης του Υ. Αν το Υ είναι απλά ένα διάνυσμα, τότε η length μας επιστρέφει το μήκος του διανύσματος αυτού. 4.8.4 Num2str (w) Μετατρέπει το w σε αναπαράσταση συμβολοσειράς με περίπου τέσσερα ψηφία ακριβείας και έναν εκθέτη, αν απαιτείται. Αν ο πίνακας εισόδου περιλαμβάνει ακέραιες τιμές, η num2str εμφανίζει την ακριβή αναπαράσταση του ακεραίου. Ο όρος ακέραιες τιμές περιλαμβάνει μεγάλους αριθμούς κινητής υποδιαστολής που όμως υστερούν στην ακρίβεια λόγω τω περιορισμών του υλικού (hardware). 4.8.5 Uiputfile (FilterSpec, Dialog Title) Εμφανίζει ένα αποκλειστικό παράθυρο διαλόγου που χρησιμοποιείται ώστε ο χρήστης να επιλέξει ή να καθορίσει ένα αρχείο προς αποθήκευση. Τα παράθυρο διαλόγου παραθέτει τα αρχεία και τους καταλόγους στον τρέχοντα κατάλογο. Αν το επιλεγμένο ή καθορισμένο όνομα αρχείου είναι έγκυρο, θα επιστραφεί σε ans. Αν όμως επιλέγεται ή ορίζεται ένα υπάρχον όνομα αρχείου, τότε εμφανίζεται κατάλληλο παράθυρο προειδοποίησης, όπου ο χρήστης θα επιλέξει αν θέλει να αντικαταστήσει το υπάρχον αρχείο, ή αν θέλει να αποθηκεύσει το αρχείο του με διαφορετικό όνομα. Στην πρώτη περίπτωση η uiputfile επιστρέφει το όνομα του αρχείου. Στη δεύτερη περίπτωση επιστρέφει 0. Στην περίπτωσή μας, το παράθυρο που ανοίγει έχει όνομα Dialog Title και εμφανίζει μόνο τα αρχεία με τις επεκτάσεις που ταιριάζουν στο FilterSpec (πχ.jpg). Το FilterSpec μπορεί να είναι επίσης και όνομα ενός αρχείου. Σε αυτή την περίπτωση το όνομα αρχείου γίνεται το προεπιλεγμένο όνομα αρχείου, και η επέκταση του αρχείου χρησιμοποιείται ως το προεπιλεγμένο φίλτρο. Αν το FilterSpec δεν καθοριστεί, η uiputfile χρησιμοποιεί την προεπιλεγμένη λίστα των τύπων αρχείων. 63

4.8.6 xlswrite ( filename, M, sheet, range ) Γράφει τον πίνακα Μ σε μια ορθογώνια περιοχή που ορίζεται από το φύλο εργασίας του αρχείου. Ο χρήστης μπορεί να καθορίσει το εύρος, χρησιμοποιώντας μια από τις ακόλουθες εισηγμένες μορφές: Ονομασία κελιού, όπως D2 η οποία δείχνει την άνω αριστερή γωνία της περιοχής που θα λάβει τα δεδομένα του πίνακα. Δύο ονομασίες κελιών που χωρίζονται με :, όπως D2 : H4, οι οποίες αναφέρονται σε δύο απέναντι γωνίες της περιοχής που λαμβάνει τα δεδομένα του πίνακα. Το εύρος D2 : H4 αντιπροσωπεύει την 3 * 5 ορθογώνια περιοχή μεταξύ των δύο γωνιών D2 και H4 στο φύλλο εργασίας. Η είσοδος range δεν είναι case sensitive και χρησιμοποιεί τη σημειογραφία Α1 του Excel. Κεφάλαιο 5 Εφαρμογή Gui στη μοντελοποίηση Συστήματος 5.1 Παράδειγμα Κατάδυσης Υποβρυχίου 64

Παρακάτω φαίνεται ένα παράδειγμα στο οποίο μπορούμε να δούμε αποτελέσματα μέσω της εφαρμογής μας : Στο Σχήμα 1 δίνεται υποβρύχιο που κινείται με σταθερή ταχύτητα v. Για την κατάδυση του υποβρυχίου από την επιφάνεια σε βάθος h(t) υπό γωνία α(t) δίνεται σήμα r(t) σε έναν προωθητή ο οποίος περιστρέφει ανάλογα το πίσω πηδάλιο του υποβρυχίου κατά γωνία β(t). Σχήμα 5.1 Κατάδυση υποβρυχίου από την επιφάνεια Το σύστημα περιγράφεται από τις εξισώσεις: 65

Η είσοδος στο σύστημα είναι η εντολή βάθους κατάδυσης r set (t) από τον χειριστή. Εκκινώντας το gui, επιλέγουμε το button με όνομα «DATA FILE» ώστε να ανοίξουμε το επιθυμητό αρχείο (Σχήμα 5.2). Σχήμα 5.2 Αρχική μορφή του gui Ανοίγουμε το submarine2.xls και φορτώνουμε τα δεδομένα που είναι αποθηκευμένα σε μορφή.xls (Σχήμα 5.3) 66

Σχήμα 5.3 Φόρτωση του Excel αρχείου Φορτώνοντας το παραπάνω αρχείο, φαίνονται οι παρακάτω έξοδοι του συστήματός μας (από x1 ως x5): Σχήμα 5.4 Έξοδος του συστήματος για το x1 67

Σχήμα 5.5 Έξοδος του συστήματος για το x2 Σχήμα 5.6 Έξοδος του συστήματος για το x3 68

Σχήμα 5.7 Έξοδος του συστήματος για το x4 Σχήμα 5.8 Έξοδος του συστήματος για το x5 69

Όπου x1 είναι η εντολή βάθους κατάδυσης r set (t) x2 είναι το σήμα r(t) x3 είναι η επιφάνεια υπό γωνία a(t) x4 είναι η γωνία υπό την οποία περιστρέφει ο προωθητής β(t) και x5 είναι το βάθος της κατάδυσης του υποβρυχίου h(t). Εδώ θέλουμε να προσεγγίσουμε τις μεταβλητές x2, x3, x4, x5 με ένα γραμμικό μοντέλο της μορφής 1 x k Ax k Bu k όπου το σήμα εισόδου u(k) είναι η εντολή r set μεταβλητές x2, x3, x4, x5. που αντιστοιχεί στο x1, και το x(k) περιέχει τις Η προσέγγιση γίνεται με τη Μέθοδο Ελαχίστων Τετραγώνων που παρουσιάστηκε στο κεφάλαιο 3. Συνεπώς από το gui επιλέγουμε: x1 ως input και x2, x3, x4, x5 ως output (Σχήμα 5.9). Σχήμα 5.9 Η είσοδος και οι έξοδοι του συστήματός μας Κατόπιν επιλέγοντας το button «MODEL» εμφανίζονται οι γραφικές παραστάσεις για καθεμία από τις εξόδους. 70

Σχήμα 5.10 Γραφική παράσταση της εξόδου x2 Σχήμα 5.11 Γραφική παράσταση της εξόδου x3 71

Σχήμα 5.12 Γραφική παράσταση της εξόδου x4 Σχήμα 5.13 Γραφική παράσταση της εξόδου x5 72

Η καθεμία από τις παραπάνω γραφικές παραστάσεις μπορεί να αποθηκευτεί ως ένα.jpeg αρχείο με την επιλογή «Save Figure» που βρίσκεται στη μπάρα μενού. Σχήμα 5.14 Διαδικασία αποθήκευσης.jpeg αρχείου 73

Οι πίνακες Α, Β του μοντέλου μπορούν να αποθηκευτούν μαζί με τα αριθμητικά δεδομένα των προσομοιώσεων, καθώς και του αρχικού συστήματος ως ένα.xls αρχείο με την επιλογή «Save Model» που βρίσκεται στη μπάρα μενού. Σχήμα 5.15 Διαδικασία αποθήκευσης.xls αρχείου Έστω ότι σώζουμε το excel αρχείο με όνομα results όπως φαίνεται παραπάνω στο σχήμα 5.15. Ανοίγοντας το results.xls παρατηρούμε τα παρακάτω: 74

Στο φύλλο 1 του excel αρχείου φαίνεται ο πίνακας Α (σχήμα 5.16): Σχήμα 5.16 Πίνακας Α Στο φύλλο 2 του excel αρχείου φαίνεται ο πίνακας Β (σχήμα 5.17): Σχήμα 5.17 Πίνακας Β 75

Στο φύλλο 3 του excel αρχείου φαίνεται ο πίνακας u (σχήμα 5.18): Σχήμα 5.18 Πίνακας u Στο φύλλο 4 του excel αρχείου φαίνεται η είσοδος x (σχήμα 5.19): Σχήμα 5.19 Τιμές Εισόδου x 76

Και τέλος στο φύλλο 5 φαίνεται η μεταβλητή xm (σχήμα 5.20) Σχήμα 5.20 Τιμές μεταβλητής xm Είναι φανερό από τις προηγούμενες γραφικές παραστάσεις ότι η Μέθοδος Ελαχίστων Τετραγώνων δίνει ικανοποιητικά αποτελέσματα ως προς την προσέγγιση του συστήματος που αφορά το υποβρύχιο. Συνεπώς, το συγκεκριμένο Gui μπορεί να αποτελέσει χρήσιμο εργαλείο για ανάλογες μοντελοποιήσεις γραμμικών συστημάτων από δεδομένα μετρήσεων. 5.2 Μετατροπή αρχείου Matlab σε.exe αρχείο: Στο παράθυρο εντολών του Matlab μπορούμε χρησιμοποιώντας την κατάλληλη εντολή, να μετατρέψουμε το matlab αρχείο μας σε ένα εκτελέσιμο.exe αρχείο. Αυτό γίνεται με την εντολή: mcc m όνομα αρχείου και στην περίπτωσή μας (σχήμα 5.21) mcc m gerantidou_kiskoridou_3 77

Σχήμα 5.21 Διαδικασία μετατροπής αρχείου από.m σε.exe Η παραπάνω διαδικασία μεταφράζει το matlab σε C++ και μέσω του compiler της C μετατρέπει το αρχείο σε.exe αρχείο. Χρησιμεύει ιδιαίτερα, αφού η εκάστοτε εφαρμογή μπορεί να «τρέξει» σε οποιονδήποτε υπολογιστή, χωρίς να χρειάζεται να υπάρχει εγκατεστημένο το λογισμικό του Matlab. 78