How can I Store all the possible combinations of columns of a matrix?
    8 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    samad khansari
 el 25 de Jul. de 2014
  
    
    
    
    
    Comentada: Chenyang Zhang
 el 12 de Mayo de 2020
            for example I have : [1 2 3; 4 5 6; 7 8 9] as 3x3 matrix. Now I want : [2 1 3; 5 4 6; 8 7 9] and every other combination of it. in other word I want all  nchoosek(n,2) of columns of a nxn matrix.
0 comentarios
Respuesta aceptada
  José-Luis
      
 el 25 de Jul. de 2014
        I would recommend that you only save the indices, if you really need to. Sure, you only have a small matrix, but the amount of required memory can become a problem really fast in combinatorial problems.
 a = [1 2 3; 4 5 6; 7 8 9];
 idx = perms(1:size(a,2));
 for ii = idx'
     your_mat = a(:,ii)
 end
3 comentarios
  Chenyang Zhang
 el 12 de Mayo de 2020
				how to store all the your_mat value from every loop into one matrix? Thanks in advance
  Chenyang Zhang
 el 12 de Mayo de 2020
				In this case how do you get a 18x3 matrix as a result? Thank you
Más respuestas (1)
  Ben11
      
 el 25 de Jul. de 2014
        As a starting point you could store the output of the function 'perms' is a cell array, in which the kth cell cell contains all the possible permutations of the kth column. Eg:
clear all
clc
A= [1 2 3;4 5 6;7 8 9];
P = cell(1,size(A,1));
for k = 1:size(A,1)
      P{k} = perms(A(:,k))'; % Notice the transpose of the output.
end
disp('P{1}')
disp(P{1})
disp('P{2}')
disp(P{2})
disp('P{3}')
disp(P{3})
which gives this:
P{1}
     7     7     4     4     1     1
     4     1     7     1     4     7
     1     4     1     7     7     4
P{2}
     8     8     5     5     2     2
     5     2     8     2     5     8
     2     5     2     8     8     5
P{3}
     9     9     6     6     3     3
     6     3     9     3     6     9
     3     6     3     9     9     6
Then you could implement a loop in which you take every column of say P{1} and get the possible combinations with the columns from P{2}, P{3} and so on. There is probably a built-in function for this but I don't know it sorry. I hope that helps!
2 comentarios
Ver también
Categorías
				Más información sobre Circuit Envelope Simulation 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!



