How to get all possible permutations in binary format?
4 次查看(过去 30 天)
显示 更早的评论
Hello, I want to get possible permutation of the vector v which actually contains a boolean values. Suppose the first permutation is v=[b2 b3 b1] . So it put the second column first then third column and finally the first colum and convert it into decimals
B=[0,1,0;0,0,1;1,1,0;0,1,1;1,0,1;1,0,0];
b1=B(:,1);
b2=B(:,2);
b3=B(:,3);
v=[b1 b2 b3];
c=perms(v);
final =bi2de(c)
2 个评论
Voss
2022-4-29
You say v is a vector, but in the code v is a matrix. And it's not clear why in the code you split the columns of matrix B into three separate variables b1, b2, and b3, only to recombine them into matrix v, so that v is the same as B.
B=[0,1,0;0,0,1;1,1,0;0,1,1;1,0,1;1,0,0];
b1=B(:,1);
b2=B(:,2);
b3=B(:,3);
v=[b1 b2 b3];
isequal(B,v)
Can you please clarify what exactly you want to do? You want all permutations of what exactly?
采纳的回答
DGM
2022-4-29
编辑:DGM
2022-4-30
I'm not sure, but are you thinking of something like this?
B = [0,1,0;0,0,1;1,1,0;0,1,1;1,0,1;1,0,0];
% all permutations of the columns of B
v = B(:,perms(1:size(B,2)));
v = reshape(v.',3,[]).'
% convert to dec
c = bi2de(v,'left-msb')
3 个评论
DGM
2022-4-30
If you want to organize the results in something other than one long vector, you can represent the results for each permutation as columns of a numeric array:
B = [0,1,0;0,0,1;1,1,0;0,1,1;1,0,1;1,0,0];
v = B(:,perms(1:size(B,2)));
v = reshape(v.',3,[]).';
c = bi2de(v,'left-msb');
c = reshape(c,size(B,1),[]) % one column for each perm
If you're thinking of making a bunch of dynamically-created variables for each vector, just don't. It would only make things slower and more problematic. For 8 columns, there are only 107520 permutations, so it's still manageable. You may find that the vast majority are nonunique.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Logical 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!