Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Ευχαριστώ αλλά χάθηκα! Υπάρχει δυνατότητα επεξήγησης;!

 

edit: Το κατάλαβα! :)

 

Υπάρχει αντίστοιχος κώδικας για να κάνουμε το ίδιο στις γραμμές ;

 

 

 

Θα σου εξηγήσω τι ακριβώς κάνει ο κώδικας, για να μπορέσεις να τον αλλάξεις.

 

 

>
nikos = zeros(1, size(pina, 2));

 

η μεταβλητή nikos θα είναι ένας πίνακας με μηδενικά και διαστάσεις 1 x ό,τι νούμερο έχει σαν δεύτερη διάσταση (άρα στήλες) ο πίνακας pina.

 

 

>
for indx = 1:size(pina, 2)

 

αρχίζεις ένα for loop, όπου η μεταβλητή σου που θα αυξάνει και θα ελέγχεται για το for loop θα είναι η indx. Οι τιμές της θα είναι από το 1, με βήμα 1, έως τον αριθμό για την δεύτερη διάσταση του πίνακα pina

 

>
   nikos(indx) = mean(pina(pina(:,indx)~=0));

 

για κάθε στοιχείο του πίνακα nikos που δείχνει η μεταβλητή indx (nikos(indx)), δώστου την τιμή που θα είναι ο μέσος όρος (mean) των στοιχείων του πίνακα pina ( mean(pina ) τα οποία ανήκουν σε όλες τις γραμμές (pina(:, ) και σε στήλη που δείχνει η μεταβλητή indx ( pina(:, indx) ) και τα οποία δεν είναι ίσο με μηδέν.

 

>
end

 

τελειώνει το for loop

Δημοσ.

Εάν το μάθεις το MATLAB, θα δεις ότι παρέχει αρκετές ευκολίες για την διαδικασία ελέγχου της σκέψης σου (proof of concept). Δυστυχώς όμως, δεν τα πάει τόσο καλά με ανεπτυγμένα θέματα (διαχείριση callback, διαχείριση μνήμης μεγάλων αντικειμένων κτλ) και real time διεργασίες.

Δημοσ.

Μπορεί να γίνει και χωρίς for-loop πολύ πιο γρήγορα με find. Τα for-loops καλο είναι να αποφεύγονται στο MATLAB διότι καθυστερούν παρα πολυ και να χρησιμοποιούνται μόνο όπου ο κώδικας δεν μπορεί να γίνει vectorized!

Δημοσ.

Μπορεί να γίνει και χωρίς for-loop πολύ πιο γρήγορα με find. Τα for-loops καλο είναι να αποφεύγονται στο MATLAB διότι καθυστερούν παρα πολυ και να χρησιμοποιούνται μόνο όπου ο κώδικας δεν μπορεί να γίνει vectorized!

 

 

Τα logical indices είναι πιο γρήγορα από το find. Το προτείνει η ίδια η mathworks.

 

Το συγκεκριμένο task δεν θα μπορούσε να γίνει χωρίς την χρήση for loop. Ακόμα και με την find, ως:

 

>
[x, y] = find(pina~=0);

 

θα έπρεπε να μπουν τα νέα στοιχεία σε έναν νέο πίνακα αλλά δεν υπήρχε η εγγύηση ότι ο νέος θα μπορούσε να έχει ίδιο αριθμό σειρών ανά στήλη.

 

Έτσι, δεν θα μπορούσε να χρησιμοποιηθεί η mean σε όλο τον πίνακα.

Δημοσ.

νομίζω πως από την εκδοση 2010a και δώθε, ακόμα και η αυτόματη διόρθωση στον editor, αντικαθιστά όλα τα find με indeces.

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...