miniducky 发表于 2006-10-11 14:21

求助:如何将矩阵中的元数枚举出来

问题描述:如何将一个只包含0、1两个值的矩阵枚举出来,例如:8个开关变量构成一个开关向量,形如,1代表开,0代表关,我如何将这8开关变量的组合形式枚举出来,构成一个矩阵?
希望各位大侠能不吝赐教,先在此谢过了!

bainhome 发表于 2006-10-11 17:30

这个问题倒是满好玩儿的!
给个做法:
8个数字四个零四个一,相当于把其中的四个零或者四个一在1到8这8个位置上排列,做个8取四的组合即可,如下是所有组合:
nchoosek(,4)
一共70种做法。

[ 本帖最后由 bainhome 于 2006-10-11 17:31 编辑 ]

miniducky 发表于 2006-10-11 23:10

谢谢!不愧是大侠啊!

miniducky 发表于 2006-10-13 19:23

nchoosek([1:8],4)求得的不是我想得到啊

首先感谢2楼大侠的指点,可是nchoosek(,4)求得的矩阵不是我所需要的,这个函数求得的是枚举出了向量中任意四个元数的组合,并按照原顺序排列。请大侠能否再给出一个比较好的答案?
本人愚钝,没能在大侠所给的函数指引下找到合适的方法,敬请大侠再次赐教

bainhome 发表于 2006-10-13 20:14

都到这一步了,你居然还能做不出答案...
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

miniducky 发表于 2006-10-13 23:01

受教了,感谢!

页: [1]
查看完整版本: 求助:如何将矩阵中的元数枚举出来