Εργαλεία Χρήστη

Εργαλεία ιστότοπου


octave

Σύγκριση εκδόσεων

Εδώ βλέπετε τις διαφορές μεταξύ της επιλεγμένης έκδοσης και της τρέχουσας έκδοσης της σελίδας.

Σύνδεσμος σε αυτή την προβολή διαφορών.

Προηγούμενος έλεγχος και από τις δύο πλευρές Προηγούμενη αναθεώρηση
Επόμενη αναθεώρηση
Προηγούμενη αναθεώρηση
octave [2014/01/29 09:34]
chiossif
octave [2021/01/30 13:59] (τρέχουσα)
62.210.151.70 παλαιότερη έκδοση επαναφέρθηκε (2014/01/29 10:01)
Γραμμή 262: Γραμμή 262:
     c =  4     c =  4
 Προσέξτε τον χαρακτήρα > στο παραπάνω παράδειγμα. Τον συναντάμε όταν μία εντολή καταλαμβάνει περισσότερες από μία γραμμές και μέχρι την ολοκλήρωσή της. Προσέξτε τον χαρακτήρα > στο παραπάνω παράδειγμα. Τον συναντάμε όταν μία εντολή καταλαμβάνει περισσότερες από μία γραμμές και μέχρι την ολοκλήρωσή της.
 +
  
 =====Εντολή ελέγχου switch===== =====Εντολή ελέγχου switch=====
 Σε περίπτωση που σε ένα πρόγραμμα χρειάζονται πολλές if/elseif εντολές προκειμένου να επιλεγεί το αποτέλεσμα μέσα από μια ποικιλία διαφορετικών εντολών, είναι καλύτερα να χρησιμοποιηθεί η εντολή switch. Η εντολή ακολουθεί το παρακάτω πρότυπο: Σε περίπτωση που σε ένα πρόγραμμα χρειάζονται πολλές if/elseif εντολές προκειμένου να επιλεγεί το αποτέλεσμα μέσα από μια ποικιλία διαφορετικών εντολών, είναι καλύτερα να χρησιμοποιηθεί η εντολή switch. Η εντολή ακολουθεί το παρακάτω πρότυπο:
-switch x +  switch x 
-case x1, +    case x1, 
-     ..... +       .... 
-case x2, +    case x2, 
-    .... +       .... 
-otherwise, +    otherwise, 
-   ..... +       .... 
-end+  end
 Στην εντολή switch, η τιμή του x συγκρίνεται με κάθε μια από την λίστα με τα case, και αν βρεί μια ίση με αυτή τότε εκτελεί την αντίστοιχη ομάδα εντολών. Σε περίπτωση που κανένα case δεν είναι αληθές, εκτελείται η ομάδα εντολών που βρίσκεται μέσα στο otherwise, αν αυτό υπάρχει. Ακολουθεί ένα παράδειγμα εφαρμογής της εντολής: Στην εντολή switch, η τιμή του x συγκρίνεται με κάθε μια από την λίστα με τα case, και αν βρεί μια ίση με αυτή τότε εκτελεί την αντίστοιχη ομάδα εντολών. Σε περίπτωση που κανένα case δεν είναι αληθές, εκτελείται η ομάδα εντολών που βρίσκεται μέσα στο otherwise, αν αυτό υπάρχει. Ακολουθεί ένα παράδειγμα εφαρμογής της εντολής:
     octave:10> a=1;     octave:10> a=1;
Γραμμή 288: Γραμμή 289:
  
 ======Εντολές επανάληψης====== ======Εντολές επανάληψης======
 +
 +
 =====Εντολή επανάληψης for===== =====Εντολή επανάληψης for=====
