Προγραμματισμός Η/Υ Τμήμα Πολιτικών Έργων Υποδομής Τεχνολογικό Εκπαιδευτικό Ίδρυμα Λάρισας Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πολιτικών Έργων Υποδομής Προγραμματισμός Η/Υ Γραφικά στο Matlab β’ εξάμηνο – εργαστήριο ΚΑΛΟΓΙΑΝΝΗΣ ΓΡΗΓΟΡΙΟΣ Ηλεκτρολόγος Μηχανικός και Μηχανικός Υπολογιστών Α.Π.Θ. Msc Τηλεπικοινωνίες Πολυτεχνική Σχολή Α.Π.Θ. Msc Προηγμένα Συστήματα Υπολογιστών και Επικοινωνιών Α.Π.Θ. Ειδίκευση στη διαχείριση έργων και κινδύνων Ε.Κ.Π.Α.
Περιεχόμενα Διαγράμματα Καμπύλη σε 2 διαστάσεις της μορφής y=f(x) Επιφάνεια σε 3 διαστάσεις της μορφής z=f(x,y) Καμπύλη σε 2 διαστάσεις της μορφής f(x,y)=0 Επιφάνεια σε 3 διαστάσεις της μορφής f(x,y,z)=0 Συναρτήσεις παραμετροποίησης γραφημάτων - άξονες ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών - Τμήμα Πολιτικών Έργων Υποδομής - Προγραμματισμός Η/Υ (β’ εξάμηνο – εργαστήριο)
Καμπύλη σε 2 διαστάσεις της μορφής y=f(x)(1/5) plot plot(x,y) Γραφική παράσταση των τιμών των μονοδιάστατων πινάκων x και y. Π.χ.: x = [0:0.1:2*pi]; y = sin(x); plot(x,y); plot(x,y,'προδιαγραφές_γραμμής') Οι 'προδιαγραφές_γραμμής' (line specifications) είναι σύμβολα που προδιαγράφουν το είδος και το χρώμα της γραμμής και των σημείων που σχεδιάζονται. Είδος γραμμής: – / -- / : / . (συνεχής / διακεκομμένη / με τελίτσες / διακεκομμένη με τελίτσες, αντίστοιχα). Αν λείπει το είδος της γραμμής σχεδιάζονται μόνο σημεία. Είδος σημείου: + / ο / * / . / x / s / d / p / h / ^ / v / > / < (σταυρός / κύκλος / αστερίσκος / τελεία / χί / τετράγωνο / ρόμβος / αστέρι / τρίγωνο, αντίστοιχα). Χρώμα γραμμής και σημείων: r / g / b / c / m / y / k / w (κόκκινο /πράσινο / μπλε / κυανό / ματζέντα / κίτρινο / μαύρο / άσπρο, αντίστοιχα). Π.χ.: plot(x,y,'bo-'); % μπλε κύκλοι που ενώνονται με συνεχή γραμμή plot(x,y,'bo'); % μπλε κύκλοι που δεν ενώνονται (χωρίς γραμμή) ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών - Τμήμα Πολιτικών Έργων Υποδομής - Προγραμματισμός Η/Υ (β’ εξάμηνο – εργαστήριο)
Καμπύλη σε 2 διαστάσεις της μορφής y=f(x)(2/5) plot(x, y, 'property1', value1, 'property2', value2,...) Για περισσότερο έλεγχο στις γραμμές και στα σημεία (π.χ. διαφορετικό χρώμα τηςγραμμής από το σημείο) χρησιμοποιούνται οι ιδιότητες (properties). Οι ιδιότητες με τιςτιμές τους (property_value) είναι: 'Marker': Είδος σημείου ('+', 'ο', '*', '.', 'x', 's', 'd', 'p', 'h', '^', 'v','>', '<', 'none'). 'MarkerEdgeColor': Χρώμα περιγράμματος σημείου. 'MarkerFaceColor': Χρώμα εσωτερικού του σημείου. 'MarkerSize': Μέγεθος σημείου (σε points=1/72 της ίντσας). 'LineStyle': Είδος γραμμής ('-', '--', ':', '-.', 'none') 'Color': Χρώμα γραμμής. 'LineWidth': Πάχος γραμμής (σε points=1/72 της ίντσας). Οι τιμές των χρωμάτων των σημείων και των γραμμών μπορεί να είναι: 'r', 'g', 'b','c', 'm', 'y', 'k', 'none' (εκτός της ιδιότητας 'Color' που δεν δέχεται 'none') ή [R G B], δηλαδή μια τριάδα τιμών με το ποσοστό κάθε χρώματος RGB (red, green,blue). Για παράδειγμα: άσπρο=[1 1 1], μαύρο=[0 0 0], γκρι=[0.5 0.5 0.5],κόκκινο=[1 0 0], πράσινο: [0 1 0], μπλέ=[0 0 1], πορτοκαλί=[1 0.5 0.2] κλπ). Π.χ.: plot(x,y,'Marker','s','MarkerEdgeColor','r','MarkerSize',3,'Color','b'); ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών - Τμήμα Πολιτικών Έργων Υποδομής - Προγραμματισμός Η/Υ (β’ εξάμηνο – εργαστήριο)
Καμπύλη σε 2 διαστάσεις της μορφής y=f(x)(3/5) Παράδειγμα 1 % Στοιχειώδης plot: % Σημείο προς σημείο for x=-10:0.1:10 y = x^2; plot(x,y); hold on end ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών - Τμήμα Πολιτικών Έργων Υποδομής - Προγραμματισμός Η/Υ (β’ εξάμηνο – εργαστήριο)
Καμπύλη σε 2 διαστάσεις της μορφής y=f(x)(4/5) Παράδειγμα 2 % Διακρότημα (άθροισμα ταλαντώσεων με πολύ μικρή διαφορά συχνότητας) f1 = 10; f2 = 11; t = [0:0.001:4*pi]; y = 10*sin(f1*t) + 10*sin(f2*t); plot(t,y,'r'); ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών - Τμήμα Πολιτικών Έργων Υποδομής - Προγραμματισμός Η/Υ (β’ εξάμηνο – εργαστήριο)
Καμπύλη σε 2 διαστάσεις της μορφής y=f(x)(5/5) Παράδειγμα 3 % Σύνθεση ταλαντώσεων ίδιας συχνότητας, με διαφορά φάσης π/6 x = [0:0.001:4*pi]; y1 = 5*sin(x+pi/6); y2 = 7*sin(x); y = y1 + y2; plot(x,y1,'b--'); hold on; plot(x,y2,'k:','LineWidth',2); plot(x,y,'r'); axis([0 4*pi -12 12]); legend('y_1','y_2','y'); grid on; ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών - Τμήμα Πολιτικών Έργων Υποδομής - Προγραμματισμός Η/Υ (β’ εξάμηνο – εργαστήριο)
Επιφάνεια σε 3 διαστάσεις της μορφής z=f(x,y)(1/5) Αρχικά δημιουργείται ένα «πλέγμα» με τα ζεύγη των τιμών x και y, που γίνεται με τη συνάρτηση meshgrid. Στη συνέχεια, βρίσκονται οι τιμές της μεταβλητής z για κάθε ζεύγος (x,y) του «πλέγματος», με τη βοήθεια της εξίσωσης z = f(x,y). Τέλος, γίνεται τρισδιάσταση απεικόνιση των τριάδων (x, y, z) με μία από τις συναρτήσεις surf ή mesh. ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών - Τμήμα Πολιτικών Έργων Υποδομής - Προγραμματισμός Η/Υ (β’ εξάμηνο – εργαστήριο)
Επιφάνεια σε 3 διαστάσεις της μορφής z=f(x,y)(2/5) meshgrid [X,Y] = meshgrid(x,y) Δημιουργία «πλέγματος» με όλα τα ζεύγη των τιμών (x,y): Δημιουργούνται οι δισδιάστατοι πινάκες X και Υ, που τα αντίστοιχα στοιχεία τους περιέχουν όλα τα ζεύγη των τιμών των μονοδιάστατων πινάκων x και y, με σκοπό την τρισδιάστατη απεικόνιση της επιφάνειας z=f(x,y) μέσω της κατάλληλα διαμορφωμένης εξίσωσης Z=f(X,Y). Παράδειγμα x = [1 2 3] y = [40 50] [X,Y] = meshgrid(x,y) Αποτέλεσμα X =1 2 3 1 2 3 Y =40 40 40 50 50 50 ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών - Τμήμα Πολιτικών Έργων Υποδομής - Προγραμματισμός Η/Υ (β’ εξάμηνο – εργαστήριο)
Επιφάνεια σε 3 διαστάσεις της μορφής z=f(x,y)(3/5) surf surf(X,Y,Z) Δημιουργία της επιφάνειας που ορίζεται από τις τριάδες που βρίσκονται στα αντίστοιχα στοιχεία των δισδιάστατων πινάκων X, Υ και Z. Για δημιουργία «διαφάνειας» ώστε να εμφανίζονται τα τμήματα της επιφάνειας που βρίσκονται «πίσω» από κάποια άλλα, χρησιμοποιείται η εντολή aplha. x = [-2:0.2:2]; y = [-2:0.2:2]; [X,Y] = meshgrid(x,y); Z = X .* exp(-X.^2 -Y.^2); surf(X,Y,Z); alpha(0.6); ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών - Τμήμα Πολιτικών Έργων Υποδομής - Προγραμματισμός Η/Υ (β’ εξάμηνο – εργαστήριο)
Επιφάνεια σε 3 διαστάσεις της μορφής z=f(x,y)(4/5) mesh mesh(X,Y,Z) Δημιουργία της επιφάνειας με μορφή «δικτυωτού πλαισίου» (wireframe) που ορίζεται από τις τριάδες που βρίσκονται στα αντίστοιχα στοιχεία των δισδιάστατων πινάκων X, Υ και Z. Για να αποκρύπτεται ή όχι το τμήμα της επιφάνειας που βρίσκονται «πίσω» από κάποια άλλα, χρησιμοποιείται η εντολή hidden. x = [-2:0.2:2]; y = [-2:0.2:2]; [X,Y] = meshgrid(x,y); Z = X .* exp(-X.^2 - Y.^2); mesh(X,Y,Z); hidden off ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών - Τμήμα Πολιτικών Έργων Υποδομής - Προγραμματισμός Η/Υ (β’ εξάμηνο – εργαστήριο)
Επιφάνεια σε 3 διαστάσεις της μορφής z=f(x,y)(5/5) hidden hidden on / off Απόκρυψη / Εμφάνιση του τμήματος της επιφάνειας που βρίσκεται «πίσω» από άλλα τμήματα, σε επιφάνειες που έχουν δημιουργηθεί με τη συνάρτηση mesh. alpha alpha(ποσοστό) Δημιουργία «διαφάνειας», ώστε να εμφανίζονται τα τμήματα της επιφάνειας που βρίσκονται πίσω από κάποια άλλα σε επιφάνειες που έχουν δημιουργηθεί με mesh ή surf. Τοποσοστό μπορεί να είναι από 0 έως 1 (όσο μικρότερο τόσο μεγαλύτερη η διαφάνεια). ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών - Τμήμα Πολιτικών Έργων Υποδομής - Προγραμματισμός Η/Υ (β’ εξάμηνο – εργαστήριο)
Καμπύλη σε 2 διαστάσεις της μορφής f(x,y)=0 (1/2) Σε περίπτωση που δεν είναι δυνατή η αναλυτική λύση της f(x,y) = 0 ως προς y, δεν είναι δυνατή η απεικόνιση της γραφικής παράστασης x-y με τη συνάρτηση plot. Στην περίπτωση αυτή η απεικόνιση γίνεται με έμμεσο τρόπο με ένα κατάλληλο «τρυκ», χρησιμοποιώντας τη συνάρτηση contour που δίνει την τομή μιας επιφάνειας z = f(x,y) με ένα επίπεδο: contour contour(X,Y,Z,[z0 z0]) Γραφική παράσταση των σημείων (x,y) που επαληθεύουν την εξίσωση f(x,y) = z0 (ή αλλιώς, των σημείων της τομής της επιφάνειας z = f(x,y) με ένα σε επίπεδο παράλληλο προς το επίπεδο x-y που τέμνει τον άξονα z σε ένα σημείο z0). Αν επιλεγεί z0 = 0, τότε προκύπτει η γραφική παράσταση της καμπύλης f(x,y) = 0. ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών - Τμήμα Πολιτικών Έργων Υποδομής - Προγραμματισμός Η/Υ (β’ εξάμηνο – εργαστήριο)
Καμπύλη σε 2 διαστάσεις της μορφής f(x,y)=0 (2/2) Παράδειγμα: Έστω ότι θέλουμε να απεικονίσουμε την εξίσωση sin(x)·e-x – 0.1·cos(y) = 0: [X,Y] = meshgrid([0:0.1:10], [0:0.1:10]); % Δημιουργία του «πλέγματος» (x,y) Z = sin(X).*exp(-X)-0.1*cos(Y); %Υπολογισμός των τιμών Ζ για κάθε ζεύγος (x,y) figure(1); contour(X,Y,Z,[0 0],'b'); %Απεικόνιση της προβολής του Ζ στο Ζ0=0 figure(2); surfc(X,Y,Z); alpha(0.5); %Απεικόνιση και της επιφάνειας Z=f(X,Y),% με χρήση της συνάρτησης surfc, που απεικονίζει και τομές της επιφάνειας με το επίπεδο x-y ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών - Τμήμα Πολιτικών Έργων Υποδομής - Προγραμματισμός Η/Υ (β’ εξάμηνο – εργαστήριο)
Επιφάνεια σε 3 διαστάσεις της μορφής f(x,y,z)=0 (1/2) Σε περίπτωση που δεν είναι δυνατή η αναλυτική λύση της f(x,y,z) = 0 ως προς z, δεν είναι δυνατή η απεικόνιση της γραφικής παράστασης x-y-z με τις συναρτήσεις surf ή mesh. Στην περίπτωση αυτή η απεικόνιση γίνεται με ένα «τρυκ» παρόμοιο με αυτό της contour, χρησιμοποιώντας τη συνάρτηση isosurface, η οποία δίνει την τομή μιας 4-διάστατης ιδεατής «υπερεπιφάνειας» v = f(x,y,z) με το χώρο των 3 διαστάσεων: isosurface isosurface(X,Y,Z,V,v0) Γραφική παράσταση των σημείων (x,y,z) που επαληθεύουν την εξίσωση f(x,y,z) = v0. Αν επιλεγεί v0 = 0, τότε προκύπτει η γραφική παράσταση της επιφάνειας f(x,y,z) = 0. Η isosurface είναι η τρισδιάστατη «εκδοχή» της contour. Η εφαρμογή ιδιοτήτων όπως χρώμα επιφάνειας κλπ γίνεται με τη συνάρτηση patch ως εξής: p = patch(isosurface(X,Y,Z,V,v0)) set(p, 'property1', value2, 'property2', value2, ...); ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών - Τμήμα Πολιτικών Έργων Υποδομής - Προγραμματισμός Η/Υ (β’ εξάμηνο – εργαστήριο)
Επιφάνεια σε 3 διαστάσεις της μορφής f(x,y,z)=0 (2/2) Παράδειγμα: Έστω ότι θέλουμε να απεικονίσουμε την εξίσωση (x – y·z + xy)·e-z = 0: [X,Y,Z] = meshgrid([0:0.1:10], [0:0.1:10], [0:0.1:10]); V = (X - Y.*Z.^2 + X.^Y).*exp(-Z); p = patch(isosurface(X,Y,Z,V,0)); set(p,'FaceColor','r','EdgeColor','none'); % πρόσθεση χρώματος επιφάνειας camlight left; lighting phong; % πρόσθεση φωτισμού grid on; alpha(0.8); % πρόσθεση πλέγματος και διαφάνειας ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών - Τμήμα Πολιτικών Έργων Υποδομής - Προγραμματισμός Η/Υ (β’ εξάμηνο – εργαστήριο)
Συναρτήσεις παραμετροποίησης γραφημάτων(1/2) figure Δημιουργία ενός νέου παραθύρου γραφικών (figure). figure(n) Δημιουργία ενός νέου figure με αύξοντα αριθμό n (ή ενεργοποίησή του, αν υπάρχει ήδη). Αλλαγή των προεπιλεγμένων ιδιοτήτων ενός figure: h = figure(n); % figure window handle variable set(h,'Position',[x y w h], ... % x,y=position, w,h=width,height 'NumberTitle','off',... % Figure numbering: 'on'/'off' 'Name',string,... % Figure name (as a string variable) 'Menubar','none',... % Menu: 'none'/'figure' 'ToolBar','auto',... % Toolbar: 'none'/'auto'/'figure' 'Color',[r g b],... % Figure color (numbers between 0 and 1) 'Resize','on',... % Figure resize: 'on'/'off' 'Visible','on',... % Figure visibility: 'on'/'off' 'WindowStyle','normal'); % Window type: 'normal'/'modal'/'docked' ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών - Τμήμα Πολιτικών Έργων Υποδομής - Προγραμματισμός Η/Υ (β’ εξάμηνο – εργαστήριο)
Συναρτήσεις παραμετροποίησης γραφημάτων(2/2) close Κλείσιμο του τρέχοντος figure. close(n) Κλείσιμο του figure με αύξοντα αριθμό n. close all Κλείσιμο όλων των figures. clf Σβήσιμο του γραφήματος από το τρέχον figure (χωρίς κλείσιμο του figure). drawnow Άμεση απεικόνιση ενός γραφήματος σε ένα figure: Για να μην υπάρχουν καθυστερήσεις λόγω απεικόνισης γραφικών, το MATLAB δίνει προτεραιότητα στην εκτέλεση των άλλων εντολών. Έτσι, αν πρέπει να προκληθεί άμεσα απεικόνιση, χρησιμοποιείται η drawnow (με επιβάρυνση στο χρόνο εκτέλεσης του προγράμματος). hold hold on - hold off Απεικόνιση νέου γραφήματος στο ίδιο figure, χωρίς σβήσιμο του προηγούμενου γραφήματος (εφαρμόζεται σε κάθε figure χωριστά). ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών - Τμήμα Πολιτικών Έργων Υποδομής - Προγραμματισμός Η/Υ (β’ εξάμηνο – εργαστήριο)
Άξονες axis axis on/off Ενεργοποίηση ή Απενεργοποίηση των αξόνων. axis ij/xy Αρχή των αξόνων: Πάνω αριστερά (π.χ. για εικόνες) ή Κάτω αριστερά (π.χ. για γραφήματα). axis equal/square/image Ίσες μονάδες αξόνων / Ίσα μήκη αξόνων / Ίσα μήκη αξόνων με «σφιχτό» (tight) περίγραμμα. axis([xmin xmax ymin max]) ή axis([xmin xmax ymin ymax zmin zmax]) Χειροκίνητα όρια αξόνων v = axis Αποθήκευση των ορίων των αξόνων στο διάνυσμα v, το οποίο μπορεί να χρησιμοποιηθείστη συνέχεια για χειροκίνητα όρια αξόνων ως axis([v(1) v(2) v(3) v(4)]) ή ως axis([v(1) v(2) v(3) v(4) v(5) v(6)]). axis manual/auto «Πάγωμα» των ορίων των αξόνων, ώστε σε επόμενη απεικόνιση στο ίδιο figure με hold on να μείνουν τα όρια σταθερά, ή Επαναφορά στην αυτόματη ρύθμιση των αξόνων. ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών - Τμήμα Πολιτικών Έργων Υποδομής - Προγραμματισμός Η/Υ (β’ εξάμηνο – εργαστήριο)
Επισημείωση γραφημάτων title title('κείμενο') Τίτλος του γραφήματος. xlabel / ylabel / zlabel xlabel('κείμενο') ή ylabel('κείμενο') ή zlabel('κείμενο') Ετικέτες αξόνων. legend legend('string1', 'string2', 'string3', ...) Υπόμνημα γραφήματος: Το πλήθος των συμβολοσειρών ('string1/2/3/...') πρέπει να ταυτίζεται με το πλήθος των γραφημάτων που έχουν γίνει στο ίδιο figure (με hold on). text text(x,y,'κείμενο') ή text(x,y,z,'κείμενο') Απεικόνιση 'κειμένου' στις συντεταγμένες x,y (ή και z) του γραφήματος. ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών - Τμήμα Πολιτικών Έργων Υποδομής - Προγραμματισμός Η/Υ (β’ εξάμηνο – εργαστήριο)
Τμήμα Πολιτικών Έργων Υποδομής Τεχνολογικό Εκπαιδευτικό Ίδρυμα Λάρισας Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πολιτικών Έργων Υποδομής Προγραμματισμός Η/Υ Γραφικά στο Matlab β’ εξάμηνο – εργαστήριο ΚΑΛΟΓΙΑΝΝΗΣ ΓΡΗΓΟΡΙΟΣ Ηλεκτρολόγος Μηχανικός και Μηχανικός Υπολογιστών Α.Π.Θ. Msc Τηλεπικοινωνίες Πολυτεχνική Σχολή Α.Π.Θ. Msc Προηγμένα Συστήματα Υπολογιστών και Επικοινωνιών Α.Π.Θ. Ειδίκευση στη διαχείριση έργων και κινδύνων Ε.Κ.Π.Α.