# Trying to build an array of row vectors such that every possible combination of the 3 vector components is included

1 view (last 30 days)
Michael Costa on 7 May 2021
Commented: Michael Costa on 7 May 2021
Take a vector [i j k]. I want to build an array of such vectors, with each element ranging from 1:20, such that every possible combination of the elements is included in the array. For example, the array would start with [1 1 1], [2 1 1], [3 1 1], and continue until [20 20 20] is reached. Here is what I have started with.
clear;
Ax_A = [];
for i = 1:20
Ax_A(i,1) = i;
end
for j = 1:20
Ax_A(:,2) = j
end
for k = 1:20
Ax_A(:,3) = k
end
When I don't supress the output for the 2nd (jth) and 3rd (kth) elements, it seems to be iterating through every single combination that I want. However, it is not storing all of these in the whole array that I am trying to build. If I do suppress the outputs, the result is just a 20x3 with i = 1-20, j = 20, and k = 20.

David Fletcher on 7 May 2021
Edited: David Fletcher on 7 May 2021
If you are going the loop route, then you want all three loops to be nested, rather than three separate loops. Something more like this:
clear;
Ax_A = [];
for i = 1:20
page=[];
for j = 1:20
for k = 1:20
page=[page; k j i];
end
end
Ax_A(:,:,i)=page;
end
Michael Costa on 7 May 2021
Thanks David! works perfectly.