2012-05-02 119 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