Octave

...το μέρος για να ξεκινήσετε!

Συντονιστής: adem1

Κανόνες Δ. Συζήτησης
Παρακαλώ να επιλέξετε, με προσοχή, την άδεια που θέλετε να έχουν οι οδηγοί που συγγράφετε.
Πληροφορίες για τις άδειες μπορείτε να βρείτε εδώ.
Άμα επιθυμείτε κάποια άλλη άδεια επικοινωνήστε με κάποιο Διαχειριστή είτε Συντονιστή.

Σημαντικό είναι να χρησιμοποιήσετε την υπηρεσία http://imagebin.ubuntu-gr.org για τις εικόνες.

Octave

Δημοσίευσηαπό Dimitris » 27 Μαρ 2009, 01:05

Το octave είναι ένα πρόγραμμα για υπολογισμούς και μία ελεύθερη εναλλακτική για το matlab. Εγκαθίσταται όπως πάντα από τη γραμμή εντολών με:
Κώδικας: Επιλογή όλων
sudo apt-get install octave

Aπό τη γραμμή εντολών πληκτρολογούμε octave, εμφανίζεται η άδεια χρήσης και αναμένει να πληκτρολογήσουμε τις εντολές:
Κώδικας: Επιλογή όλων
octave:1>

Εικόνα
Αρχικά, ας δημιουργήσουμε ένα διάνυσμα με 9 στοιχεία και το όνομα a:
Κώδικας: Επιλογή όλων
a = [1 2 3 4 5 9 8 7 6]
a =
      1  2  3  4  5  9  8  7  6 

Πάντα μετά από κάθε εντολή το octave επιστρέφει το αποτέλεσμα της εντολής εκτός κι αν μετά την εντολή ακολουθεί ;
Μπορούμε τώρα να προσθέσουμε σε κάθε στοιχείο του a τον αριθμό 2 και το αποτέλεσμα να το αποθηκεύσουμε στο διάνυσμα b:
Κώδικας: Επιλογή όλων
b = a + 2;

Αυτή τη φορά δεν τυπώνεται τίποτε στην οθόνη γιατί ακολουθεί ο χαρακτήρας ;
Αν θέλουμε να δούμε τα περιεχόμενα του b, τότε απλώς πληκτρολογούμε:
Κώδικας: Επιλογή όλων
b
    3    4    5    6   11   10    9    8


Για τη δημιουργία διαγραμμάτων μπορούμε πολύ απλά να χρησιμοποιήσουμε την εντολή plot ως εξής:
Κώδικας: Επιλογή όλων
plot(b)
grid on

H εντολή grid on δημιουργεί τις οριζόντιες και κατακόρυφες γραμμές που αποτελούν το πλέγμα (grid).
Εικόνα
Οι πίνακες μπορούν να δημιουργηθούν παρόμοια διαχωρίζοντας τις γραμμές του πίνακα με ;
Κώδικας: Επιλογή όλων
A = [1 2 3; 4 5 6; 7 8 9]
A =
     1  2  3 
     4  5  6
     7  8  9

O ανάστροφος---προσοχή όχι ο αντίστροφος---ενός πίνακα μπορεί να υπολογισθεί με τον τελεστή '
Κώδικας: Επιλογή όλων
Β = Α'
Β =
   1   4   7
   2   5   8
   3   6   9

O πολλαπλασιασμός των πινάκων γίνεται με τη χρήση του τελεστή *
Κώδικας: Επιλογή όλων
C = A * B
C =

    14    32    50
    32    77   122
    50   122   194

To octave δίνει τη δυνατότητα για έναν ακόμη τελεστή που στην αρχή ίσως να μη φαίνεται συνηθισμένος αλλά θα σας φανεί πολύ χρήσιμος. Πρόκειται για τον πολλαπλασιασμό κατά στοιχείο και γίνεται με .*
Κώδικας: Επιλογή όλων
C = A .* B
C =

    1    8   21
    8   25   48
   21   48   81

