求助:如何将矩阵中的元数枚举出来
问题描述:如何将一个只包含0、1两个值的矩阵枚举出来,例如:8个开关变量构成一个开关向量,形如,1代表开,0代表关,我如何将这8开关变量的组合形式枚举出来,构成一个矩阵?希望各位大侠能不吝赐教,先在此谢过了! 这个问题倒是满好玩儿的!
给个做法:
8个数字四个零四个一,相当于把其中的四个零或者四个一在1到8这8个位置上排列,做个8取四的组合即可,如下是所有组合:
nchoosek(,4)
一共70种做法。
[ 本帖最后由 bainhome 于 2006-10-11 17:31 编辑 ]
谢谢!不愧是大侠啊!
nchoosek([1:8],4)求得的不是我想得到啊
首先感谢2楼大侠的指点,可是nchoosek(,4)求得的矩阵不是我所需要的,这个函数求得的是枚举出了向量中任意四个元数的组合,并按照原顺序排列。请大侠能否再给出一个比较好的答案?本人愚钝,没能在大侠所给的函数指引下找到合适的方法,敬请大侠再次赐教 都到这一步了,你居然还能做不出答案...
function fff
clc
B=nchoosek(1:8,4);
A=zeros(size(nchoosek(1:8,4),1),8);
for i=1:length(A)
A(i,B(i,:))=1;
end
A
=========
运行结果:
=========
A =
1 1 1 1 0 0 0 0
1 1 1 0 1 0 0 0
1 1 1 0 0 1 0 0
1 1 1 0 0 0 1 0
1 1 1 0 0 0 0 1
1 1 0 1 1 0 0 0
1 1 0 1 0 1 0 0
1 1 0 1 0 0 1 0
1 1 0 1 0 0 0 1
1 1 0 0 1 1 0 0
1 1 0 0 1 0 1 0
1 1 0 0 1 0 0 1
1 1 0 0 0 1 1 0
1 1 0 0 0 1 0 1
1 1 0 0 0 0 1 1
1 0 1 1 1 0 0 0
1 0 1 1 0 1 0 0
1 0 1 1 0 0 1 0
1 0 1 1 0 0 0 1
1 0 1 0 1 1 0 0
1 0 1 0 1 0 1 0
1 0 1 0 1 0 0 1
1 0 1 0 0 1 1 0
1 0 1 0 0 1 0 1
1 0 1 0 0 0 1 1
1 0 0 1 1 1 0 0
1 0 0 1 1 0 1 0
1 0 0 1 1 0 0 1
1 0 0 1 0 1 1 0
1 0 0 1 0 1 0 1
1 0 0 1 0 0 1 1
1 0 0 0 1 1 1 0
1 0 0 0 1 1 0 1
1 0 0 0 1 0 1 1
1 0 0 0 0 1 1 1
0 1 1 1 1 0 0 0
0 1 1 1 0 1 0 0
0 1 1 1 0 0 1 0
0 1 1 1 0 0 0 1
0 1 1 0 1 1 0 0
0 1 1 0 1 0 1 0
0 1 1 0 1 0 0 1
0 1 1 0 0 1 1 0
0 1 1 0 0 1 0 1
0 1 1 0 0 0 1 1
0 1 0 1 1 1 0 0
0 1 0 1 1 0 1 0
0 1 0 1 1 0 0 1
0 1 0 1 0 1 1 0
0 1 0 1 0 1 0 1
0 1 0 1 0 0 1 1
0 1 0 0 1 1 1 0
0 1 0 0 1 1 0 1
0 1 0 0 1 0 1 1
0 1 0 0 0 1 1 1
0 0 1 1 1 1 0 0
0 0 1 1 1 0 1 0
0 0 1 1 1 0 0 1
0 0 1 1 0 1 1 0
0 0 1 1 0 1 0 1
0 0 1 1 0 0 1 1
0 0 1 0 1 1 1 0
0 0 1 0 1 1 0 1
0 0 1 0 1 0 1 1
0 0 1 0 0 1 1 1
0 0 0 1 1 1 1 0
0 0 0 1 1 1 0 1
0 0 0 1 1 0 1 1
0 0 0 1 0 1 1 1
0 0 0 0 1 1 1 1
受教了,感谢!
页:
[1]