2012-05-02 79 views
4

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

非常感谢!

+2

生成所有可能的'k'长度矢量,并使用他们的元素作为系数。 –

回答

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