πολλαπλασιάζει δηλαδή τα στοιχεία του Α με τα στοιχεία Β στην αντίστοιχη θέση.
O αντίστροφος---προσοχή όχι ο ανάστροφος---ενός πίνακα δίνεται από τη συνάρτηση inv:
Κώδικας: Επιλογή όλων
D = inv(C)
D =

   0.77500  -1.00000   0.39167
  -1.00000   1.00000  -0.33333
   0.39167  -0.33333   0.10833

Oι ιδιοτιμές ενός πίνακα δίνονται από τη συνάρτηση eig:
Κώδικας: Επιλογή όλων
eig(A)
ans =

   1.6117e+01
  -1.1168e+00
  -8.8783e-16

H εντολή rand θα επιστρέψει ένα πίνακα με 3 γραμμές και 2 στήλες με τυχαία στοιχεία μεταξύ 0 και 1.
Κώδικας: Επιλογή όλων
B = rand (3, 2)
   0.68787   0.47172
   0.83483   0.86060
   0.20818   0.38982




Με την εντολή help μπορούμε να διαβάσουμε τις λεπτομέρειες για τη σύνταξη και τα ορίσματα μιας άλλης εντολής, για παράδειγμα:
Κώδικας: Επιλογή όλων
help plot

Για να βγούμε από το octave πληκτρολογούμε quit ή exit ή ctrl+D.

Creative Commons License
Η εργασία υπάγεται στην άδεια Creative Commons Αναφορά-Παρόμοια διανομή 3.0 Ελλάδα
Τελευταία επεξεργασία από Dimitris και 16 Μαρ 2010, 01:20, έχει επεξεργασθεί 1 φορά/ες συνολικά
Άβαταρ μέλους
Dimitris
saintTUX
saintTUX
 
Δημοσιεύσεις: 1357
Εγγραφή: 13 Μάιος 2008, 13:57
Τοποθεσία: Θεσσαλονίκη
Εκτύπωση

Re: Octave

Δημοσίευσηαπό Nisok » 27 Μαρ 2009, 02:32

Ενδοιαφέρον. Αλλά το matlab είναι γιγαντιαίο. Κατα πόσο νομίζεις ότι μπορεί πράγματι να αντικαταστήσει το matlab?
Άβαταρ μέλους
Nisok
Διαχειριστής
Διαχειριστής
 
Δημοσιεύσεις: 2637
Εγγραφή: 25 Ιαν 2009, 15:00
Τοποθεσία: /home
IRC: nisok
Εκτύπωση

Re: Octave

Δημοσίευσηαπό medigeek » 27 Μαρ 2009, 03:17

Nisok έγραψε:Ενδοιαφέρον. Αλλά το matlab είναι γιγαντιαίο. Κατα πόσο νομίζεις ότι μπορεί πράγματι να αντικαταστήσει το matlab?

Ολα αρχιζουν απο κατι μικρο.. σιγα σιγα :)

Οσο για το πόσο είναι compatible, κοιταξε το FAQ:
http://www.gnu.org/software/octave/FAQ. ... patibility
Κύπριος; Κόπιασε στο ubuntu-cy! ┃ Launchpad Debian Github
Οδηγός για νεοεισερχόμενους -- Αρχικές οδηγίες για αρχάριους χρήστες του Ubuntu

1 Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 12.10 quantal 3.5.0-21-generic 64bit (en_US.UTF-8, GNOME cinnamon2d), Ubuntu 3.5.0-19-generic, Windows 7
3 Intel Core2 Duo CPU E6550 2.33GHz ‖ RAM 5970 MiB ‖ MSI MS-7235
4 nVidia G73 [GeForce 7300 GT] [10de:0393] {nvidia}
5 eth0: Realtek RTL-8110SC/8169SC Gigabit Ethernet [10ec:8167] (rev 10)
Άβαταρ μέλους
medigeek
Freedom
Freedom
 
Δημοσιεύσεις: 5023
Εγγραφή: 24 Μάιος 2008, 14:49
Τοποθεσία: Σερβία/Κύπρος
Launchpad: medigeek
IRC: savvas
Εκτύπωση

Re: Octave

Δημοσίευσηαπό Dimitris » 27 Μαρ 2009, 03:27

