Filter löschen
Filter löschen

Info

Diese Frage ist geschlossen. Öffnen Sie sie erneut, um sie zu bearbeiten oder zu beantworten.

How can I preallocate me code?

1 Ansicht (letzte 30 Tage)
Reni Llupa
Reni Llupa am 27 Nov. 2017
Geschlossen: MATLAB Answer Bot am 20 Aug. 2021
How can I preallocate my code. Creating x_o=zeros(1,10000) does not help and makes it slower.I will attach the code above. Thanks in advance.
  1 Kommentar
Rik
Rik am 27 Nov. 2017
You need to rethink your approach. You can generate the dice rolls in one vector, but the recursive nature of your method of calculating the coordinates will lead to very slow code. Apart from re-writing your code or lowering the loop count, there is not really a solution I can see.
And you are not using indices, so that pre-allocation does nothing apart from slowing down your code even more.
x_0(i)=(x_o(i-1)+x_a)/2;%don't forget the case where i==1

Antworten (1)

KL
KL am 27 Nov. 2017
Bearbeitet: KL am 27 Nov. 2017
Use indexing. Pre-allocating won't make a big difference if you have a for loop there.
roll = randi([1 6], 1, 10000);
indx_a = roll<=2;
indx_b = roll>2 & roll<=4;
x_o = ones(1,10000).*x_c/2;
y_o = ones(1,10000).*y_c/2;
x_o(indx_a+indx_b) = indx_a.*(x_a/2)+indx_b.*(x_b/2);
y_o(indx_a+indx_b) = indx_a.*(y_a/2)+indx_b.*(y_b/2);

Diese Frage ist geschlossen.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by