Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΜΗΧΑΝΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΒΙΟΜΗΧΑΝΙΑΣ Διάλεξη 11: Χρήση δομών, εξωτερικών αρχείων και γραφικών στο Matlab Εαρινό εξάμηνο 2008.

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΜΗΧΑΝΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΒΙΟΜΗΧΑΝΙΑΣ Διάλεξη 11: Χρήση δομών, εξωτερικών αρχείων και γραφικών στο Matlab Εαρινό εξάμηνο 2008."— Μεταγράφημα παρουσίασης:

1 ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΜΗΧΑΝΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΒΙΟΜΗΧΑΝΙΑΣ Διάλεξη 11: Χρήση δομών, εξωτερικών αρχείων και γραφικών στο Matlab Εαρινό εξάμηνο 2008 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ι. Σαρρής, sarris@uth.gr, τηλ. 2421074090sarris@uth.gr

2 Δομές ελέγχου Εξωτερικά αρχεία Γραφικά Μόνο με την πρακτική εξάσκηση αυτά που θα δείτε στην τάξη θα σας κάνουν άνετους με το Matlab!!! Οργάνωση της παρουσίασης

3 Δομές ελέγχου %HI_LO plays the game with this name. % When prompted enter your guess, the computer % will tell you if your guess is above or below % the random number calculated by the computer. x = fix(100*rand); n = 7; test = 1; for k = 1:7 numb = int2str(n); disp([ ' You have right to ' numb ' guesses ' ]) disp([ ' A guess is a number between 0 and 100 ']) guess = input(' Enter your guess ') if guess < x disp(' Low ') elseif guess > x disp(' High ') else disp(' You won ') test = 0; break end n = n - 1; end if test > 0 disp(' You lost ') end

4 Δομές ελέγχου σε συναρτήσεις %PIPE plots the diagram of smooth-pipe friction coefficients. % This M-file calls function SPIPE. See Example 7.4, % Flow through smooth pipes. reynolds = logspace(2.5, 6.3, 100); coeff = zeros(1,100); for k = 1: 1: 100 re = reynolds(k); co = spipe(re); coeff(k) = co; End loglog(reynolds, coeff) grid title( 'Frictional coefficient of smooth pipes ') xlabel( 'Reynolds number, Re ') ylabel( 'Friction coefficient, \lambda ')

5 function lambda = spipe(Re) %SPIPE smooth-pipe frictional coefficient. % spipe(Re) is the smooth-pipe frictional % coefficient for Reynolds numbers 0 < Re <= 10^6. if Re <= 2320 lambda = 64/Re; elseif Re <= 10^5 lambda = 0.3164/Re^0.25; else if Re < 3*10^6 x0 = -0.8 + 2*log10(Re); x = -0.8 + 2*log10(Re/x0); while (abs(x - x0) > 0.000001); x0 = x; x = -0.8 + 2*log10(Re/x0); end lambda = 1/(x*x); else disp( 'Reynolds number > 10^6 ') disp( 'Calculation aborted ') end Δομές ελέγχου σε συναρτήσεις (συνέχεια)

6 Παράδειγμα συνάρτησης function y = ustep(t, t0) %USTEP(T, t0) unit step at t0 % See Section 7.2, Conditional branching. [ m, n ] = size(t); y = zeros(m, n); % initialize y array of points for k = 1: length(t) if t(k) < t0 y(k) = 0; else y(k) = 1; end

7 Άπειρες επαναλήψεις %EXA07_02 Example 7.2, Infinite WHILE loop. See Section 7.2. x = 1; while x ~= 0 x = x - 0.2 end

8 function y = fact(x) %FACT factorial by a recursive procedure. % FACT(X) is the factorial of X by a recursive procedure, % where X is an integer scalar. See Section 7.6, Recursion. if sum(size(x)) ~= 2 error( 'Argument is not a scalar, calculation aborted ') elseif x ~= fix(x) error( 'Argument is not an integer, calculation aborted ') else if x == 0 y = 1; else y = x*fact(x-1); end Δομές ελέγχου

9 Εξωτερικά αρχεία Ημερολόγιο υπολογισμών (log-file) Δεδομένα από αρχεία m Επιστροφή στο λειτουργικό σύστημα Εγγραφή δεδομένων σε εξωτερικά αρχεία Ανταλλαγή δεδομένων με το Excel Επιπρόσθετες εντολές εισόδου/εξόσου

