ΗΜΥ 100 Εισαγωγή στην Τεχνολογία ιάλεξη 14 20 Οκτωβρίου, 2005 Ηλίας Κυριακίδης Λέκτορας ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ 2005Ηλίας Κυριακίδης, Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών, Πανεπιστήµιο Κύπρου
ΤΑ ΘΕΜΑΤΑ ΜΑΣ ΣΗΜΕΡΑ Κατ οίκον εργασία ΚΕ7 Τελική µελέτη Εισαγωγή στην MATLAB (2) -- Αρχεία MATLAB -- Βρόγχοι και εκφράσεις συνθήκης -- Συναρτήσεις
Ενότητα 3: Αρχεία MATLAB Αρχεία M (M-files) ηµιουργούνται σε ξεχωριστό παράθυρο (edit window). Τρόπος γραφής όπως σε κάθε επεξεργαστή κειµένου. Πολύ πιο εύκολος τρόπος γραφής κωδικού και εκτέλεσης προγραµµάτων αφού µπορούν να φυλαχτούν και να διαµορφωθούν αργότερα ή να καλεστούν από άλλα M-files ή από το κυρίως παράθυρο.
Ενότητα 3: Αρχεία MATLAB ηµιουργία αρχείου MATLAB 1. Στο κυρίως παράθυρο επιλέξτε File New M-file (θα ανοίξει το MATLAB editor) 2. Πληκτρολογήστε τις εντολές που φαίνονται στο σχήµα
Ενότητα 3: Αρχεία MATLAB 3. Για να µπορεί να τρέξει κάποιο πρόγραµµα, πρέπει να βρίσκεται σε ένα από τους φακέλους (directories) οι οποίοι έχουν εξουσιοδότηση να τρέχουν αρχεία της MATLAB. Αν ο φάκελος στον οποίο φυλάξουµε το αρχείο δεν υπάρχει σε αυτή τη λίστα, τότε δεν µπορεί να τρέξει το πρόγραµµα. -- Γιανατοπροσθέσουµεστηλίστα: από το κυρίως παράθυρο επιλέγουµε το File Set Path Add Folder και επιλέγουµετοfolder στο οποίο βρίσκεται το αρχείο. Επιλέγουµε τοsave και ακολούθως Close. 4. Για να τρέξουµετοπρόγραµµα πληκτρολογούµετοόνοµα του αρχείου στο κυρίως παράθυρο (µην ξεχάσετε να κάνετε Save το πρόγραµµακάθεφορά που αλλάζετε κάτι).
Ενότητα 3: Αρχεία MATLAB Γενικά To σύµβολο % χρησιµοποιείται µπροστά από τα σχόλια (comments) (ότι ακολουθεί στην ίδια γραµµή αγνοείται). Τα σχόλια είναι πολύ σηµαντικά για να µπορούν και άλλοι να καταλαβαίνουν τον κώδικα µας, αλλάκαιναθυµούµαστε τι έχουµε κάνει όταν περάσει αρκετός χρόνος από τότε που γράψαµε τοπρόγραµµα. Οαριθµός των δεκαδικών σηµείων που εµφανίζονται στην οθόνη εξαρτάται από το πως ζητούµε ναεµφανίζονται και όχι από την ακρίβεια του λογισµικού. Όλες οι πράξεις γίνονται µε 15 δεκαδικά. -- Γιανααλλάξετετοναριθµό των δεκαδικών που παρουσιάζονται στην οθόνη χρησιµοποιείστε την εντολή format. π.χ. format long e παρουσιάζει τους αριθµούς µε 15 δεκαδικά και σε εκθετική µορφή. -- Πληκτρολόγησε help format για περισσότερες πληροφορίες.
Ενότητα 4: Γραφικές παραστάσεις >> t = 0:0.01:3; >> x = 2*sin(4*t); >> plot(t,x) % Προσθήκη πλέγµατος >> grid on % Προσδιορισµός ορίων αξόνων >> axis([0 3-3 3]) % Προσθήκη τίτλου και ονοµασία αξόνων >> xlabel('t (s)') >> ylabel('x (V)') >> title('example for plotting a sine function')
Ενότητα 4: Γραφικές παραστάσεις Παράδειγµα: Σχεδιάστε ένα µοναδιαίο κύκλο (µε ακτίναµια µονάδα) >> theta = linspace(0, 2*pi, 100); >> x = cos(theta); >> y = sin(theta); >> plot(x,y) >> axis('equal') >> xlabel('x') >> ylabel('y') >> title('circle of unit radius')
Ενότητα 4: Γραφικές παραστάσεις Σχεδιασµός πολλαπλών γραφικών παραστάσεων στους ίδιους άξονες >> figure(1) >> t=linspace(0, 2*pi, 100); >> x = 2*sin(t); >> y = cos(t); >> z = x+y; >> plot(t,x,'r-.', t,y,'b:', t,z,'m+') >> axis([0 6-3 3]) >> legend('x', 'y', 'z') >> xlabel('t (s)') >> ylabel('signal value (V)') >> title('demonstration of plotting three graphs on the same axes') Εναλλακτικός τρόπος: >> figure(1) >> hold on >> plot(t,x) >> plot(t,y) >> plot(t,z) >> hold off Χωρίς την εντολή hold on και hold off, θα δηµιουργούνταν 3 ξεχωριστές γραφικές παραστάσεις
Ενότητα 4: Γραφικές παραστάσεις Σχεδιασµός πολλαπλών γραφικών παραστάσεων στο ίδιο παράθυρο >> figure(1) >> subplot(3,2,1) >> plot(t,x,'r') >> grid on >> title('plot of x with grid') >> subplot(3,2,4) >> plot(t,y,'+') >> title('plot of y with no grid') >> subplot(3,2,5) >> plot(t,y) >> grid on >> title('plot of y with grid') >> subplot(3,2,6) >> plot(t,z) >> title('plot of z with no grid') Στην πρώτη αναφορά δηµιουργεί ένα γραφικό παράθυρο µε m σειρές και n στήλες, ενώ ο τρίτος αριθµός αναφέρεται στη θέση που θα τοποθετηθεί η συγκεκριµένη παράσταση.
Ενότητα 4: Γραφικές παραστάσεις Τρισδιάστατες γραφικές παραστάσεις >> u = -5:0.2:5; >> [X,Y] = meshgrid(u,u); >> Z = cos(x).*cos(y).*exp(-sqrt(x.^2+y.^2)/4); >> surfc(z)
Ενότητα 4: Γραφικές παραστάσεις Χρήσιµες πληροφορίες: -- Για τη διόρθωση κάποιων στοιχείων στη γραφική παράσταση (αλλαγή γραµµατοσειρών, αλλαγή κλίµακας αξόνων, αλλαγή πάχους ή χρώµατος του γραφήµατος) πρέπει (α) να πατήσετε το τόξο στην γραµµήεργαλείων(toolbar) της γραφικής παράστασης και (β) να κάνετε right-click µέσα στους άξονες της γραφικής παράστασης και να επιλέξετε Properties. -- help plot (επίσης axis, xlabel, ylabel, title, legend, grid) -- demos MATLAB Graphics Plotting and printing (or 2-D plots or 3-D plots)
Ενότητα 5: Βρόγχοι και εκφράσεις συνθήκης for loop Χρησιµοποιείται όταν θέλουµε να επαναλάβουµε κάποια εντολή ή µια οµάδα από εντολές. Τρόπος σύνταξης: for i = m:k:n statement 1; statement 2; end Οι εντολές που εσωκλείονται στον βρόγχο εκτελούνται για όλες τις τιµές του i από την τιµή m ως την τιµή n αυξανόµενο κατά k κάθε φορά. (Αν το k απουσιάζει, τότε ητιµή τουi αυξάνετε κατά ένα κάθε φορά).
Ενότητα 5: Βρόγχοι και εκφράσεις συνθήκης while loop Χρησιµοποιείται όταν επιθυµούµεναεκτελέσουµε µια εντολή ή µια οµάδα από εντολές ένα απεριόριστο αριθµό φορών, µέχρις ότουησυνθήκηηοποίααναφέρεταιαµέσως µετά την λέξη while πάψει να ισχύει. Τρόπος σύνταξης: while (λογική έκφραση) statement; end Παράδειγµα: j = 1; while (j <= 4) j = j+1; end disp(j) j = 5 Πρέπει οπωσδήποτε µέσα στο βρόγχο κάτι σχετικό µε την λογική έκφραση να αλλάζει ώστε να µην εκτελείται ο βρόγχος επ άπειρον.
Ενότητα 5: Βρόγχοι και εκφράσεις συνθήκης if statement Χρησιµοποιείται όταν επιθυµούµεναεκτελέσουµε κάποια εντολή ήκάποιαοµάδα εντολών µόνο αν κάποια έκφραση είναι αληθής. Μπορούν να γίνουν διάφοροι συνδυασµοί χρησιµοποιώντας και τις κωδικές λέξεις else και elseif. if (expression1) statement1; εκτελείται µόνο αν το expression1 είναι αληθές end if (expression1) statement1; εκτελείται µόνο αν το expression1 είναι αληθές else statement2; εκτελείται µόνο αν το expression1 δεν είναι αληθές end if (expression1) statement; εκτελείται µόνο αν το expression1 είναι αληθές elseif (expression2) statement2; εκτελείται µόνο αν το expression1 δεν είναι αληθές και το expression2 είναι αληθές else statement3; εκτελείται µόνο αν κανένα expression δεν είναι αληθές end
Ενότητα 5: Βρόγχοι και εκφράσεις συνθήκης Παράδειγµα: Βρόγχος µέσα σε βρόγχο (nested loop) k = 1 while (k <= 5) if (k <= 3) j = k^3 elseif (k == 4) j = k^2 else j = k end k = k+1 end k = 1 j = 1 k = 2 j = 8 k = 3 j = 27 k = 4 j = 16 k = 5 j = 5 k = 6
Ενότητα 5: Χρήσιµες εντολές break: -- Τερµατίζει την εκτέλεση ενός βρόγχου for ή while. -- Οι εντολές που ακολουθούν στον βρόγχο δεν εκτελούνται. -- Στους βρόγχους µέσα σε βρόγχο (nested loops) η εντολή break τερµατίζει µόνο τον βρόγχο µέσα στον οποίο βρίσκεται. Οι εξωτερικοί βρόγχοι δεν επηρεάζονται. continue: -- Συνεχίζει µετηνεπόµενη επανάληψη του βρόγχου for ή while και παραλείπει τις εντολές που ακολουθούν µέσα στοβρόγχοπουβρίσκεται.
Παράδειγµα Για τους πιο κάτω κώδικες, υπολογίστε το αποτέλεσµατηςεξόδου για κάθε περίπτωση που δίνεται: if n>1 m = n+1 else m = n-1 end (α) n = 7 m = (β) n = 0 m = (γ) n = -10 m = if (0 < x < 10) y = 4*x elseif (10 < x < 40) y = 10*x else y = 500 end (α) x = -1 y = (β) x = 5 y = (γ) x = 30 y = (δ) x = 100 y =
Ενότητα 6: Συναρτήσεις (functions) Η συνάρτηση είναι ένα αρχείο Μ µετηµόνη διαφορά ότι οι µεταβλητές είναι τοπικές (local) και όχι σφαιρικές (global). Ένα αρχείο συνάρτησης ξεκινά µε τονορισµότης συνάρτησης ο οποίος καθορίζει τις µεταβλητές εισόδου και εξόδου. (Χωρίς τον ορισµόθαήταναπλά ένα αρχείο Μ). Οι συναρτήσεις χωρίζονται σε ενσωµατωµένες συναρτήσεις (built-in) και οριζόµενες από το χρήστη (user-defined). Στην πραγµατικότητα, οι περισσότερες εντολές στη MATLAB είναι συναρτήσεις.
Ενότητα 6: Συναρτήσεις (functions) Τρόπος σύνταξης: function [out1, out2, ] = function_name(in1, in2, ); Μεταβλητές εξόδου (αν δεν υπάρχουν, τότε µπορεί να µην χρησιµοποιηθούν οι αγκύλες) Μεταβλητές εισόδου Κωδική λέξη (απαραίτητη) Το όνοµα της συνάρτησης (πρέπει απαραιτήτως το αρχείο να ονοµαστεί µε τοίδιοακριβώςόνοµα)
Ενότητα 6: Συναρτήσεις (functions) Παράδειγµα: >> [determinanta, z] = solvex(1) determinanta = 3 z = 1.6667 2.0000-3.6667 Μπορούµε να αλλάξουµε τα ονόµατα των µεταβλητών >> who Your variables are: determinanta z Προσέξτε ότι µπορούµενα καλέσουµε µια συνάρτηση µέσα από µια άλλη Αφού τελειώσει η συνάρτηση, τότε οι µεταβλητές της δεν υπάρχουν πια αφού είναι τοπικές. Υπάρχουν µόνο οι µεταβλητές εξόδου.
clc Ctrl-C fprintf Χρήσιµες εντολές Καθαρίζει την οθόνη (δε σβήνει όµως τις µεταβλητές) ιακόπτει την εκτέλεση του προγράµµατος Γράφει δεδοµένα σε αρχείο Επιτρέπει τη γραφή µιας εντολής και στην επόµενη γραµµή keyboard ιακόπτει προσωρινά την εκτέλεση του προγράµµατος στο σηµείο που τοποθετούµε αυτή τη λέξη. Επαναρχίζει αφού πληκτρολογήσουµε return Γιαόλεςτιςπιοπάνωεντολέςπληκτρολογήστε help keyword για περαιτέρω πληροφορίες.