Trying to build an array of row vectors such that every possible combination of the 3 vector components is included
    5 views (last 30 days)
  
       Show older comments
    
    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. 
0 Comments
Accepted Answer
  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 
More Answers (0)
See Also
Categories
				Find more on Loops and Conditional Statements in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!