10 Εξωτερικά αρχεία (συνέχεια) Ημερολόγιο υπολογισμών (log-book) – Εντολή diary Σύνταξη: – diary [filename] [on] [off] ή diary('filename') Αποθήκευση όσων εμφανίζονται στο παράθυρο εντολών (εκτός γραφημάτων) Χρήσιμη πρώτη εντολή: date Χρήση σχολίων (%) για επεξηγήσεις

11 Δεδομένα σε αρχεία τύπου-m – Διαδικασία συγγραφής Κλήση του MATLAB Editor Αναγραφή των δεδομένων ως μεταβλητές Αποθήκευση ως αρχείο τύπου m Φόρτωμα των μεταβλητών με κλήση του αρχείου m που δημιουργήθηκε – Μετατροπή από απλό text Data acquisition σε μορφή text Εξωτερικά αρχεία (συνέχεια)

12 Δεδομένα σε αρχεία τύπου-m – Ειδική περίπτωση: πίνακες αναφοράς (lookup tables) Εναλλακτικά: αποθήκευση σε αρχεία τύπου-mat – Εντολή save Εξωτερικά αρχεία (συνέχεια)

13 Εκτέλεση εντολών του λειτουργικού συστήματος (OS shell) – Χρήση του συμβόλου ! !dir !explorer !copy diary.txt mydiary.txt – Με μορφή συναρτήσεων dos ('εντολή'), unix ('εντολή') Εκτέλεση εντολών του λειτουργικού

14 Εγγραφή δεδομένων σε αρχείο – Παράδειγμα: δημιουργία ακολουθίας τυχαίων αριθμών και αποθήκευση σε αρχείο τύπου text x=1:100; y=randn(1,100); fid = fopen( 'file.dat', 'w+'); for i=1:100, fprintf(fid, 't=%3d\tv=%2.5f\n', x(i), y(i)); end; fclose( fid); fscanf(fid, format) fgets, fgetl, textread } ανάγνωση δεδομένων

15 Εγγραφή δεδομένων σε αρχείο (συνέχεια) – Παράδειγμα: δημιουργία ακολουθίας τυχαίων αριθμών και αποθήκευση σε αρχείο τύπου binary y=randn(1,100); fid = fopen( 'file.bin', 'wb+'); fwrite(fid, y, 'float'); fclose( fid); % fread( fid, size, precision) ανάγνωση δεδομένων binary yy=fread( fid, inf, 'fload');

16 Εξαγωγή δεδομένων στο Excel – Τρόπος 1: με χρήση της εντολής diary x=rand(10); diary excel.out x diary off – Τρόπος 2: με χρήση της εντολής fprintf x=rand(10); fid=fopen('excel.out','wt+'); for … fprintf … fclose(fid); – Τρόπος 3: με χρήση της εντολής xlswrite [ success, message] = xlswrite( file, array,sheet, range); x=rand(10); [success, message] = xlswrite( 'test.xls', x); Ανοιγμα του Excel File/Open/All files/…wizard Ανοιγμα του Excel drag-drop excel.out

17 – Τρόπος 1: Εντολή xlsread n = xlsread( 'spreadsheet' ); n = xlsread( 'spreadsheet', 'sheet2' ); n = xlsread( 'spreadsheet', 'sheet2', 'a2:j5' ); [n, t, r] = xlsread(…) n: numeric, t: text, r: raw n, t είναι υποσύνολα του r – Τρόπος 2: Χρήση του wizard στο menu File|Import Data… Εισαγωγή δεδομένων από το Excel

