THMMY.gr

Ηλεκτρονικοί Υπολογιστές και Τεχνικά Θέματα => Matlab, Mathematica, Octave, EngLab κλπ => Topic started by: ioanna208 on March 20, 2006, 22:10:13 pm



Title: Βασική απορία στο matlab!!
Post by: ioanna208 on March 20, 2006, 22:10:13 pm
Έχω κολλήσει και έχω  μία βασική απορία στο matlab...Πως δημιουργούμε έναν πίνακα γνωρίζοντας τις διαστάσεις του.??Θέλω π.χ. να δημιουργήσω έναν δισδιάστατο πίνακα και στην συνέχεια να δώσω διάφορες τιμές στα στοιχεία του..Προσπάθησα να βρω από το help κάποια πληροφορία και βρήκα την mxCreateCellArray η οποία σχετίζεται και με την c..?Δεν υπάρχει κάποια απλή σύνταξη όπως στην c, java?? 


Title: Απ: Βασική απορία στο matlab!!
Post by: Axel on March 20, 2006, 22:17:36 pm
Μπορεις να δημιουργησεις εναν πινακα γεματο μηδενικα γνωριζοντας τις διαστασεις του με την εντολη arr = zeros(m,n) και στη συνεχεια να δωσεις τιμες στα στοιχεια του. Αντι για μηδενικα μπορεις να τον γεμισεις με ασσους και κατ'επεκταση με οποιοδηποτε αλλο αριθμο με την εντολη arr = ones(m,n).


Title: Απ: Βασική απορία στο matlab!!
Post by: Netgull on March 20, 2006, 22:20:51 pm
Ε;
Στο Matlab δεν χρειάζεται να δημιουργήσεις πίνακα.
Θέτεις απευθείας τις τιμές!
pinakas(10)=137;

Αν και συνίσταται για μεγάλους πίνακες αν ξέρεις τις διαστάσεις να τους αρχικοποιείς (πχ με τη zeros() ή την ones() ) γιατί η δυναμική δέσμευση μνήμης του Matlab είναι λίγο άθλια...


Title: Re: Βασική απορία στο matlab!!
Post by: ioanna208 on March 20, 2006, 22:23:27 pm
σας ευχαριστώ και τους δυο! :)


