sasa limnaou Δημοσ. 28 Νοεμβρίου 2007 Δημοσ. 28 Νοεμβρίου 2007 Γεια σε όλους! αντιμετωπίζω προβληματακι με προγραμματισμό στο matlab!έχω πίνακα στήλη, με 1980 σειρές και πρέπει να φτιάξω loop που να προσθέτει το πρώτο στοιχείο του πίνακα μου με τα επόμενα 20,το δεύτερο στοιχείο του πίνακα με τα επόμενα του 20(δηλαδή να προθέτει από το 2ο μέχρι το 21ο στοιχείο) και πάει λέγοντας... καμιά ιδέα? θα ήμουν αιωνίως ευγνώμον!!!
tsipouro Δημοσ. 28 Νοεμβρίου 2007 Δημοσ. 28 Νοεμβρίου 2007 Γεια σε όλους! αντιμετωπίζω προβληματακι με προγραμματισμό στο matlab!έχω πίνακα στήλη, με 1980 σειρές και πρέπει να φτιάξω loop που να προσθέτει το πρώτο στοιχείο του πίνακα μου με τα επόμενα 20,το δεύτερο στοιχείο του πίνακα με τα επόμενα του 20(δηλαδή να προθέτει από το 2ο μέχρι το 21ο στοιχείο) και πάει λέγοντας... καμιά ιδέα? θα ήμουν αιωνίως ευγνώμον!!! Σε C# θα το έκανα (νομίζω) έτσι: for ( int i=0; i< table.Rows.Count; i++ ){ int place = table.Rows; for( int k=i; k<20+i; k++){ place += table.Rows[k] } table.Rows = place; }
tsipouro Δημοσ. 28 Νοεμβρίου 2007 Δημοσ. 28 Νοεμβρίου 2007 Τεσπά, επειδή edit ΔΕΝ μπορώ να κάνω, το παραθέτω διορθωμένο for ( int i=0; i< table.Rows.Count; i++ ){ int place = table.Rows[0]; for( int k=i; k<20+i; k++){ place += table.Rows[k][0]; } table.Rows = place; }
warchief Δημοσ. 28 Νοεμβρίου 2007 Δημοσ. 28 Νοεμβρίου 2007 Ειμαι σίγουρος πως ο παραπάνω κώδικας 8α δώσει ένα ωραίο array index out of bounds για i=1960+
tsipouro Δημοσ. 29 Νοεμβρίου 2007 Δημοσ. 29 Νοεμβρίου 2007 Γι αυτό υπάρχει και το Α' τεστ εξάλλου for ( int i=0; i< table.Rows.Count-20; i++ ){
myle Δημοσ. 30 Νοεμβρίου 2007 Δημοσ. 30 Νοεμβρίου 2007 Γεια σε όλους! αντιμετωπίζω προβληματακι με προγραμματισμό στο matlab!έχω πίνακα στήλη, με 1980 σειρές και πρέπει να φτιάξω loop που να προσθέτει το πρώτο στοιχείο του πίνακα μου με τα επόμενα 20,το δεύτερο στοιχείο του πίνακα με τα επόμενα του 20(δηλαδή να προθέτει από το 2ο μέχρι το 21ο στοιχείο) και πάει λέγοντας... καμιά ιδέα? θα ήμουν αιωνίως ευγνώμον!!! >b = zeros(1, 1960); for i=1:1960 for j = 1: 20 b[1,i] = b[1,i] + a[1,i + j]; end; end;
myle Δημοσ. 30 Νοεμβρίου 2007 Δημοσ. 30 Νοεμβρίου 2007 Βελτιστοποιημένη έκδοση, αν σε ενδιαφέρει κάτι τέτοιο εφόσον ασχολείσαι με θέματα απόδοσης: > b = zeros(1, 1960); i=1; for j = 1: 20 b[1,i] = b[1,i] + a[1,i + j]; end; for i=2:1960 b[1,i] = b[1,i - 1] - a[1,i - 1] + a[1, i + 20] ; end; Όπου αν και τρέχει στον ίδιο χρόνο ασυμπτωτικά, έχεις πετύχει πολύ καλύτερη constant.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.