MATLAB: все возможные комбинации двоичных матриц
Я ищу, чтобы найти все возможные линейные комбинации набора матриц над GF(2)
, Я знаю количество матриц, k
и они все одного размера, хранятся в трехмерном массиве, C(:,:,i)
для i-й матрицы. Потому что я работаю над GF(2)
все коэффициенты линейной комбинации должны быть в {0,1}
, Я хотел бы сгенерировать каждую из 2^k возможных сумм, чтобы я мог проверить полученную матрицу на требуемое свойство. Есть много постов о генерации всех комбинаций элементов матриц или векторов, но я стремлюсь генерировать все линейные комбинации матриц в целом.
Большое спасибо!
1 ответ
Вот пример:
%# 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