Εισαγωγή στο προγραμματιστικό περιβάλλον Matlab 7 ~ 14.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Βασικές έννοιες αλγορίθμων
Advertisements

Το αλφαριθμητικό (string)
Εισαγωγή στους Η/Υ Πίνακες.
ΣΤΟΙΧΕΙΑ ΨΕΥΔΟΚΩΔΙΚΑ ΒΑΣΙΚΕΣ ΔΟΜΕΣ ΒΑΣΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ ΠΙΝΑΚΩΝ
Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού
Μάθημα 2 Εισαγωγή στην Επιστήμη των Η/Υ ΙΙ
Τύποι πραγματικών αριθμών
MATrix LABoratory Εισαγωγή στο MatLab
Εισαγωγή στο MATLAB.
Προγραμματισμός PASCAL Πληροφορική Γ' Λυκείου μέρος γ
Προγραμματισμός στο ΜatLab
Νευρωνικά Δίκτυα Εργαστήριο Εικόνας, Βίντεο και Πολυμέσων
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Ενότητα Η Δομή Επανάληψης
Η αλληλουχία των ενεργειών δεν είναι πάντα μία και μοναδική!!!
ΕΠΑΝΑΛΗΨΗΕΠΑΝΑΛΗΨΗ ΠΡΟΓΡΑΜΜΑΤΑ. ΠΡΟΓΡΑΜΜΑ 1 ΕΞΗΓΗΣΤΕ ΤΙ ΕΞΟΔΟ ΠΑΡΑΓΕΙ ΤΟ ΠΑΡΑΚΑΤΩ ΠΡΟΓΡΑΜΜΑ #include int main() { char ch; int i; float fl; printf("dose.
ΤΕΛΕΣΤΕΣ II ΜΑΘΗΜΑ 5.
Η ΓΛΩΣΣΑ C ΜΑΘΗΜΑ 2.
Η αλληλουχία των ενεργειών δεν είναι πάντα μία και μοναδική!!!
Microsoft Excel 4.4 Τύποι και Συναρτήσεις
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java II.
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ
Μεταβλητές – εντολές εκχώρησης- δομή ακολουθίας
2-1 Ανάλυση Αλγορίθμων Αλγόριθμος Πεπερασμένο σύνολο εντολών που, όταν εκτελεστούν, επιτυγχάνουν κάποιο επιθυμητό αποτέλεσμα –Δεδομένα εισόδου και εξόδου.
Ενότητα Α.4. Δομημένος Προγραμματισμός
Η αλληλουχία των ενεργειών δεν είναι πάντα μία και μοναδική!!!
Επικοινωνία Ανθρώπου Μηχανής HTML CGI JAVASCRIPT Κουμπούλης Χρήστος Α.Μ. 921 Χαλαβαζής Βασίλης Α.Μ. 988.
ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ 2: ΘΕΜΑΤΑ ΘΕΩΡΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ Η/Υ
ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 1 Κεφάλαιο 4 Σημασιολογία μιας Απλής Προστακτικής Γλώσσας Προπτυχιακό.
Κάντε κλικ για έναρξη… Τ Ο ΠΕΡΙΒΑΛΛΟΝ ΕΡΓΑΣΙΑΣ Κέντρο εντολών Χώρος γραφικών (σελίδα) Χώρος σύνταξης διαδικασιών.
Διαφάνειες παρουσίασης #2
ΚΕΦΑΛΑΙΟ Τι είναι αλγόριθμος
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
HY100 : ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΟΝΤΕΣ Αντώνιος Σαββίδης, Χρήστος.
Επιστημονικός Υπολογισμός Ι Πρώτο Εργαστήριο Εισαγωγή στο matlab 15 Οκτωβρίου 2010 Γιώργος Δρακόπουλος ΤΜΗΥΠ.
Μερικές φορές το αποτέλεσμα εμφανίζεται αμέσως από κάτω.
Βασικά στοιχεία της Java
ΚΕΦΑΛΑΙΟ Το αλφάβητο της ΓΛΩΣΣΑΣ
ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα.
Μετασχηματισμός Fourier
Για μτ από ατ μέχρι ττ [με_βήμα β] εντολές Τέλος_επανάληψης : περιοχή εντολών μτ : η μεταβλητή της οποίας η τιμή θα περάσει από την αρχική.
Πληροφορική 2 Γλώσσες Προγραμματισμού 1. Γλώσσες προγραμματσιμού  Επιτρέπουν την κωδικοποίηση των αλγορίθμων  Η εκτέλεση ενός προγράμματος θα πρέπει.
Μεταβατική απόκριση ενός συστήματος δεύτερης τάξης Σχήμα 5.7 σελίδα 370.
Πίνακες στην JAVA ΕΡΓΑΣΤΗΡΙΟ AΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (Διαφάνειες: ΧΟΧΟΛΗΣ ΔΙΟΝΥΣΙΟΣ Προσαρμογή 2014: Κώστας Στάμος)
ΗΛΕΚΤΡΙΚΕΣ ΜΕΤΡΗΣΕΙΣ ΣΦΑΛΜΑΤΑ ΜΕΤΡΗΣΗΣ.
ΣΗΜΑΤΑ ΚΑΙ ΣΥΣΤΗΜΑΤΑ II Καθ. Πέτρος Π. Γρουμπός Διάλεξη 8η Στοχαστικά Σήματα - 1.
ΜΕΤΑΒΛΗΤΕΣ-ΣΤΑΘΕΡΕΣ -ΕΚΦΡΑΣΕΙΣ
ΚΕΦΑΛΑΙΟ 2ο - ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ
Δεδομένα, μεταβλητές, υπολογισμοί
ΑΛΓΟΡΙΘΜΟΣ ΠΡΟΒΛΗΜΑ ΑΛΓΟΡΙΘΜΟΣ ΛΥΣΗ
ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ
Βελτιστοποίηση εικόνας
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Αρχεσ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ ΤΑξη Β΄
Αρχεσ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ ΤΑξη Β΄
ΔΟΜΕΣ ΕΛΕΓΧΟΥ(if-else, switch) και Λογικοί τελεστές / παραστάσεις
MATLAB A MATrix LABoratoty
Μανασσάκης Βασίλης Καθηγητής Πληροφορικής
Τελεστές και ή όχι Για την εκτέλεση αριθμητικών πράξεων
ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΣΕΡΡΩΝ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΩΝ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Ανάπτυξη εκπαιδευτικής εφαρμογής.
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον
ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ
Εντολές και δομές αλγορίθμου
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΑΕΠΠ
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΩΝ Η/Υ
Β.ΕΠΑΛ-Γενικής Παιδείας  ΜΑΘΗΜΑ: Εισαγωγή στης αρχές Επιστήμης των Η/Υ  ΚΕΦΑΛΑΙΟ 4: Γλώσσες Αναπαράστασης Αλγορίθμων  ΕΝΟΤΗΤΑ 4.2: Δομή Ακολουθίας 
Προγραμματισμός & Εφαρμογές Η/Υ (Θ)
UNIT 1 Τα Πρώτα Προγράμματα.
Μεταγράφημα παρουσίασης:

