Most efficient way to generate combinations

Dear all; I need to generate a large serie of combinations and it is taking a lot. I'm using 3 cycles one inside the other but I'm sure there's a better way to achieve this.
Here's what I'm currently doing:
indices=0; %indices matrix
l=1;
for i=1:200;
for j=1:300;
for k=1:250;
indices(l,1)=i-1;
indices(l,2)=j-1;
indices(l,3)=k-1;
l=l+1;
end
end
end
Please note that i, j and k have different lengths (thus values).
Any help would be greatly appreciated!
Thank you!

답변 (3개)

Walter Roberson
Walter Roberson 2013년 4월 29일

1 개 추천

[I, J, K] = ndgrid(0:199, 0:299, 0:249);
indices = horzcat(I(:), J(:), K(:));
Jonathan Sullivan
Jonathan Sullivan 2013년 4월 29일

0 개 추천

You can use allcomb (which can be found here)
a = (1:200)-1;
b = (1:300)-1;
c = (1:250)-1;
indices = allcomb(a,b,c);
Lorenzo
Lorenzo 2013년 4월 30일
편집: Lorenzo 2013년 4월 30일

0 개 추천

Thank you both!
Eventually I did it with
[p,q,n] = meshgrid(1:length(x),1:length(y),1:length(z));
indices=[p(:)-1 q(:)-1 n(:)-1];

카테고리

도움말 센터File Exchange에서 Language Fundamentals에 대해 자세히 알아보기

태그

질문:

2013년 4월 29일

Community Treasure Hunt

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

Start Hunting!

Translated by