18 Συναρτήσεις αρχείων – Άνοιγμα και κλείσιμο αρχείων fopen - άνοιγμα fclose - κλείσιμο – Προσδιορισμός θέσης εντός του αρχείου feof - έλεγχος για τέλος αρχείου ferror - κατάσταση σφάλματος αρχείου frewind - επαναφορά στην αρχή fseek - τοποθέτηση σε συγκεκριμένη θέση ftell - αναγνώριση τρέχουσας θέσης – Είσοδος-έξοδος μορφοποιημένων αρχείων fgetl - ανάγνωση μιας γραμμής χωρίς χαρακτήρα αλλαγής γραμμής fgets - ανάγνωση μιας γραμμής με χαρακτήρα αλλαγής γραμμής fprintf - εγγραφή μορφοποιημένων δεδομένων fscanf - ανάγνωση μορφοποιημένων δεδομένων textscan - ανάγνση μορφοποιημένων δεδομένων από αρχείο text textread - ανάγνση μορφοποιημένων δεδομένων από αρχείο text – Είσοδος-έξοδος δυαδικών αρχείων (binary files) fread - ανάγνωση δυαδικών δεδομένων fwrite - εγγραφή δυαδικών δεδομένων

19 Άσκηση – Όταν η ατμόσφαιρα είναι σε απόλυτη ηρεμία, η σχέση ανάμεσα στο ύψος από τη θάλασσα (m) και την ατμ. Πίεση (mbar) δίνεται στον παράπλευρο πίνακα. – Γράψτε τον πίνακα σε αρχείο m, mat, xls. – Κάνοντας χρήση των αρχείων αυτών βρείτε την πίεση σε ύψος 550 m και το ύψος σε πίεση 916 mbar. Ύψος Μέση πίεση (m) (mbar) 0 1013 100 1001 200 989 300 977 400 965 500 959 600 942 700 932 800 921 900 902 1000 894

20 Γραφικά στο Matlab 2D Plots 2½D Plots 3D Plots Really 3D Plots Movies Images

21 Δισδιάστατα Γραφικά x = linspace(0,2*pi,30); y = sin(x); plot(x,y); title(‘Sine Plot’); xlabel(‘x-axis’); ylabel(‘y-axis’); - Προσθέτουμε κείμενο - διανύσματα - γραμμές Αποθηκεύουμε, εκτυπώνουμε, κλπ. Μεγεθύνουμε και περιστρέφουμε (αποθηκεύουμε ως αρχείο.fig για μελλοντικές αλλαγές)

22 Δισδιάστατα Γραφικά Διπλό κλικ για να θέσουμε διάφορα χαρακτηριστικά του γραφήματος

23 Δισδιάστατα Γραφικά z = cos(x); plot(x,y,’b:p’,x,z,’r-’); Legend(‘sin’,’cos’); title(‘sin(sqrt(x_\delta^2 +y_\xi^2))/sqrt(x_\omega^2 +y_\eta^2));

24 Χαρακτηριστικά Γραμμών

25 Πολλαπλά Γραφικά

26 subplot(2,3,1); plot(x,y,’b:p’,x,z,’r-’); axis normal; subplot(2,3,2); plot… axis ij … axis square axis equal axis tight axis off

27 Πολλαπλά Γραφικά

28 Δισδιάστατα Γραφικά y = linspace(0,2*pi,100); x = sin(2*x); polar(x,y);

29 2+1/2 D Γραφικά [X,Y,Z] = peaks(30); pcolor(Z);

30 2+1/2 D Γραφικά

31 contour(Z) contour(Z,50) contour(Z,50,’k’) [c, h] = contour(Z); clabel(c, h); 2+1/2 D Γραφικά

32 Διανύσματα load wind; x = x(:,:,4); y = y(:,:,4); … cav = curl(x,y,u,v); pcolor(x,y,cav); shading interp; hold on; quiver(x,y,u,v);

33 Πλέγματα mesh(X,Y,Z);

34 3D Γραφικά surf(X,Y,Z); shading interp;

35 3D Γραφικά t = 0:pi/50:10*pi; plot3(sin(t),cos(t),t); hold on; plot3(sin(t),cos(t),t+1); hold off;

36 3D Γραφικά [x,y,z] = sphere(16); X = [x(:)*5;x(:)*.75;x(:)]; Y = [y(:)*5;y(:)*.75;y(:)]; Z = [z(:)*5;z(:)*.75;z(:)]; plot3(X,Y,Z); view(-10,60)

37 3D Γραφικά scatter3(X(:),Y(:),Z(:),’.’);

38 Εικόνες


Κατέβασμα ppt "ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΜΗΧΑΝΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΒΙΟΜΗΧΑΝΙΑΣ Διάλεξη 11: Χρήση δομών, εξωτερικών αρχείων και γραφικών στο Matlab Εαρινό εξάμηνο 2008."

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google