Εισαγωγή στο προγραμματιστικό περιβάλλον Matlab 7 ~ 14

%σχόλια… Τα σχόλια σε ένα κείμενο source code (πηγαίου κώδικα) καθορίζονται από τα %{ (έναρξη σχολίου) και *%} (λήξη σχολίου). Πρέπει οι χαρακτήρες %{ και %} να σχηματίζουν ζεύγη. Κάθε γραμμή σχολίων πρέπει να αρχίζει με το σύμβολο % Ανάμεσα στα %{ και %}μπορούν να περιέχονται αριθμοί, χαρακτήρες και σύμβολα. Ό,τι περιέχεται ανάμεσα στους χαρακτήρες %{... %} ουσιατικά ‘προσπερνάται’ από τον compiler και αντιμετωπίζεται ως ένας χαρακτήρας κενού. Σκοπός του να γράφουμε σχόλια είναι να κάνουμε το πρόγραμμα πιο κατανοητό και καθαρό στην ανάγνωση καθώς παρέχουν εξηγήσεις για τμήματα του εκάστοτε προγράμματος.

Το MATLAB αντίθετα µε άλλες γλώσσες προγραµµατισµού δεν έχει τµήµα δήλωσης µεταβλητών (declaration statement). Εσωτερικά όµως καταγράφει πληροφορίες για τα δεδοµένα και τα κατατάσσει σε διαφορετικούς τύπους δεδοµένων, που στο MATLAB ονοµάζονται κλάσεις. Συνεπώς το MATLAB περιέχει διάφορους τύπους, όπως για παράδειγµα κελιά, δοµές, συµβολοσειρές και αραιές µήτρες, τις πολυδιάστατες µήτρες (multidimensional matrices) κ.α. To MATLAB έχει δυο συναρτήσεις για τον προσδιορισµό της κλάσης των τύπων δεδοµένων ( συναρτήσεις class και isa ). Πχ χ = 2; class(x)  double X = ‘xaraktiras_os_metabliti’; class(x)  char Μεταβλητές

