MATLAB: все возможные комбинации двоичных матриц

Я ищу все возможные линейные комбинации набора матриц над GF(2). Я знаю количество матриц k, и все они имеют одинаковое измерение и хранятся в трехмерном массиве C(:,:,i) для i-й матрицы. Поскольку я работаю над GF(2), все коэффициенты линейной комбинации должны быть в {0,1}. Я хотел бы сгенерировать каждую из 2 ^ k возможных сумм, чтобы я мог проверить полученную матрицу на предмет требуемого свойства. Есть много сообщений о генерации всех комбинаций элементов матриц или векторов, но я хочу сгенерировать все линейные комбинации матриц в целом.

Огромное спасибо!


person user1371024    schedule 02.05.2012    source источник
comment
Сгенерируйте все возможные векторы длины k и используйте их элементы в качестве коэффициентов.   -  person reve_etrange    schedule 03.05.2012


Ответы (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
person Amro    schedule 09.06.2012