All possible combinations for fixed columns?
    10 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
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 comentarios
Respuestas (1)
  Henrik
      
 el 6 de Dic. de 2014
        
      Editada: Henrik
      
 el 6 de Dic. de 2014
  
      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 comentarios
Ver también
Categorías
				Más información sobre Programming Utilities en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