Οι μεταβλητές στην Μatlab υπόκεινται σε λειτουργίες ξεχωριστών κλάσεων (αντικειμενοστραφής προγραμματισμός) Oι αλφαριθμητικές μεταβλητές αναγνωρίζονται μέσα σε εισαγωγικά ( ‘ ‘) ενώ οι μεταβλητές διπλής ακρίβειας καθώς και οι ακέραιοι εισάγονται χωρίς κάποια ιδιαιτερότητα. Πχ x = ‘name’ ; To χ αντιπροσωπεύει την μεταβλητή. Ακολουθεί το ίσον το οποίο θέτει μια συγκεκριμένη τιμή στην χ. Τέλος εκχωρείται η αλφαριθμητική τιμή – name -. Αντίστοιχα χ = 2.6; Eκχώριση της διπλής ακρίβειας(πραγματικής) τιμής 2.6

ΆΛΓΕΒΡΑ BOOLE Στις γλώσες προγραμματισμού οι οποίες έχουν ενσωματωμένο αυτόν τον τύπο δεδομένων, όπως η Pascal και η Java, η Fortran και η Matlab οι τελεστές σύγκρισης όπως ο '>' και ο '≠' επιστρέφουν συνήθως έναν τύπο δεδομένων Boolean. Οι τύποι δεδομένων Αληθείας ή Boolean, μπορούν να πάρουν δύο τιμές (συνήθως αναφέρονται ως Αληθής/True ή Ψευδής/False), και στον προγραμματισμό δίνουν το λογικό αποτέλεσμα 0 ή 1 Μηδέν αν η συνθήκη που εξετάζεται δεν είναι αληθής και 1 αν είναι αληθής. Πχ 4==4 (σε σύγκριση χρησιμοποιείται το διπλό ίσον και όχι το απλό ίσον το οποίο εκχωρεί τιμές σε μεταβλητές) 1 (ΛΟΓΙΚΟ ΑΠΟΤΕΛΕΣΜΑ ΑΛΗΘΕΙΑΣ ) Αντίστοιχα 4==5 θα επιστρέψει ως αποτέλεσμα το μηδέν αφού δεν επαληθεύεται η εν λόγω σχέση.

Το (4 > 3) είναι true. Το (4 3) && (3.0 > 2.0) είναι true Το (4 2.0) είναι false Αντίστοιχα αν χρειαστεί να εξετάσουμε αν κάποια από τις συνθήκες είναι αληθής τότε χρησιμοποιούμε || Το (4 > 3) || (3.0 > 2.0) είναι true Το (4 2.0) είναι true

Eπεξεργασία αλφαριθμητικών μεταβλητών (char class) Έστω ότι χ = ‘name’ ; y = ‘maria’ ; z = ‘anna’; H πράξη Q = x + y δεν μπορεί να πραγματοποιηθεί γιατί οι πίνακες έχουν διαφορετικό μέγεθος. Aντίθετα η πράξη Q = x + z μπορεί να πραγματοποιηθεί γιατί και οι δύο μεταβλητές καταλαμβάνουν ίδιο χώρο(πίνακα) Αποδεικνύεται με λογικό αποτέλεσμα (Boole άλγεβρα) αφού length(x) == length(z) ενώ length(x) == length(y) Το αποτέλεσμα Βοοle θα είναι -1- για την πρώτη περίπτωση(θετικό) και -0- στην δεύτερη περίπτωση δηλαδή αρνητικό. Το αποτέλεσμα Q = x + z θα είναι [ ]. (double class) Το αποτέλεσμα αυτό δεν είναι λάθος η περίεργο αφού η Matlab αντιλαμβάνεται την πράξη ως πράξη διπλής ακρίβειας(αντίληψη των χαρακτήρων υπό μορφή ascii). Αν θέλουμε να εμφανίσουμε το φυσιολογικό(στην λογική μας) αποτέλεσμα nameanna τότε θα πρέπει να πραγματοποιήσουμε συνένωση πινάκων. Δηλαδή Q = [ x z]; Το οποίο θα δώσει το αποτέλεσμα nameanna και μάλιστα θα είναι αλφαριθμητικό (char class) 4 ==4 4 ~=5

