Link to home
Start Free TrialLog in
Avatar of Brainstormer
BrainstormerFlag for United States of America

asked on

Binary matrix for all possible unique results of X(i) variables

How to generate a binary matrix for all possible permutations of 'i' variables X, where " i " can be any number between 1 and infinite. I know that the resultant matrix will have 2^ i unique answers, but don't know how to generate it.  Let me explain by example:

variables x1, x2 (i=2) each with a possible value of 1 or 0, so the resultant matrx would be:

X2  X1
0     0
0     1
1     0
1     1

but what if i=120 for example, how do we generate the matrix for x(i) from 1 to 120? There would be 2^ 120 results.

The logic is simple, but I can not seem to translate to code:

x4 x3 x2 x1
0    0   0   0
0    0   0   1
0    0   1   0
0    0  1    1
0   1   0   0
0   1   0    1
0    1  1   0
0   1   1   1
1   0   0   0
1    0   0   1
1    0   1   0
1    0  1    1
1   1   0   0
1   1   0    1
1    1  1   0
1   1   1   1

generate matrix 2^i by i size
start with all x(i) values at 0
get value of x(i)
  if x(i)=1
      increment i
  else set x(i)=1 then start checking values from beginning
if i reaches count of total variables for that row OR leftmost variable is 1 move to next row

or something like above
ASKER CERTIFIED SOLUTION
Avatar of cup
cup

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of Brainstormer

ASKER

cup, thanks for the VB script. It works for i=5, but I tested it for 6, or 7 and it fell short and stopped before all final values were 1. It also uses a string logic that does not truly "read" the previous values, which is OK, but not the "smart" solution I am looking for.

PS: I refuse to believe no one has ever had to come up with this problem before, and a true solution must exist. Come one programming experts, take a swing!
I was able to resolve this using a MatLab function available here: http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=7147&objectType=FILE

I also attached it for review purposes. The function code was hard for me to understand, I would still be interested into a more logical approach to this that's more language independent and easier to understand.
combn.m.txt
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
that function is beyond me as well, but I only need to call it to get the desired results.

CUP, your updated script is working quite well, I will try to get a MatLab version of it up.

%combn.m function required
%define the matrix columns
i=5;
%create the matrix M for all binary combinations
M=combn([0 1],i);
%display M on screen
disp(M);

Open in new window