Title: Re: Βασική απορία στο matlab!!
Post by: ioanna208 on April 17, 2006, 19:46:59 pm
Θέλω να λύσω ένα σύστημα εννιά εξισώσεων με εννιά αγνώστους. Αυτές οι εξισώσεις προκύπτουν με διάφορες πράξεις, οπότε δεν ξέρω εξαρχής τις εξισώσεις καικατ' επέκταση τους συντελεστές των αγνώστων σε κάθε εξίσωση.
Γενικά υπάρχει κάποιος τρόπος να βρω τους συντελεστές των αγνώστων μιας εξίσωσης, καμιά εντολή?? :(


Title: Re: Βασική απορία στο matlab!!
Post by: ioanna208 on April 17, 2006, 19:57:36 pm
Θέλω να λύσω ένα σύστημα εννιά εξισώσεων με εννιά αγνώστους. Αυτές οι εξισώσεις προκύπτουν με διάφορες πράξεις, οπότε δεν ξέρω εξαρχής τις εξισώσεις καικατ' επέκταση τους συντελεστές των αγνώστων σε κάθε εξίσωση.
Γενικά υπάρχει κάποιος τρόπος να βρω τους συντελεστές των αγνώστων μιας εξίσωσης, καμιά εντολή?? :(

άκυρο...


Title: Re: Βασική απορία στο matlab!!
Post by: anonymous-root on March 21, 2008, 23:43:05 pm
Άλλη ερώτηση, πως κάνω πράξεις μεταξύ στοιχείων του πίνακα;

Δηλαδή
Code:
A[x] = B[z+1] - B[z]

;


Title: Re: Βασική απορία στο matlab!!
Post by: Zarathoustra on March 22, 2008, 01:12:48 am
Άλλη ερώτηση, πως κάνω πράξεις μεταξύ στοιχείων του πίνακα;

Δηλαδή
Code:
A[x] = B[z+1] - B[z]

;

a=[0 b]-[b 0]

Υποθέτοντας ότι ο b είναι πίνακας γραμμή.
EDIT:
Για την ακρίβεια,το παραπάνω αντιστοιχεί στο
α(χ)=b(χ-1)-b(x) με b(0)=0,πάντως αυτή είναι η γενική ιδέα.


Title: Re: Βασική απορία στο matlab!!
Post by: Turambar on March 25, 2008, 02:58:06 am
@Ζαρατούστρα: ^tomato^

δεν καταλαβαίνει από Α [ 0 ] η Matlab...

όπου 0 βάλε 1...

και νομίζω ότι είναι Α(0) και όχι Α [ 0 ] αλλά τώρα μπερδεύτηκα...


Title: Re: Βασική απορία στο matlab!!
Post by: anonymous-root on March 25, 2008, 03:02:24 am
και νομίζω ότι είναι Α(0) και όχι Α [ 0 ] αλλά τώρα μπερδεύτηκα...

++


Title: Re: Βασική απορία στο matlab!!
Post by: alekos on March 25, 2008, 03:13:42 am
Ε ναι τώρα που γίναμε κάρβουνα στο matlab ελέω γραφικής επιβεβαιώνω 


Title: Re: Βασική απορία στο matlab!!
Post by: Kat on March 25, 2008, 12:43:58 pm
@Ζαρατούστρα: ^tomato^

δεν καταλαβαίνει από Α [ 0 ] η Matlab...

όπου 0 βάλε 1...

και νομίζω ότι είναι Α(0) και όχι Α [ 0 ] αλλά τώρα μπερδεύτηκα...

Turam νομίζω δεν εννοεί δείκτη. Εννοεί τον πίνακα Α και μπροστά (concatenated) ένα μηδενικό στοιχείο. Από ένα πίνακα κατασκευάζεις δύο δηλαδή, με διαφορά ένα στοιχείο, έτσι ώστε να κάνεις την αφαίρεση που θέλει ο root. Για την αγκύλη και την παρένθεση, είναι απλά το καινούριο notation.


Title: Re: Βασική απορία στο matlab!!
Post by: Zarathoustra on March 25, 2008, 17:05:57 pm
και νομίζω ότι είναι Α(0) και όχι Α [ 0 ] αλλά τώρα μπερδεύτηκα...

++

Turambar και ανώνυμε δεν έχετε καταλάβει τι κάνει ο κώδικας που παρέθεσα πιο πάνω.Το μάτλαμπ όμως το καταλαβαίνει μια χαρά.


Title: Re: Βασική απορία στο matlab!!
Post by: Turambar on March 25, 2008, 17:07:44 pm
^notworthy^




O anonymous αναφερόταν σε αυτό που νόμιζα εγώ, και είχε δίκιο.

Εγώ έιπα την κοτσάνα :D


Title: Re: Βασική απορία στο matlab!!
Post by: anonymous-root on March 25, 2008, 17:16:55 pm
Τι έγινε ρε παιδιά;

Εγώ λέω πως κάνεις πράξεις μεταξύ στοιχείων του πινακα:

Code:
Στη C θα γράφαμε A[i][j] + B[i][j] σωστά;

Το matlab όμως τα στοιχεία του πινακα τα παίρνει με παρενθέσεις: A(i)(j) κτλ.

Οπότε εγώ με βάση το παραπάνω συμφωνώ με τον Turambar.


 :D :D


EDIT: και το smf αρπάζει το
Code:
[i]
και τα κάνει όλα πλάγια!


Title: Re: Βασική απορία στο matlab!!
Post by: Zarathoustra on March 25, 2008, 17:25:33 pm
ΟΚ, πράξεις λοιπόν κάνουμε με τους τελεστές +,-/,*
Το στοιχείο ενός πίνακα το παίρνουμε με την παρένθεση ()
Αν θες να κάνεις πολλές πράξεις με στοιχεία πινάκων,καλύτερα είναι να αποφεύγεις τους βρόχους for για λόγους απόδοσης.

Και τέλος, ο κώδικας μου είναι σωστός και κάνει αυτό ακριβώς που έγραψα.

(Για την ακρίβεια,οι τελεστές ειναι .* ./ .- .+ αφού έχουμε να κάνουμε με μεμονωμένα στοιχεία.Τις περισσότερες φορές όμως είναι ισοδύναμοι με τους * / - + που δουλεύουν σε ολόκληρους πίνακες)