Eπεξεργασία πραγματικών μεταβλητών (double class) Έστω ότι χ = 1; y = 2 ; z = 3; H πράξη Q = x + y θα μας δώσει αποτέλεσμα 3. Αν πραγματοποιήσουμε συνένωση πινάκων σε μεταβλητές διπλής ακρίβειας τότε θα δημιουργήσουμε έναν καινούργιο πίνακα ο οποίος απλά θα περιέχει τις εκάστοτε μεταβλητές. Για παράδειγμα η συνένωση Q = [ x y]; Θα δώσει αποτέλεσμα 1 2 ΠΡΟΣΟΧΗ το αποτέλεσμα δεν είναι δώδεκα αλλά 1 και ως δεύτερο double στοιχείο το 2. Δηλαδή η μεταβλητή Q θα είναι ένας καινούργιος πίνακας με μέγεθος 2Χ1. Ισχύει Q = x + y + z ΑΠΟΤΕΛΕΣΜΑ : 6 μέγεθος πίνακα 1Χ1 Ισχύει Q = [ x y z ] ΑΠΟΤΕΛΕΣΜΑ : μέγεθος πίνακα 1Χ3

Έστω ο πίνακας: χ = -3 : 3 ( δηλαδή [ ] ) Η εντολή-συνάρτηση abs(χ) > 1 θα δώσει ως αποτέλεσμα _________________________________________________________________ Δηλαδή θα επιστραφεί ένας λογικός πίνακας με μονάδες -True- όπου η απόλυτη τιμή του χ είναι μεγαλύτερη από ένα και μηδενικά -False- οπουδήποτε αλλού. _________________________________________________________________ Η εντολή y = x ( abs ( x ) ) > 1 ) θα δημιουργίσει το άνυσμα y παίρνοντας εκείνες τις τιμές του χ των οποίων η απόλυτη τιμή είναι μεγαλύτερη από το 1. _________________________________________________________________ Το γεγονός ότι η εντολή abs(x)>1 παράγει τον πίνακα [ ],δεν συνεπάγεται ότι είναι ισοδύναμος με έναν αριθμητικό πίνακα ο οποίος περιέχει τις ίδιες τιμές… δηλαδή, έστω ότι y = x([ ]) και πατάμε ENTER. Το matlab πολύ ορθά θα επιστρέψει error παρόλο που και στις δύο περιπτώσεις φαίνεται να υπάρχει το ίδιο διάνυσμα! Το γεγονός αυτό οφείλεται στην διαφορά που υπάρχει μεταξύ αριθμητικών και λογικών πινάκων. Η διαφορά αυτή γίνεται για άλλη μια φορά αντιληπτή με την χρήση της εμφάνισης της κλάσης και στις δύο περιπτώσεις, αφού class(abs(x))>1  logical Και αντίστοιχα class([ ])  double

Μέχρι στιγμής εξετάσαμε πράξεις με απλούς αριθμούς (βαθμωτοί-scalar αριθμοί). Σε περίπτωση πράξεων με περισσότερα στοιχεία απαιτείται η δομή πινάκων. Έστω ότι θέλουμε να υπολογίσουμε τιμές της συνάρτησης ημιτόνου στο μισό της περιόδου της. Δηλαδή πρέπει να υπολογίσουμε την y = sin(x) στο τόξο 0<=χ<=π

Μέχρι στιγμής εξετάσαμε πράξεις με απλούς αριθμούς (βαθμωτοί-scalar αριθμοί). Σε περίπτωση πράξεων με περισσότερα στοιχεία απαιτείται η δομή πινάκων. Έστω ότι θέλουμε να υπολογίσουμε τιμές της συνάρτησης ημιτόνου στο μισό της περιόδου της. Δηλαδή πρέπει να υπολογίσουμε την y = sin(x) στο τόξο 0<=χ<=π

Μέχρι στιγμής εξετάσαμε πράξεις με απλούς αριθμούς (βαθμωτοί-scalar αριθμοί). Σε περίπτωση πράξεων με περισσότερα στοιχεία απαιτείται η δομή πινάκων. Έστω ότι θέλουμε να υπολογίσουμε τιμές της συνάρτησης ημιτόνου στο μισό της περιόδου της. Δηλαδή πρέπει να υπολογίσουμε την y = sin(x) στο τόξο 0<=χ<=π

