Brainstormer
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
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
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
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
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
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
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.
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);
ASKER
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!