All possible combinations for fixed columns?
    조회 수: 10 (최근 30일)
  
       이전 댓글 표시
    
Hey folks,
I'm attempting to build an algorithm that generates a 2^n x n matrix of values where n is the size of an input matrix made of two vectors that represent the minimum (first column) and maximum (second column) of values, respective.
For instance, if: input = [-1 1; -2 2]; output should be something like: [1 2; -1 -2; 1 -2; -1 2];
I looked at using nchoosek for this. However, when finding all possible combination, it includes columns being shifted around as such:
Theta =
    -1     1    -2     2
>> C = nchoosek(Theta,2)
C =
    -1     1
    -1    -2
    -1     2
     1    -2
     1     2
    -2     2
For higher order systems (n >= 3), this becomes even more complicated. Is there anyway I can use nchoosek or another algorithm with if statements to solve for the correct output, am I using the incorrect function to solve this, or should I build my own algorithm?
I appreciate any feedback.
- Dan
댓글 수: 0
답변 (1개)
  Henrik
      
 2014년 12월 6일
        
      편집: Henrik
      
 2014년 12월 6일
  
      I don't know how fast this will be for large n, but this seems to do what you want. You can probably vectorize at least one of the loops.
input=[-1 0 1; 2 4 6];
sz=size(input);
output=zeros(sz(2)^2,2);
for k=0:sz(2)-1
  for l=1:sz(2)
      output(k*sz(2)+l,:)=[input(1,k+1) input(2,l)];
  end
end
output
EDIT: changed the preallocation.
댓글 수: 2
참고 항목
카테고리
				Help Center 및 File Exchange에서 Programming Utilities에 대해 자세히 알아보기
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