-Στον προγραμματισμό είναι πολύ συνήθης η χρήση της εντολής επανάληψης for, η οποία επαναλαμβάνει μια ομάδα εντολών για προκαθορισμένες τιμές και με ένα προκαθορισμένο βήμα. Στην γλώσσα octave η χρήση του πρέπει να αποφεύγεται. Προσπαθήσετε να χρησιμοποιήσετε τις πράξεις με διανύματα, εύρη τιμών και συναρτήσεις αντί για αυτή την εντολή διότι είναι περίπου 40 φορές πιο αργή. Παρόλα αυτά υπάρχουν σπάνιες περιπτώσεις που η χρήση του for δεν μπορεί να αποφευχθεί. Η σύνταξη του είναι η ακόλουθη: +Στον προγραμματισμό είναι πολύ συνήθης η χρήση της εντολής επανάληψης for, η οποία επαναλαμβάνει μια ομάδα εντολών για προκαθορισμένες τιμές και με ένα προκαθορισμένο βήμα. Στην γλώσσα octave η χρήση του πρέπει να αποφεύγεται. Προσπαθήσετε να χρησιμοποιήσετε τις πράξεις με διανύματα, εύρη τιμών και συναρτήσεις αντί για αυτή την εντολή διότι είναι περίπου σαράντα φορές πιο αργή. Παρόλα αυτά υπάρχουν σπάνιες περιπτώσεις που η χρήση του for δεν μπορεί να αποφευχθεί. Η σύνταξη του είναι η ακόλουθη: 
-for variable = vector +    for variable = vector 
-    statements +        statements 
-end+    end
 όπου το vector (διάνυσμα) περιλαμβάνει και τον αριθμό του βήματος. Ακολουθεί ένα παράδειγμα: όπου το vector (διάνυσμα) περιλαμβάνει και τον αριθμό του βήματος. Ακολουθεί ένα παράδειγμα:
-octave:12>  for n=1:5 +    octave:12>  for n=1:5 
-> nf(n) = factorial(n); +    > nf(n) = factorial(n); 
-> end +    > end 
-octave:13> nf +    octave:13> nf 
-nf = +    nf = 
-     1            24   120+         1            24   120
 όπου σχηματίζεται ένας νέος πίνακας με τα παραγοντικά των αριθμών 1 έως 5. Αυτό το παράδειγμα έγινε μόνο για την επίδειξη της εντολής και είναι ατυχές όπως το 99% των περιπτώσεων χρήσης της for, αφού μπορούμε να έχουμε το ίδιο αποτέλεσμα έτσι: όπου σχηματίζεται ένας νέος πίνακας με τα παραγοντικά των αριθμών 1 έως 5. Αυτό το παράδειγμα έγινε μόνο για την επίδειξη της εντολής και είναι ατυχές όπως το 99% των περιπτώσεων χρήσης της for, αφού μπορούμε να έχουμε το ίδιο αποτέλεσμα έτσι:
-octave:14> n=1:5 +    octave:14> n=1:5 
-n = +    n = 
-   1         5 +       1         5 
-octave:15> nf=factorial(n) +    octave:15> nf=factorial(n) 
-nf = +    nf = 
-     1            24   120+         1            24   120
 ΠΡΟΣΟΧΗ: Πριν χρησιμοποιήσετε μία εντολή for βεβαιωθείτε ότι δεν μπορείτε να κάνετε την δουλειά σας με πιο εύκολο και σύντομο τρόπο. Στην αρχή είναι λίγο δύσκολο, ειδικά για όσους είναι προγραμματιστές σε παλαιότερες γλώσσες προγραμματισμού όπως Fortran, Pascal, Basic ή C/C++ αλλά ας μην ξεχνάμε πως δεν έχουμε λόγο να γράφουμε κώδικα στην octave αν δεν χρησιμοποιούμε την δύναμή της. ΠΡΟΣΟΧΗ: Πριν χρησιμοποιήσετε μία εντολή for βεβαιωθείτε ότι δεν μπορείτε να κάνετε την δουλειά σας με πιο εύκολο και σύντομο τρόπο. Στην αρχή είναι λίγο δύσκολο, ειδικά για όσους είναι προγραμματιστές σε παλαιότερες γλώσσες προγραμματισμού όπως Fortran, Pascal, Basic ή C/C++ αλλά ας μην ξεχνάμε πως δεν έχουμε λόγο να γράφουμε κώδικα στην octave αν δεν χρησιμοποιούμε την δύναμή της.
  
Γραμμή 331: Γραμμή 334:
     ans =  2.22044604925031e-16     ans =  2.22044604925031e-16
 Μόλις ένα bit μεγαλύτερος από το x στο παραπάνω παράδειγμα ;-) Μόλις ένα bit μεγαλύτερος από το x στο παραπάνω παράδειγμα ;-)
 +
 +
 +
 +
  
  
 ======Συναρτήσεις====== ======Συναρτήσεις======
-Ε, αν δεν έχει η octave συναρτήσεις τότε ποιος έχει; +Ε, αν δεν έχει η octave συναρτήσεις τότε ποιος έχει; Κι είναι τόσο απλές που με ένα παράδειγμα θα γίνουν πλήρως κατανοητές. 
-Κι είναι τόσο απλές που με 2-3 παραδείγματα θα γίνουν πλήρως κατανοητές. +Ας ξεκινήσουμε: έχουμε την συνάρτηση fifi(x) = 2*x για x θετικό και 3*x για κάθε άλλη περίπτωση. Να πως γράφεται:
-Ας ξεκινήσουμε: +
-1ο παράδειγμα +
-Έχουμε την συνάρτηση fifi(x) = 2*x για x θετικό και 3*x για κάθε άλλη περίπτωση. Να πως γράφεται:+
     octave:1> function y=fifi(x)     octave:1> function y=fifi(x)
     > if x>0     > if x>0