ΒΗΜΑ 1: ΕΠΙΛΟΓΗ ΑΡΙΘΜΟΥ ΠΕΠΕΡΑΣΜΕΝΩΝ ΣΗΜΕΙΩΝ Μεταξύ του 0 μέχρι το π υπάρχει άπειρος αριθμός σημείων. Συνεπώς ανάλογα με την λεπτομέρεια που χρειαζόμαστε δημιουργούμε πίνακες αντίστοιχης λεπτομέρειας (αριθμός πεπερασμένων σημείων). ΒΗΜΑ 2: ΤΡΟΠΟΣ ΕΙΣΑΓΩΓΗΣ ΠΙΝΑΚΑ Σε περίπτωση που έχουμε λίγα σημεία, μπορούμε να τα εισάγουμε πληκτρολογώντας μεμονωμένα κάθε στοιχείο. Για παράδειγμα αν το βήμα δειγματοληψίας θεωρηθεί το π/2 τότε έχουμε: χ = [ 0 π/2 π]; Σε περίπτωση που το βήμα δειγματοληψίας είναι πολύ μικρό συνίσταται η χρήση 1) διανύσματος με την σημειογραφία άνω κάτω τελεία 2) διανύσματος με την βοήθεια της εντολής linspace Στην πρώτη περίπτωση έχουμε χ = ( αρχή : βήμα : τέλος ) Έστω ότι το βήμα είναι 0,1 τότε : χ = ( 0 :.1 : 1 ) * p Στην δεύτερη περίπτωση θα έχουμε χ = linspace( πρώτη_τιμή, τελευταία_τιμή, πλήθος_τιμών) χ = ( 0,p,10)

ΥΛΟΠΟΙΗΣΗ ΤΗΣ Y = sin(x) ΒΗΜΑ 1: καθορισμός ανύσματος χ (άξονας χ ) x = [1 :.1 : 2*pi] Μεταβλητή χ Εντολή εκχώρησης Αγκύλη που σηματοδοτεί την αρχή ενός πίνακα Αρχή (πρώτο στοιχείο) Βήμα έως 2π Επιτρέπονται οι πράξεις κατά την δομή πίνακα

ΒΗΜΑ 2: καθορισμός ανύσματος y (άξονας y ) Στην εν λόγω περίπτωση έχουμε την συνάρτηση sin y = sin(x) Πίνακας διαστάσεως ίσος με length(x) 1Χ53 Πίνακας χ με μέγεθος 1Χ53 (1 στήλη και 53 στήλες-καταχωρήσεις ) Συνεπώς για κάθε τιμή του χi του ανύσματος χ αντιστοιχίζεται η τιμή sin(xi) στον πίνακα y. Tέλος με την εντολή plot(x,y) θα αποδώθεί γραφικά η συμπεριφορά της συνάρτησης (1 Figure 1 Axes)

0~2π (6 σημεία) 0~2π (100 σημεία)

Μatlab τιμές - Tελεστής / Τρεις διαφορετικές περιπτώσεις διαίρεσης με την ύπαρξη μηδενικού στοιχείο διπλής ακρίβειας(boulbe) 1/0  Ιnf (άπειρο) 0/1  0 (μηδέν) 0/0  NaN (όχι αριθμός)

yy(10:14) = 0; yy(20:24) = 0; yy(30:34) = 0; yy(10:14) = ΝaΝ; yy(20:24) = NaN; yy(30:34) = NaN; ΣΗΜΑΣΙΑ ΤΩΝ ΜΗΔΕΝΙΚΩΝ ΚΑΙ ΝaN ΣΤΟΙΧΕΙΩΝ

