About Preallocating for speed

4 次查看(过去 30 天)
What is a more efficient way of writing this code?
NumberedOD = [];
for a = 1:(N-1)
for b = (a+1) :N
NumberedOD = [NumberedOD;a, b];
end
end
My aim is to get a list of numbers like this:
1 2
1 3
.
.
1 N
2 3
2 4
.
.
  1 个评论
Adam
Adam 2017-2-14
编辑:Adam 2017-2-14
Purely from a pre-allocation perspective you can work out the number of elements there will be in that matrix - it is fixed and calculable so you can preallocated a zeros matrix. I'm sure there is a quicker vectorized way to do it though, I just don't have time to think about it myself right now. I'm sure someone will suggest one though.

请先登录,再进行评论。

采纳的回答

Alexandra Harkai
Alexandra Harkai 2017-2-14
NumberedOD = nchoosek(1:N, 2);

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 MATLAB 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by