ΠΠΜ 500: Εφαρμογές Μηχανικής με Ανάπτυξη Λογισμικού 4. Εισαγωγή στο Matlab Εαρινό εξάμηνο 2006 Πέτρος Κωμοδρόμος komodromos@ucy.ac.cy http://www. www.eng. eng.ucy.ac.cy/petros 1
Θέματα Εισαγωγή στο Matlab Βασικές λειτουργίες Διανύσματα και μητρώα Γραφικές απεικονίσεις και παραστάσεις γραφικές απεικονίσεις σημείων και ευθύγραμμων τμημάτων γραφικές παραστάσεις συναρτήσεων γραφικές παραστάσεις πολλαπλών συναρτήσεων πολλαπλές γραφικές παραστάσεις πολλαπλά γραφικά σχήματα Αρχεία Μatlab Αρχεία Εντολών - Αρχεία Δεδομένων Προγραμματισμός με το Matlab Αρχεία συναρτήσεων Λογικά τεστ Βρόγχοι 2
Πρόγραμμα αριθμητικών υπολογισμών: : Matlab 3
Πληροφορίες/βοήθεια για το Matlab Εκκίνηση προγράμματος >> help ( >> more on) >> help matlab\general >> help beep >> demos Ιστοσελίδα κατασκευαστών: http://www.mathworks.com >> doc Χρήση σαν απλή υπολογιστική 4
Βασικές λειτουργίες Matlab Τελεστές: >> help ops Προτεραιότητα τελεστών Αριθμητικές εκφράσεις Μεταβλητές: >> help colon ( ) ^ *, / +, - <, <=, ==, =>, > &, (17+3)/2+6/3 17+3/2+6/3 >> who Your variables are: a ans r >> clear >> whos >> pi ans = 3.1416 >> r = 5 r =5 >> pi * r ^ 2 ans = 78.5398 >> a = ans; >> a a = 78.5398 >> a = pi * r ^ 2 a = 78.5398 5
Διανύσματα και μητρώα >> a(2) 2 >> a(1) = 6; >> a 6 2 3 >> c(2,3) 11 >> c(1,1:2) >> c(2,2) = -5; >> c 6 7 6 7 8 9-5 11 6
Διανύσματα και μητρώα (συνεχ.) >> d = a * b 4 5 8 10 12 15 >> e = c * a 44 62 >> a >> c 1 2 3 6 9 7 10 8 11 >> sum(a) 6 >> sum(c,2) 30 7
Διανύσματα και μητρώα (συνεχ.) x = [ 1 2 3 4 1 1 ] u = x * y y = [ 4 2 1 3 1 2 ] v = x.* y >> w = x * y = [ 11 11 19 15 ] >> inv(w) = [ -0.3409 0.2500 0.4318-0.2500 ] >> w * inv(w) = [ 1.0 0.0 0.0 1.0 ] >> det(w) = -44 = [ 4 4 3 12 1 2 ] >> eye(3) = [ 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 ] >> zeros(2,3) = [ 0.0 0.0 0.0 0.0 0.0 0.0 ] 8
Γραφικές απεικονίσεις σημείων >> x1 = 5; >> y1 = 7; >> plot(x1,y1,'*') % Σχεδιασμός σημείων (x1,y1) >> grid on % Προσθήκη κύριων γραμμών στο διάγραμμα >> title('sxediash Shmeioy') % Προσθήκη τίτλου >> xlabel('x') >> ylabel('y') % Προσθήκη τίτλων στους άξονες σχεδίασης 9
Γραφικές απεικονίσεις σημείων >> clf >> x1 = 5; >> y1 = 7; >> plot(x1,y1,'*') >> grid on >> title('sxediash Shmeioy') >> xlabel('x') >> ylabel('y') >> hold on >> axis equal >> myaxes = [ 1 10 4 9 ]; >> axis(myaxes) >> plot(7,6,'o') 10
Γραφικές απεικονίσεις σημείων και ευθειών >> clf ; clear; >> x1 = 5; y1 = 7; >> x2 = 7; y2 = 6; >> x3 = 4.2; y3 = 5.5; >> x = [x1 x2 x3]; >> y = [y1 y2 y3]; >> axis equal >> axis([ 1 10 4 9 ]); >> hold on >> plot(x,y, *') >> x(4)=x1; y(4)=y1; >> plot(x,y) >> grid on >> title( Sxediasmos shmeiwn kai trigwnoy') >> xlabel('x') >> ylabel('y') 11
Γραφικές παραστάσεις >> x = 0:0.25:15; (αρχή:βήμα:τέλος) % Αυτόματος καθορισμός διανύσματος με τιμές γωνιών >> y = sin(x); % Αυτόματος υπολογισμός διανύσματος με τιμές ημιτόνων >> plot(x,y) % Σχεδιασμός σημείων (x,y) >> grid on % Προσθήκη κύριων γραμμών στο διάγραμμα >> title('sxediash Hmitonoy') % Προσθήκη τίτλου >> xlabel('x') >> ylabel('y') % Προσθήκη τίτλων στους άξονες σχεδίασης 12
Παράδειγμα Σχεδιάστε την γραφική παράσταση της εξίσωσης: όπου: 0 <= theta <= 100 >> clf >> clear >> theta = 0:0.5:100 >> z = 15*cos(theta/2) >> z = z + 7.5 * sin(theta/5); >> plot(theta,z) >> grid on >> title('askhsh 2h') >> xlabel('theta') >> ylabel('z') 13
>> figure(1) Πολλαπλές γραφικές παραστάσεις >> clf >> x = 0:0.25:15; >> y = sin(x); >> plot(x,y, r ) >> grid on >> title('sxediash Hmitonoy') >> xlabel('x') >> ylabel( Hmitono,Synhmitono ) >> z = cos(x); >> hold on >> plot(x,z) >> plot(x,z, or ) Εναλλακτικά: plot(x,y,'r',x,z, x,z,'or') 14
figure(2) subplot(3,2,1) plot(x,y,'-') title('x-y Plot ') subplot(3,2,3) plot(x,y,'--') grid on title('x-y Plot with grid') subplot(3,2,4) plot(x,z) grid on title('x-z Plot with grid') subplot(3,2,6) plot(x,z, 'o') title('x-z Plot: o ') Πολλαπλά γραφικά σχήματα subplot(3,2,5) plot(x,z, '*') title('x-z Plot: *') 15
Γραφικές παραστάσεις και απεικονίσεις: Σχεδιάστε τα σημεία (-3,-2), (0,1), (2,2), (4,5) και (7,9) χρησιμοποιώντας το σύμβολα ο και διακεκομμένη γραμμή στο 3 ον τομέα ενός σχήματος αποτελούμενου από 2 γραμμές και 2 στήλες, όπως πιο κάτω: >> x = [ -3 0 2 4 7 ]; >> y = [ -2 1 2 5 9 ] >> subplot(2,2,3) >> plot(x,y,'o') >> grid on >> hold on >> plot(x,y,'--') 16
Αρχεία Matlab: αρχεία Μ (M-files) mymfile.m >> mymfile File Set Path 17
Αρχεία δεδομένων Matlab >> load w.dat >> w >> w(2,1) 4 5 6 7 8 9 7 18
Αρχεία Matlab: load/save >> x = 1:2:11; >> y = [4 7-33 2]; >> save C:\mySaved1 x >> save C:\mySaved2 >> clear all >> load C:\mySaved1 >> x >> y >> load C:\mySaved2 >> y 1 3 5 7 9 11??? Undefined function or variable y'. 4 7-3 2 19
temps.dat Σχεδίαση με βάση αρχεία Matlab >> temperatures temperatures.m 20
Απλές εντολές σε M-file: Αρχεία συναρτήσεων Matlab a = 2.5; e = pi * a ^ 2; mymfile1.m >> mymfile1 >> e e = 19.634954 Συναρτήσεις: myfunction1.m function embado=myfunction1(x) embado = pi * x ^2; return >> e = myfunction1(10) e = 314.1593 >> myfunction1(0.5) ans = 0.7854 >> x=myfunction1(17.5) x = 962.1128 21
Ορισμός συναρτήσεως: Συναρτήσεις function apotelesma = synarthsh1(parametroi) myfun1.m function y=myfun1(x) y = x*x*x; return >> clear all >> z=myfun1(8) >> y??? Undefined function or variable 'y'. >> z z = 512 Σώμα συνάρτησης Ορισμός συνάρτησης myfun2.m function myfun2(x,y) x + y return >> myfun2(8,7) ans = 15 22
Τελεστές: Λογικά τέστς > < > = < = = = ~ = & ~ >> x = 5; >> y = 7; >> x < y >> x >= y - 3 1 >> x == y - 3 1 >> 0 < x & x+2 > y 0 >> 0 < x y > x >> ~ (x < 5) 0 1 1 23
Διακλαδώσεις if έκφραση1 εκτελείται μόνο αν η έκφραση1 είναι αληθής if έκφραση1 end εκτελείται μόνο αν η έκφραση1 είναι αληθής if έκφραση1 else end εκτελείται μόνο αν η έκφραση1 είναι αληθής εκτελείται μόνο αν η έκφραση1 δεν είναι αληθής elseif έκφραση2 else end εκτελείται μόνο αν η έκφραση1 δεν είναι αληθής και η έκφραση2 είναι αληθής εκτελείται αν καμία έκφραση δεν είναι αληθής 24
rand1.m Παράδειγμα διακλαδώσεων 25
Βρόγχοι for μεταβλητή = αρχική τιμή : (προαιρετικό( προαιρετικό) βήμα : τελική τιμή end εντολές for i=1:5 end disp(i^2) 1 4 9 16 25 for i=5: 5:-1:1 if i == 3 continue end disp(i^2) end 25 16 4 1 26
Βρόγχοι (συνεχ.) while λογική έκφραση end εντολές (μέσα στις οποίες πρέπει κάτι σχετικό με την λογική έκφραση να αλλάζει, ήναυπάρχεικάποιο break, ώστε να αποφεύγεται βρόγχος επ άπειρον) i = 0; while i<10 i = i + 2 end disp(i) i = 2 i = 4 i = 6 i = 8 i = 10 10 i = 0; while 1 if i>=10 end break i = i + 2 end disp(i) continue: συνέχεια με επόμενη εκτέλεση βρόγχου for ή while break: τερματισμός εκτέλεσης βρόγχων for και while 27
Σύγκριση Matlab και άλλων γλωσσών προγραμματισμού Matlab σε σύγκριση με: Fortran C/C++ Java Visual Basic/VB.net C# 28
Είσοδος δεδομένων/έξοδος αποτελεσμάτων io1.m a = input('aktina kykloy: : '); >> io1 p = 2 * pi * a; e = pi * a ^ 2; fprintf(' Dokimh: : %s ', 'Matlab') fprintf('\n Aktina = %f ', a) fprintf('\n Perimetros = %.3f ', p) fprintf(' \n Epifaneia = %f ', e) fprintf(' p = %f \t t e = %f ', p, e) fprintf(' %s = %f ', 'a', a) fprintf(' %s = %f ', 97, a) Aktina kykloy: 5 Dokimh: Matlab Aktina = 5.0000 Perimetros = 31.416 Epifaneia = 78.539816 p= 31.415927 e = 78.539816 a = 5 a = 5 29
Άλλες χρήσιμες εντολές >> format long ; pi ans = 3.14159265358979 >> format short ; pi ans = 3.1416 >> disp(pi) >> t= 'Testing' ; disp(t) 3.1416 Testing >> s='2*3-5+3/2 >> eval(s) ans =2.5000 >> realmax ans =1.7977e+308 >> realmin ans =2.2251e-308 >> help InF >> help NaN >> print >> help print 30