Info
此问题已关闭。 请重新打开它进行编辑或回答。
How can I preallocate me code?
1 次查看(过去 30 天)
显示 更早的评论
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 个评论
Rik
2017-11-27
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
回答(1 个)
KL
2017-11-27
编辑:KL
2017-11-27
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);
0 个评论
此问题已关闭。
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!