Question

is there a simple command to do this:

M = 0 0 0
    0 0 1
    0 1 0
    0 1 1
    1 0 0
    1 0 1
    1 1 0
    1 1 1

i found this http://www.mathworks.co.kr/matlabcentral/fileexchange/7147-combn--4-3- but this isn't yet a thing in matlab

tried M = combn([0 1],3) bo i got Undefined function 'combn' for input arguments of type 'double'. in return

Was it helpful?

Solution

An easy approach is to generate all numbers from 0 to 2^n-1, where n is the number of rows, and convert them into binary:

n = 3;
result = dec2bin(0:2^n-1)-'0';

Or particularize this Q&A to your case.

OTHER TIPS

You're looking for matlab's perms() function.

v0=[0 0 0]; 
v1=[1 0 0];
v2=[1 1 0];
v3=[1 1 1]; 
p1=perms(v1);
p2=perms(v2);
combs = cat(1,v0,p1,p2,v3);

This of course gives all permutations meaning that order matters (even for the zeros) so to get only the unique combinations you could then use:

combs=unique(combs,'rows');

Which gives:

combs =
     0     0     0
     0     0     1
     0     1     0
     0     1     1
     1     0     0
     1     0     1
     1     1     0
     1     1     1

As a side note if you downloaded the file from the file exchange make sure it is on your matlab path, or in your current directory and this will avoid the unknown function error. You can read about how matlab's path works here

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top