Låter spontant som en kartesisk produkt.
Går att fiffla ihop med loopar:
A = [0:120];
B = [0:.1:2];
C = [0:.1:3];
D = [0:.1:2];
S = zeros(length(A)*length(B)*length(C)*length(D), 4);
i = 1;
for a = A
for b = B
for c = C
for d = D
S(i,:) = [a b c d];
i = i+1;
end
end
end
end
S ska nu innehålla alla kombinationer (tar någon sekund på en relativt slö laptop, enligt tester). Notera att det kan bli en massiv matris beroende på hur många kombinationer som stoppas in; räkna på ca 8 B per double, vilket i ditt fall ger en S-matris på ~50 MB, vilket bör vara hanterbart. Ifall detta är en begränsning så lagra cellerna som singles (tar halva platsen) eller till och med heltal i stället (tar ner till en åttondel av platsen), med lite ändringar i koden. Se till att förallokera S-matrisen ovan, annars går det ordentligt slött.
Ett alternativ är att använda färdig kod. Det verkar inte som att det finns någon klockren inbyggd funktion, vilket är lite lustigt, men AllComb lär funka.
Notera också att om du inte har någon egentlig anledning att lagra värdena så kan du köra funktionen direkt i loopen. Ifall det blir totalt stopp i prestandan så kan man gå vidare och parallellisera det bättre, men ifall det inte behövs så behöver man inte alltid vara "smart i onödan".