需要考虑 MATLAB 中二元选择的可能组合

need to consider possible combinations for a binary choice in MATLAB

我想构建一个 2^n*n 矩阵来评估 n 个代理的二元决策的所有可能决策向量。

因此,N 个人在 {0,1} 之间进行选择,他们的选择形成一个决策向量,例如 [1,1,0,1,0.....]。我想要一个由所有可能的决策向量组成的矩阵。

我尝试使用 repmat 复制 {0,1} n 次,然后 allcomb,但这没有用。 (也许我做错了。)

我还在某处读到我可以使用 A = (dec2bin(0:(2^n)-1)); 事实上,我确实得到了一些类似于我想要的东西,但是,我程序的其余部分(用于我的实际分析部分研究)给出了垃圾结果。

我在 matlab 中编写了一个代码,为 5 个人执行此操作(和模式),但我只嵌套了 5 个循环。我想扩展这个。任何帮助表示赞赏。

当前密码是

A= zeros (2^n,n); %creates blank strategy space 

x=0; % x is an iteration counting term and should be = 2^n if code runs correctly
for i=0:1

for j=0:1

    for k=0:1


        for l=0:1

            for m=0:1
               x=x+1;
               v1=i;
               v2=j;
               v3=k;
               v4=l;
               v5=m;
               A(x,:)=[v1 v2 v3 v4 v5]; % at termination this loop should generate an exhaustive list of all possible strategy profiles
            end
        end
    end
end
end
x;

我昨天才开始使用 MATLAB,所以我觉得这很糟糕......

如果我正确地解释了你的问题,给定 n 位,你想将所有可能的十进制值枚举成从 0 到 2^n-1 的二进制等效值。这可以通过调用 dec2bin 并转换为数值数组来完成:

n = 5;
A = dec2bin(0:2^n-1, n) - '0';

我提供了一个从 0 到 2^n-1 的向量,步长为 1,并允许 dec2bin 将这些十进制值中的每一个转换为具有 n 数字的二进制形式。

'0' 的减法很重要,因为 dec2bin 最初生成一个字符数组,其中每一行都是二进制数字序列,但实际上是字符。如果要将字符数组转换为数字,请记住字符以 ASCII 表示,因此用数字 0 的 ASCII 代码减去将得到 0 和 1 的实际值。

使用 n=5,我们得到这个(这与您的代码生成的相同):

A =

     0     0     0     0     0
     0     0     0     0     1
     0     0     0     1     0
     0     0     0     1     1
     0     0     1     0     0
     0     0     1     0     1
     0     0     1     1     0
     0     0     1     1     1
     0     1     0     0     0
     0     1     0     0     1
     0     1     0     1     0
     0     1     0     1     1
     0     1     1     0     0
     0     1     1     0     1
     0     1     1     1     0
     0     1     1     1     1
     1     0     0     0     0
     1     0     0     0     1
     1     0     0     1     0
     1     0     0     1     1
     1     0     1     0     0
     1     0     1     0     1
     1     0     1     1     0
     1     0     1     1     1
     1     1     0     0     0
     1     1     0     0     1
     1     1     0     1     0
     1     1     0     1     1
     1     1     1     0     0
     1     1     1     0     1
     1     1     1     1     0
     1     1     1     1     1