MATLAB:二进制矩阵的所有可能组合

时间:2012-05-02 20:39:23

标签: matlab combinations combinatorics

我希望在GF(2)之上找到一组矩阵的所有可能的线性组合。我知道矩阵的数量k,它们都是相同的维度,存储在3D数组中,C(:,:,i)用于第i个矩阵。因为我在GF(2)上工作,所以线性组合的所有系数都必须在{0,1}中。我想生成每个2 ^ k个可能的总和,以便我可以测试所需属性的结果矩阵。关于生成矩阵或向量的元素的所有组合有很多帖子,但我希望生成矩阵的所有线性组合作为一个整体。

非常感谢!

1 个答案:

答案 0 :(得分:2)

以下是一个例子:

%# some data to work with
sz = [4 3];
k = 6;
C = rand([sz k]);

%# coefficients [0,0,0,0,0,0] to [1,1,1,1,1,1]
p = (dec2bin(0:2^k-1) == '1');

%# generate all linear combinations with the above coefficients
for i=1:size(p,1)
    %# C(:,:,1)*p(i,1) + C(:,:,2)*p(i,2) + ... + C(:,:,k)*p(i,k)
    linComb = sum(bsxfun(@times, permute(p(i,:),[1 3 2]), C),3);

    %# do something interesting with it ...
end