ΝaN και Empty matrices Στην επιστήμη των υπολογιστών, το NaN, είναι συντομογραφία του not a number, και είναι μια τιμή που μπορει να πάρει κάποια μεταβλητή που λαμβάνει είτε μια αδιευκρίνιστη τιμή, είτε μια τιμή που δεν μπορεί να αναπαρασταθεί. Η τεχνική της εισόδου NaN τιμής εμφανίστηκε το 1985 απο το Institute of Electrical and Electronics Engineers (IEEE). Υπάρχουν δύο ξεχωριστά είδη ΝaN. Το πρώτο αναφέρεται σε λάθη που προκύπτουν από πράξεις ή μη έγκυρες τιμές ενώ η δεύτερη περιλαμβάνει μια σειρά από ιδιότητες που μπορούν να υποστούν αριθμητική επεξεργασία όπως ανάμιξη αριθμητικών στοιχείων με συμβολοχαρακτήρες (αν δεν υπάρχει αυτόματη μετατροπή και ανοχή σε πράξεις (ascii). Επίσης η τετραγωνική ρίζα ενός αρνητικού αριθμού μπορεί να αποθηκευτεί ως NaN σε περιπτώσεις που έχει απενεργοποιηθεί η ανάκληση συναρτήσεων και ιδιοτήτων μιγαδικών (αντικειμενοστραφής προγραμματισμός). Τα ΝaΝ στοιχεία αφήνουν απλά οπές(κενά) ως προς την εκάστοτε γραφική επεικόνιση.

Έστω ότι a = [ 1 2 nan inf nan] (τα ΝaN δεν χαρακτηρίζονται case sensitive) 1)B = a * 2 ;  [2 4 nan inf nan] 2)C = (a==nan)  [ ] αντίστοιχα D = (a~=nan)  [ ] Το πρώτο παράδειγμα δίνει αποτέλεσμα nan για δειδομένα εισόδου nan. Όμως το παράδειγμα 2 δίνει περίεργα αποτελέσματα. Το γεογονός αυτό δείχνει ότι τα nan στοιχεία δεν είναι ίσα μεταξύ τους. Η συνάρτηση isnan είναι η μόνη που μπορεί να μας δώσει ορθά αποτελέσματα εύρεσης nan στοιχείων. 3) I = find(isnan(a)) % pragmatopoioyme eyresh arithmodeikton nan stoixeion  I = [3 5] Συνεπώς αν θέλουμε να αλλάξουμε τα nan σε μηδενικά στοιχεία(αριθμοί) 4) a(i) = zeros(size(i))  [1 2 0 inf 0]

Αν και τα nan μαθηματικά ορίζονται καλά από τα πρότυπα της IEEE οι κενοί πίνακες ορίζονται από τους δημιουργούς του Matlab και έχουν δικές του ενδιαφέρουσες ιδιότητες. Οι κενοί πίνακες είναι ουσιαστικά μεταβλητές οι οποίες έχουν μηδενικό μήκος σε μία ή περισσότερες διαστάσεις. Έστω size([])  0 0 C = zeros(0,5)  Empty matrix: 0-by-5 %δηλαδή [] πίνακας πολλών στηλών size(C )  0 5 Στο Μatlab πολλές συναρτήσεις επιστρέφουν κενούς πίνακες όταν δεν είναι κατάλληλο κανένα άλλο αποτέλεσμα. Έστω χ = -2 : 2  y = find(x>2)  Empty matrix: 1-by-0 H isempty συνάρτηση είναι η μόνη που αναγνωρίζει κενούς πίνακες

Flow chart για την εκτέλεση ενός προγράμματος στη Matlab Source code Compiler mcr Γλωσσα μηχανης Εκτέλεση αλγόριθμου / exe με dll Έλεγχος σφαλμάτων Αποτελέσματα στο root τερματικό

Έλεγχος ροής εκτέλεσης προγράμματος 5 δομές επανάληψη Βρόχος FOR Βρόχος WHILE επιλογές ροής IF … THEN …. ELSE SWITCH …. CASE TRY …. CATCH

Παράδειγμα εντολής - if – If statement >= variable εντολές end Διάγραμμα ροής - if - false εντολές Statement >= variable true

Παράδειγμα εντολής - if – If statement >= variable εντολές end Διάγραμμα ροής - if - false εντολές Statement >= variable true Περιπτώσεις nested if δομής If statement1 >= x && statement2 <= y || strcmp(statement3,’xy’) if statement1 >= z && ( statement2 <= q || strcmp(statement3,’var’) ) … end

Παράδειγμα εντολής - if – If statement >= variable εντολές end Διάγραμμα ροής - if - false εντολές Statement >= variable true Περιπτώσεις elseif δομής If statement1 >= x && statement2 <= y || strcmp(statement3,’xy’) edoles elseif (statement1 >= z && ( statement2 <= q || strcmp(statement3,’var’) ) ) edoles else edoles end

Παράδειγμα εντολής - switch – switch switch_expression case case_expression εντολές end switch switch_expression case case_expression statements case case_expression statements... otherwise statements end