Γραμμή 352: Γραμμή 356:
     y = -6     y = -6
     ans = -6     ans = -6
-Ας τα δούμε αναλυτικάΟι εντολές function και endfunction ορίζουν την αρχή και το τέλος της συνάρτησης. Η συνάρτηση έχει όνομα fifi ενώ x και y είναι οι τοπικές της μεταβλητές για να δείξουμε τι θέλουμε να κάνουμε. Στο παράδειγμά μας με y είναι η μεταβλητή που επιστρέφεται η τιμή αποτέλεσμα (αν υπάρχει) ενώ με x δίνεται η τιμή ορισμού (μπορεί να είναι περισσότερες από μία). Το σώμα της συνάρτησης ακολουθεί με χρήση των παραπάνω μεταβλητών και όποιων άλλων θέλουμε και όσο πολύπλοκο θέλουμε. Η δύναμη της octave φαίνεται αν συνεχίσουμε το παράδειγμα:+Ας τα δούμε αναλυτικά
 + 
 +Οι εντολές function και endfunction ορίζουν την αρχή και το τέλος της συνάρτησης. Η συνάρτηση έχει όνομα fifi ενώ x και y είναι οι τοπικές της μεταβλητές για να δείξουμε τι θέλουμε να κάνουμε. Στο παράδειγμά μας με y είναι η μεταβλητή που επιστρέφεται η τιμή αποτέλεσμα (αν υπάρχει) ενώ με x  δίνεται η τιμή ορισμού (μπορεί να είναι περισσότερες από μία). Το σώμα της συνάρτησης ακολουθεί με χρήση των παραπάνω μεταβλητών και όποιων άλλων θέλουμε και όσο πολύπλοκο θέλουμε. 
 + 
 +Η δύναμη της octave φαίνεται αν συνεχίσουμε το παράδειγμα:
     octave:4> a=[1 -2; 3 -4];     octave:4> a=[1 -2; 3 -4];
     octave:5> b=fifi(a);     octave:5> b=fifi(a);
Γραμμή 364: Γραμμή 372:
         3   -6         3   -6
         9  -12         9  -12
-Τι να πω; Τα πάντα όλα κάνει η octave. Και ας μην ξεχνάμε το τεράστιο πλήθος συναρτήσεων (μια ιδέα πήραμε [[http://octave.sourceforge.net/functions_by_alpha.php|νωρίτερα]]) οι οποίες είναι ήδη γραμμές ;-)+Τι να πω; Τα πάντα όλα κάνει η octave. Και ας μην ξεχνάμε το τεράστιο πλήθος συναρτήσεων (μια ιδέα πήραμε [[http://octave.sourceforge.net/functions_by_alpha.php|νωρίτερα]]) οι οποίες είναι ήδη γραμμένες ;-) 
 Καλά όλα αυτά αλλά θα πρέπει κάθε φορά να φτιάχνω την συνάρτηση και να την γράφω; Δεν μπορεί... κάπως θα γίνεται... Καλά όλα αυτά αλλά θα πρέπει κάθε φορά να φτιάχνω την συνάρτηση και να την γράφω; Δεν μπορεί... κάπως θα γίνεται...
-1o βήμα: +Φτιάχνουμε ένα αρχείο με το όνομα fifi.mπεριεχόμενα την συνάρτησή μας όπως πριν:
-Φτιάχνουμε ένα αρχείο με το όνομα fifi.m και περιεχόμενα την συνάρτησή μας όπως πριν:+
     function y=fifi(x)     function y=fifi(x)
         if x>0         if x>0
Γραμμή 376: Γραμμή 384:
     endfunction     endfunction
 και το αποθηκεύουμε στον φάκελο εργασίας μας. (Σημείωση: η στοίχιση είναι προαιρετική και εδώ έγινε γιατί έτσι με έμαθαν να κάνω οι δάσκαλοί μου καλή τους ώρα ;-) ) και το αποθηκεύουμε στον φάκελο εργασίας μας. (Σημείωση: η στοίχιση είναι προαιρετική και εδώ έγινε γιατί έτσι με έμαθαν να κάνω οι δάσκαλοί μου καλή τους ώρα ;-) )
 +
 Τώρα ανοίγουμε τo περιβάλλον και: Τώρα ανοίγουμε τo περιβάλλον και:
     octave:1> a=[1 -2; 3 -4];     octave:1> a=[1 -2; 3 -4];
Γραμμή 385: Γραμμή 394:
 Καλό, έτσι;  Καλό, έτσι; 
 Προσοχή λοιπόν στο όνομα της συνάρτησης και του αρχείου. Και μετά κάνουμε ότι θέλουμε :-) Προσοχή λοιπόν στο όνομα της συνάρτησης και του αρχείου. Και μετά κάνουμε ότι θέλουμε :-)
 +
  
 ======Ομαδική εκτέλεση εντολών====== ======Ομαδική εκτέλεση εντολών======
