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

πρόβλημα σε matlab


almond

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

Δημοσ.

% έστω ότι έχουμε ένα διάνυσμα 0:Χ. Στόχος μου είναι να φτιάξω

% ένα διάνυσμα από 0 εως Χ του οποίου το κάθε στοιχείο θα επαναλαμβάνεται

% τόσες φορές όσες είναι και το μήκος του 0 εως Χ στο τετράγωνο.

% Για παράδειγμα αν το αρχικό μου διάνυσμα είναι 0:2 τότε θέλω να φτιάξω

% διάνυσμα από 0 εως 2 του οποίου το κάθε στοιχείο (δηλ. τα 0,1,2) θα

% επαναλαμβάνεται τόσες φορές όσες και το μήκος του 0:2 στο τετράγωνο (δηλ.

% 3^2 = 9)

% Ο παρακάτω κώδικας δουλεύει μόνο για το διάνυσμα 0:2 και προφανώς δεν

% είναι και ιδιαίτερα αποδοτικός πχ. για 0:30.

% Έχετε καμιά ιδέα για το πως μπορεί να βελτιωθεί;

% ευχαριστώ!

 

>
clear, clc

vector = (0:2)'

[a,b] = size(vector)

c = a^3
d = a^2

vector1 = zeros(c,1)

for i = 1:c
   if i <= 9
       vector1(i) = vector(1);
       continue
   elseif i > 9 && i <= 18
       vector1(i) = vector(2);
       continue
   elseif i > 18 && i <= 27
       vector1(i) = vector(3);
       continue
   end
end

Δημοσ.
% έστω ότι έχουμε ένα διάνυσμα 0:Χ. Στόχος μου είναι να φτιάξω

% ένα διάνυσμα από 0 εως Χ του οποίου το κάθε στοιχείο θα επαναλαμβάνεται

% τόσες φορές όσες είναι και το μήκος του 0 εως Χ στο τετράγωνο.

% Για παράδειγμα αν το αρχικό μου διάνυσμα είναι 0:2 τότε θέλω να φτιάξω

% διάνυσμα από 0 εως 2 του οποίου το κάθε στοιχείο (δηλ. τα 0,1,2) θα

% επαναλαμβάνεται τόσες φορές όσες και το μήκος του 0:2 στο τετράγωνο (δηλ.

% 3^2 = 9)

% Ο παρακάτω κώδικας δουλεύει μόνο για το διάνυσμα 0:2 και προφανώς δεν

% είναι και ιδιαίτερα αποδοτικός πχ. για 0:30.

% Έχετε καμιά ιδέα για το πως μπορεί να βελτιωθεί;

% ευχαριστώ!

 

>
clear, clc

vector = (0:2)'

[a,b] = size(vector)

c = a^3
d = a^2

vector1 = zeros(c,1)

for i = 1:c
   if i <= 9
       vector1(i) = vector(1);
       continue
   elseif i > 9 && i <= 18
       vector1(i) = vector(2);
       continue
   elseif i > 18 && i <= 27
       vector1(i) = vector(3);
       continue
   end
end

 

Φίλε almond μπορείς να κάνεις το loop κάπως έτσι για να δουλεύει γενικά

a=size(vector);

i=z=1;

c=a*a;

while ( i <= c )

vector(i) = vector(z);

i++;

if ( i == (z*a) )

z=z+1;

end

end

 

Ελπίζω να δουλεύει αυτό που σου έγραψα.Δυστυχώς δεν μπορώ να το ελέγξω γιατί είμαι στη σχολή και το pc που κάθομαι δεν έχει matlab.Ελπίζω τουλάχιστον να κατάλαβες την ιδέα.Αν μπορώ να σε βοηθήσω περαιτέρω ευχαρίστως.

Δημοσ.

ευχαριστώ για την απαντησή σου BadGuy,

και πρόσθεσα τις δύο πρώτες σειρές (για τον ορισμό του 'vector' και του 'a').

 

Ως 'z' τι ορίζεις ; και

Στην σειρά του 'i++' μήπως αυτός είναι συμβολισμός για C ή κάτι παρόμοιο;

 

νέος βλέπεις στον προγραμματισμό

ευχαριστώ

 

>vector = (0:2)'

[a,b] = size(vector)

i=z=1;

c=a*a;

while ( i <= c )
   vector(i) = vector(z);
   i++;
   if ( i == (z*a) )
       z=z+1;
   end
end

Δημοσ.
ευχαριστώ για την απαντησή σου BadGuy,

και πρόσθεσα τις δύο πρώτες σειρές (για τον ορισμό του 'vector' και του 'a').

 

Ως 'z' τι ορίζεις ; και

Στην σειρά του 'i++' μήπως αυτός είναι συμβολισμός για C ή κάτι παρόμοιο;

 

νέος βλέπεις στον προγραμματισμό

ευχαριστώ

 

>vector = (0:2)'

[a,b] = size(vector)

i=z=1;

c=a*a;

while ( i <= c )
   vector(i) = vector(z);
   i++;
   if ( i == (z*a) )
       z=z+1;
   end
end

 

Το z το χρησιμοποιώ για να περνάς στο νέο διάνυσμα που φτιάχνεις το στοιχείο που υπάρχει στο αρχικό διάνυσμα(vector) στη θέση z.Προσπαθώ να το κάνω κάπως αλγοριθμικά αντί να βάζεις vector(1), vector(2) κλπ.Βέβαια επαναλαμβάνω ότι δεν έχω τρέξει τον κώδικα να δω αν δουλεύει οπότε δεν σου εγγυώμαι!!Όσο για το i++ παρασύρθηκα από τη C!!Βλέπεις η συνήθεια δεν ξεχνιέται!!!:-D Και δεν είναι όλοι στην αρχή master στον προγραμματισμό(και εγώ τώρα μαθαίνω).Practice makes perfect!!!Ελπίζω να βοήθησα!!!Για οτιδήποτε άλλο το συζητάμε!!!:-)

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...