Μπορεί να το αντικαταστήσει χωρίς κανένα πρόβλημα γιατί περιέχει γραμμική άλγεβρα, επίλυση μη γραμμικών αλγεβρικών εξισώσεων, αριθμητική ολοκλήρωση, κανονικές διαφορικές εξισώσεις, βελτιστοποίηση, επεξεργασία σήματος και εικόνας, αυτόματο έλεγχο και πολλά άλλα. Τα περισσότερα ελεύθερα πακέτα που υπάρχουν για matlab μπορούν να χρησιμοποιηθούν σχεδόν χωρίς καμία τροποποίηση και σε octave. Η ενσωμάτωση κώδικα FORTRAN γίνεται πολύ πιο εύκολα απ'ότι στο matlab και τα αποθετήρια του netlib.org περιέχουν άφθονο κώδικα για ό,τι μπορεί να φανταστεί κανείς. Υπάρχει γραφικό περιβάλλον, το qtoctave, το οποίο προσφέρει κάποιες ευκολίες. Αν διάβασα καλά, οποιαδήποτε ασυμβατότητα με το matlab (το βασικό όχι επιπλέον toolboxes) θεωρείται ως bug στην ομάδα του octave.

Σημασία έχει να υπάρχει η θέληση για να αντικατασταθεί. Και μη μου πεις ότι εκμεταλλεύεσαι όλες τις δυνατότητες του matlab. :D Aν πάλι υπάρχει κάτι που το θέλεις οπωσδήποτε πες το να γράψουμε κανένα toolbox.
Άβαταρ μέλους
Dimitris
saintTUX
saintTUX
 
Δημοσιεύσεις: 1357
Εγγραφή: 13 Μάιος 2008, 13:57
Τοποθεσία: Θεσσαλονίκη
Εκτύπωση

Re: Octave

Δημοσίευσηαπό Nisok » 27 Μαρ 2009, 11:25

Dimitris έγραψε:Aν πάλι υπάρχει κάτι που το θέλεις οπωσδήποτε πες το να γράψουμε κανένα toolbox.


Αυτό ακούγετε ΠΟΛΥ ενδοιαφέρον. Αν όντως είναι πρόταση τότε είμαι μέσα να φτιάξουμε κάτι που έχω στο μυαλό μου.
Άβαταρ μέλους
Nisok
Διαχειριστής
Διαχειριστής
 
Δημοσιεύσεις: 2637
Εγγραφή: 25 Ιαν 2009, 15:00
Τοποθεσία: /home
IRC: nisok
Εκτύπωση

Re: Octave

Δημοσίευσηαπό Nisok » 27 Μαρ 2009, 11:33

το κατεβάζω να τσεκάρω....
Άβαταρ μέλους
Nisok
Διαχειριστής
Διαχειριστής
 
Δημοσιεύσεις: 2637
Εγγραφή: 25 Ιαν 2009, 15:00
Τοποθεσία: /home
IRC: nisok
Εκτύπωση

Re: Octave

Δημοσίευσηαπό Babis_ECE » 27 Μαρ 2009, 14:41

"Παρακολούθηση Θέματος" από εμένα! :)
Εξαιρετικά ενδιαφέρον το Octave, και ο οδηγός σου με εντολές ακόμα περισσότερο. Ελπίζω να συνεχίσεις με την παρουσίαση εντολών στο Octave. Από το Matlab υπάρχει (δίκαια) απόλυτη εξάρτηση από όλους τους μηχανικούς (στους οποίους ανήκω :) ), επιστήμονες, κλπ. Το χρειάζομαι πλέον για την διπλωματική μου σχεδόν καθημερινά..
Apple MacBook Pro 13.3" Intel i5 2.3GHz (Early 2011)
Άβαταρ μέλους
Babis_ECE
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 832
Εγγραφή: 10 Ιουν 2008, 20:09
Τοποθεσία: Behind the Decks
Εκτύπωση

Re: Octave

Δημοσίευσηαπό Dimitris » 10 Ιουν 2009, 12:29