-Αυτό το είδαμε στις συναρτήσειςΕδώ απλά θα δούμε ότι μπορούμε να αποθηκεύουμε πίνακες (γενικά κάθε μεταβλητή) σε αρχεία τύπου mat και φυσικά να εκτελούμε αρχεία συναρτήσεων / ομαδικών εντολών τύπου m.+Ομαδική εκτέλεση εντολών είδαμε με μορφή συνάρτησης σε αρχείο m. Εδώ επιπλέον θα δούμε ότι μπορούμε να αποθηκεύουμε πίνακες (γενικά κάθε μεταβλητή) σε αρχεία τύπου mat και φυσικά να εκτελούμε αρχεία συναρτήσεων / ομαδικών εντολών τύπου m.
 Εδώ: Εδώ:
     octave:1> A=[ 1 1; 2 1;3 1; 4 1];     octave:1> A=[ 1 1; 2 1;3 1; 4 1];
Γραμμή 393: Γραμμή 403:
     octave:3> save pinAB.mat A B     octave:3> save pinAB.mat A B
 αποθηκεύσαμε στο αρχείο  pinAB.mat τους πίνακες A και B. αποθηκεύσαμε στο αρχείο  pinAB.mat τους πίνακες A και B.
 +
 Το αρχείο αυτό έχει περιεχόμενα: Το αρχείο αυτό έχει περιεχόμενα:
     [chiossif@home-6400 ~]$ cat pinAB.mat      [chiossif@home-6400 ~]$ cat pinAB.mat 
Γραμμή 414: Γραμμή 425:
      7      7
      10      10
 +(Η εντολή cat είναι εντολή στο τερματικό bash του [[https://www.archlinux.org/|Archlinux]] το οποίο χρησιμοποιώ και για αυτό το wiki :-) Προφανώς είμαι εκτός octave)
 +
 και μετά μπορούμε με την load: και μετά μπορούμε με την load:
     octave:1> load pinAB.mat      octave:1> load pinAB.mat 
Γραμμή 437: Γραμμή 450:
     s =  1.4491     s =  1.4491
 για να γίνουν όλα :-) για να γίνουν όλα :-)
 +
 +
 +
 ======Βιβλιοθήκη επεξεργασίας εικόνας====== ======Βιβλιοθήκη επεξεργασίας εικόνας======
-Ναι... υπάρχει και είναι [http://octave.sourceforge.net/image/ | εδώ]. Εγκαταστήστε την και ξεκινάμε. +Ναι... υπάρχει και είναι [[http://octave.sourceforge.net/image/ | εδώ]]. Εγκαταστήστε την και ξεκινάμε. 
-Κατ'αρχήν και πάντα παραδοσιακά κατεβάζουμε στον υπολογιστή μας την [https://en.wikipedia.org/wiki/File:Lenna.png | Λένα].+Κατ'αρχήν και πάντα παραδοσιακά κατεβάζουμε στον υπολογιστή μας την [[https://upload.wikimedia.org/wikipedia/en/2/24/Lenna.png| Λέννα]].  
 + 
 +Με την ευκαιρία [[http://www.lenna.org/full/len_full.html|εδώ]] ολόκληρη η Λέννα για περισσότερες δοκιμές και [[http://www.cs.cmu.edu/~chuck/lennapg/|εδώ]] η ιστορία της ;-) 
 + 
 +Ξεκινάμε... 
 +(to be written - curently starring at [[http://www.lenna.org/full/len_full.html| Lenna's portait]] ;-) )
  
 ======Άλλες βιβλιοθήκες και πρόσθετο υλικό====== ======Άλλες βιβλιοθήκες και πρόσθετο υλικό======
octave.1390988083.txt.gz · Τελευταία τροποποίηση: 2020/11/21 09:52 (εξωτερική τροποποίηση)