# How can I Store all the possible combinations of columns of a matrix?

11 views (last 30 days)

Show older comments

samad khansari
on 25 Jul 2014

Commented: Chenyang Zhang
on 12 May 2020

##### 0 Comments

### Accepted Answer

José-Luis
on 25 Jul 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 Comments

### More Answers (1)

Ben11
on 25 Jul 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 Comments

### See Also

### Categories

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!