Για να ξεφύγουμε λιγάκι από τις ψηφοφορίες και τις συζητήσεις---οι οποίες οφείλω να πω με κουράσανε αρκετά---είπα να γράψω κάτι διαφορετικό. Όλοι μας έχουμε παίξει παιχνίδια στον υπολογιστή ή σχεδιάσει διδιάστατα ή τρισδιάστατα με προγράμματα όπως το inkscape ή το qcad και θα έχουμε ακούσει για βιβλιοθήκες όπως η opengl. Τι κρύβεται πίσω από αυτά τα γραφικά; Απλές πράξεις όπως πρόσθεση και πολλαπλασιασμός. Bέβαια, κάποιες στοιχειώδη γνώσεις προγραμματισμού είναι απαραίτητες.

Στο παρόν νήμα θα συζητηθούν τα βασικά από τα γραφικά υπολογιστών. Καταρχήν να ξεχωρίσουμε τα γραφικά σε διανυσματικά (vector) και κυψελωτά (pixel ή raster). Τα διανυσματικά, με τα οποία θα ασχοληθούμε, παραμένουν αναλοίωτα--δεν αλλάζουν δηλαδή--όσες φορές κι αν τα μεγεθύνουμε (zoom in). Αντιθετα τα raster γραφικά, αρχίζουν και εμφανίζουν "τετραγωνάκια" που χαλάνε την ποιότητα της εικόνας.

Για την παρουσίαση των παραδειγμάτων θα χρησιμοποιηθεί το πρόγραμμα octave, μιας και δίνει αρκετές δυνατότητες τόσο υπολογιστές όσο και σχεδιασμού. Στο μέλλον θα υπάρξει, ελπίζω, και παράδειγμα με C-GTK+ και python-Tkinter, αλλά μέχρι τότε βλέπουμε.

Καταρχήν δημιουργούμε ένα φάκελο, ας τον ονομάσουμε vector-graphics όπου θα αποθηκεύουμε όλα τα αρχεία που θα δημιουργήσουμε. Ανοίγουμε το τερματικό και πηγαίνουμε στο φάκελο που μόλις δημιουργήσαμε, για παράδειγμα:
cd ~/Desktop/vector-graphics

και πληκτρολογούμε octave.

Θα ορίσουμε τώρα μια συνάρτηση, η οποία θα μας χρειαστεί αρκετά σε όσα κάνουμε στο μέλλον, και ονομάζεται συνάρτηση Bernstein προς τιμή του μαθηματικού που την ανακάλυψε. (Τα μαθηματικά αντικείμενα συνήθως ανακαλύπτονται και δεν εφευρίσκονται γιατί υπάρχουν εκεί έξω απλώς εμείς αγνοούμε την ύπαρξή τους)
Κώδικας: Επιλογή όλων
function b = bernstein(t, n, i)
b = nchoosek(n,i) * t.^i .* (1-t).^(n-i);
end

