Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

New to MATLAB?

Matrix with all possibilities

Asked by Rik

Rik (view profile)

on 28 Dec 2012

Dear all,

I would like to create a matrix with all possibilities, such as the following: [1 1 1; 1 1 0; 1 0 1; 0 1 1; 1 0 0; 0 1 0; 0 0 1; 0 0 0]

I have tried to use nchoosek([0 0 0 1 1 1],3) but this function fails in ordering. Furthermore I tried C = npermutek([ones(1,3) zeros(1,3)],3); D = unique(C,'rows'), but this one gives a out of memory error for larger vectors (8 instead of 3). For this function see: http://www.mathworks.com/matlabcentral/fileexchange/11462-npermutek/

How to create such a matrix?

0 Comments

Rik

Rik (view profile)

Products

No products are associated with this question.

3 Answers

Answer by Jan Simon

Jan Simon (view profile)

on 28 Dec 2012

Searching the FileExchange for the terms "combinations" and "permutations" helps to find:

0 Comments

Jan Simon

Jan Simon (view profile)

Answer by Azzi Abdelmalek

Azzi Abdelmalek (view profile)

on 28 Dec 2012
Edited by Azzi Abdelmalek

Azzi Abdelmalek (view profile)

on 28 Dec 2012
out=[]
n=3
for k=1:n
  s=[ones(2^(n-k ),1) ;zeros(2^(n-k ),1)]
  s=repmat(s,2^(k-1),1)
  out=[out s]
end

0 Comments

Azzi Abdelmalek

Azzi Abdelmalek (view profile)

Answer by Roger Stafford

Roger Stafford (view profile)

on 29 Dec 2012

Here is a variation on Azzi's solution:

 A = ones(2^n,n);
 p = 1;
 for k = 0:n-1
   A(p+1:2*p,n-k:n) = [zeros(p,1),A(1:p,n-k+1:n)];
   p = 2*p;
 end

To count up instead of down, swap the 'ones' and 'zeros' calls.

0 Comments

Roger Stafford

Roger Stafford (view profile)

Contact us