Παράδειγμα εντολής - switch – switch switch_expression case case_expression εντολές end switch switch_expression case case_expression statements case case_expression statements... otherwise statements end παράδειγμα num = input(‘ pliktrologise enan arithmo'); switch num case -1 disp(‘arnitiko') case 0, disp(‘miden'), otherwise, disp(‘kati alo'), end

Παράδειγμα εντολής - for – for variable = start : step : end εντολές end Διάγραμμα ροής - for - for … true false προηγούμενες εντολές εντολές

Παράδειγμα εντολής - for – for variable = start : step : end εντολές end Διάγραμμα ροής - for - for … true false sum = 0; εντολές Έστω ο παρακάτο αλγόριθμος sum = 0; for I = 1 : 1 : 4 sum = sum + i end disp(‘telos’)

Παράδειγμα εντολής - for – for variable = start : step : end εντολές end Διάγραμμα ροής - for - for … true false sum = 0; εντολές OΘΟΝΗ (ROOT) Έστω ο παρακάτο αλγόριθμος sum = 0; for I = 1 : 1 : 4 sum = sum + i end disp(‘telos’)

Παράδειγμα εντολής - for – for variable = start : step : end εντολές end Διάγραμμα ροής - for - for … true false sum = 0; εντολές OΘΟΝΗ (ROOT) Έστω ο παρακάτο αλγόριθμος sum = 0; for I = 1 : 1 : 4 sum = sum + i end disp(‘telos’)

Παράδειγμα εντολής - for – for variable = start : step : end εντολές end Διάγραμμα ροής - for - for i =1:1:4 true false sum = 0; εντολές OΘΟΝΗ (ROOT) i=1 Έστω ο παρακάτο αλγόριθμος sum = 0; for I = 1 : 1 : 4 sum = sum + i end disp(‘telos’)

Παράδειγμα εντολής - for – for variable = start : step : end εντολές end Διάγραμμα ροής - for - for i =1:1:4 true false sum = 0; sum = sum + i OΘΟΝΗ (ROOT) i=1 Έστω ο παρακάτο αλγόριθμος sum = 0; for I = 1 : 1 : 4 sum = sum + i end disp(‘telos’)

Παράδειγμα εντολής - for – for variable = start : step : end εντολές end Διάγραμμα ροής - for - for i =1:1:4 true false sum = 0; sum = sum + i OΘΟΝΗ (ROOT) sum = 1 i=1 Έστω ο παρακάτο αλγόριθμος sum = 0; for I = 1 : 1 : 4 sum = sum + i end disp(‘telos’)

Παράδειγμα εντολής - for – for variable = start : step : end εντολές end Διάγραμμα ροής - for - for i =1:1:4 true false sum = 0; sum = sum + i OΘΟΝΗ (ROOT) sum = 1 sum = 3 i=2 Έστω ο παρακάτο αλγόριθμος sum = 0; for I = 1 : 1 : 4 sum = sum + i end disp(‘telos’)

Παράδειγμα εντολής - for – for variable = start : step : end εντολές end Διάγραμμα ροής - for - for i =1:1:4 true false sum = 0; sum = sum + i OΘΟΝΗ (ROOT) sum = 1 sum = 3 sum = 6 i=3 Έστω ο παρακάτο αλγόριθμος sum = 0; for I = 1 : 1 : 4 sum = sum + i end disp(‘telos’)

Παράδειγμα εντολής - for – for variable = start : step : end εντολές end Διάγραμμα ροής - for - for i =1:1:4 true false sum = 0; sum = sum + i OΘΟΝΗ (ROOT) sum = 1 sum = 3 sum = 6 sum = 10 i=4 Έστω ο παρακάτο αλγόριθμος sum = 0; for I = 1 : 1 : 4 sum = sum + i end disp(‘telos’)

Παράδειγμα εντολής - for – for variable = start : step : end εντολές end Διάγραμμα ροής - for - for i =1:1:4 true false sum = 0; sum = sum + i OΘΟΝΗ (ROOT) sum = 1 sum = 3 sum = 6 sum = 10 i=5 Έστω ο παρακάτο αλγόριθμος sum = 0; for I = 1 : 1 : 4 sum = sum + i end disp(‘telos’)

Παράδειγμα εντολής - for – for variable = start : step : end εντολές end Διάγραμμα ροής - for - for i =1:1:4 true false sum = 0; sum = sum + i Έστω ο παρακάτο αλγόριθμος sum = 0; for I = 1 : 1 : 4 sum = sum + i end disp(‘telos’) OΘΟΝΗ (ROOT) sum = 1 sum = 3 sum = 6 sum = 10 telos i=5 disp(‘telos’)