Η μεταβλητή t εδώ είναι διάνυσμα (ας μου βρει κάποιος μια ελληνική λέξη για την array, γιατί διάνυσμα είναι vector) H τελεία . πριν τα σύμβολα του πολλαπλασιασμού * και του εκθέτη ^ δηλώνει ότι οι πράξεις αυτές θα γίνονται για όλα τα στοιχεία του διανύσματος. Είναι ένας έμμεσος τρόπος να δηλωθεί ένας βρόχος. Η συνάρτηση nchoosek είναι η διωνυμική κατανομή (βλ. http://en.wikipedia.org/wiki/Binomial_coefficient)
Τώρα θα σχεδιάσουμε αυτή τη συνάρτηση. Πρώτα, ορίζουμε ένα γραμμικό σύνολο 100 σημείων:
Κώδικας: Επιλογή όλων
t = linspace(0, 1, 100);

μεταξύ 0 και 1. Όσο περισσότερα σημεία τόσο καλύτερη ανάλυση, από κάποιον αριθμό και πάνω μειώνεται η ταχύτητα φυσικά.
Κώδικας: Επιλογή όλων
b = bernstein(t, 3, 1);
plot(y, b)

Kαι έχουμε την (3,1) συνάρτηση Bernstein. O ακριβής συμβολισμός είναι B με εκθέτη 3 και δείκτη 1.

Oι καμπύλες Bezier ορίζονται ως ο γραμμικός συνδυασμός των b---τα λεγόμενα σημεία ελέγχου (control points)---και των συναρτήσεων Bernstein:
Κώδικας: Επιλογή όλων
function x = bezier(b, t, n, nsd)
x = zeros(length(t), nsd)
for i = 1:n
    tmp = bernstein(t, n-1, i-1);
    for j = 1:nsd
        x(:,j) = x(:,j) + b(i,j) * tmp(:);
    end
end
end


Στο inkscape για παράδειγμα σχεδόν όλα τα αντικείμενα είναι καμπύλες Bezier. Tα τετραγωνάκια που μπορούμε να μετακινήσουμε δεν είναι τίποτε άλλο από τα σημεία ελέγχου των καμπυλών Bezier. Aν ορίσουμε τώρα τα εξής δύο σύνολα σημείων:
Κώδικας: Επιλογή όλων
b = [0,0; 1,-0.075; 2,0; 3,0.1; 4,0.1];
x = bezier(b, t, 5, 2);
plot(x(:,1), x(:,2));

όπου 5 είναι το πλήθος των σημείων και 2 το πλήθος των διαστάσεων (ναι μπορούμε να ορίσουμε και τριδιάστατη καμπύλη) Αυτά επεκτείνονται και σε επιφάνειες όπου υπάρχουν σημεία ελέγχου της επιφάνειας.

Τώρα μπορούμε να γράψουμε τις συναρτήσεις bernstein και bezier σε δύο ξεχωριστά αρχεία με τα ονόματα bernstein.m και bezier.m αντίστοιχα και να τις χρησιμοποιούμε σε άλλα προγράμματα matlab.

ΥΓ. Όποιος ενδιαφέρεται παραπάνω για το θέμα ας το πει.
Άβαταρ μέλους
Dimitris
saintTUX
saintTUX
 
Δημοσιεύσεις: 1357
Εγγραφή: 13 Μάιος 2008, 13:57
Τοποθεσία: Θεσσαλονίκη
Εκτύπωση

Re: Octave

Δημοσίευσηαπό atermon » 10 Ιουν 2009, 13:10

Να προσφέρω στη συζήτηση αναφέροντας μια επίσης αξιόλογη ελληνική εφαρμογή, για όσους δεν την γνωρίζουν ήδη:
http://englab.bugfest.net/
<Οδηγίες προς νεοεισερχόμενους> | <Οδηγοί χρήσης>
DEBIAN "Sid" 32bit σε Sony VAIO VGN-FE11S
Intel T2400(1,83 GHz) │ 2GB DDR2 │ NVIDIA GeForce Go 7400 │Intel 3945ABG │Intel 82801G(ICH7 Family) │ TFT 15.4" WXGA
Άβαταρ μέλους
atermon
seniorTUX
seniorTUX
 
Δημοσιεύσεις: 711
Εγγραφή: 13 Μάιος 2008, 20:31
Εκτύπωση

Re: Octave

Δημοσίευσηαπό Star_Light » 06 Οκτ 2011, 04:43

Kαλημέρα. Καταρχην τα συγχαρητηρια μου στον ΔΗμητρη για αυτο το μέγιστο θεμα / οδηγό!

ΕΓκατέστησα και εγω το octave αντι του Matlab επειδη θελω να κάνω καποια υλοποιηση για την πτυχιακη μου.

Εχω μερικες ερωτησεις τις οποιες θα ψαξω και μονος μου αλλα αμα βρεθει καποιος να τις γνωριζει θα με γλιτωνε! :D

κΑΤΑΡΧΗΝ πανω - κατω απο οσο καταλαβαινω η Matlab ειναι το ιδια ή σχεδον ιδια με την γλωσσα που θα χρησιμοποιησουμε και στο octave?

Δεν εχω κοιταξει ακομη καποιο τουτοριαλ :/ sorry.

Nα εγκαταστήσουμε καθαρό ΜΑTLAB στο λινουξ παιζει νομιζω αλλα με καποιο CD , αυτο το CD αν θελει καποιος απο που μπορει
να το προμηθευτει ας πουμε?

Ευχαριστω. ΤΗν καλημερα μου. Και παλι μπραβο για τον οδηγο
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Επόμενο

Επιστροφή στο Οδηγοί - How to - Tutorials