Παράδειγμα εφαρμογής εντολής βρόχου for Εφαρμογή προσέγγισης ενός ολοκληρώματος Αριθμητική μέθοδος υπολογισμού ενός ορισμένου ολοκληρώματος Αθροίσματα Riemann

function [I] = reimann_prosegisi(f,a,b,n) x=linspace(a,b,n+1); d = x(2)-x(1)/2; Y=feval(f,x); Yleft=Y(1:n); I=sum(diff(x).*Yleft); % Draw area xnew=linspace(a,b,1001); ynew=feval(f,xnew); hf =plot(xnew,ynew); xlabel('x'); ylabel('y'); hold on for i=1:n xx(1)=x(i); yy(1)=0; xx(2)=x(i+1); yy(2)=0; xx(3)=x(i+1); yy(3)=feval(f,xx(1)); xx(4)=x(i); yy(4)=feval(f,xx(1)); fill(xx,yy,[0 1 0]),end aa = title('Graph of Sine and Cosine Between -2\pi and 2\pi'); set(aa,'String',[' Prosegisi Riemann SE: ' num2str(i) ' ATHROISMATA = ' num2str(I) ]) plot(xnew,ynew); plot(x,Y,'ro') hold off

Η πρώτη εντολή μιας συνάρτησης Matlab ορίζεται ως εξής: function [I] = reimann_prosegisi(f,a,b,n)

Η πρώτη εντολή μιας συνάρτησης Matlab ορίζεται ως εξής: function [I] = reimann_prosegisi(f,a,b,n) Ορισμός συνάρτησης (m file)

Η πρώτη εντολή μιας συνάρτησης Matlab ορίζεται ως εξής: function [I] = reimann_prosegisi(f,a,b,n) Ορισμός συνάρτησης (m file) Μεταβλητές εξόδου για το main workspace

Η πρώτη εντολή μιας συνάρτησης Matlab ορίζεται ως εξής: function [I] = reimann_prosegisi(f,a,b,n) Ορισμός συνάρτησης (m file) Μεταβλητές εξόδου για το main workspace Όνομα συνάρτησης (το *.m αρχείο θα πρέπει να αποθηκευτεί με την ίδια ονομασία )

Η πρώτη εντολή μιας συνάρτησης Matlab ορίζεται ως εξής: function [I] = reimann_prosegisi(f,a,b,n) Ορισμός συνάρτησης (m file) Μεταβλητές εξόδου για το main workspace Όνομα συνάρτησης (το *.m αρχείο θα πρέπει να αποθηκευτεί με την ίδια ονομασία ) Μεταβλητές εισόδου στο current function workspace

Η πρώτη εντολή μιας συνάρτησης Matlab ορίζεται ως εξής: function [I] = reimann_prosegisi(f,a,b,n) Ορισμός συνάρτησης (m file) Μεταβλητές εξόδου για το main workspace Όνομα συνάρτησης (το *.m αρχείο θα πρέπει να αποθηκευτεί με την ίδια ονομασία ) Μεταβλητές εισόδου στο current function workspace function [ var_exit_1 ] = name_of_function [var_input_1]

Έστω ότι η συνάρτηση f(x) συνεχής στο διάστημα ολοκλήρωσης [ a, b ] Διαμερίζοντας το διάστημα a ~ b σε n υποδιαστήματα ίσου μήκους Δχ = ( b – a ) / n με κομβικά σημεία τα χ 0 = a χ 1 = a + Δχ χ 2 = a + 2*Δχ. χ n = a + n*Δχ όπου ισούται με b παίρνουμε τα αθροίσματα της αρχικής μορφής (βλέπε τίτλο διαφάνειας) τα οποία καλούνται και αθροίσματα Reimann (αριστερό και δεξιό, αντίστοιχα). Για πεπερασμένο αριθμό κομβικών σημείων (δηλαδή δεν πάρουμε το όριο όταν το n τείνει στο άπειρο) τότε έχουμε μια προσέγγιση για το ολοκλήρωμα, το οποίο αποδίδεται γραφικά στην επόμενη διαφάνεια. a b

Τέλος Εισαγωγής στο προγραμματιστικό περιβάλλον Matlab 7

αυτά… ευχαριστώ