Новый ответ:
Вы можете ускорить решение DEC2BIN , предложенное AB (с помощью деревянные щепки ), вместо этого используя функцию BITGET, Есть два способа приблизиться к этому. Первый использует функцию REPMAT , чтобы сделать входы одинаковыми по размеру (обе матрицы 32 на 5):
allCombos = bitget(repmat((0:31)',1,5),repmat(5:-1:1,32,1));
А второй просто вызывает BITGET один раз для каждого отдельного бита, который вы хотите получить:
vec = (0:31)';
allCombos = [bitget(vec,5) bitget(vec,4) bitget(vec,3) ...
bitget(vec,2) bitget(vec,1)];
А вот некоторые примеры времени:
Method | Average Time
-----------------+------------------
DEC2BIN | 0.000788 s
BITGET+REPMAT | 0.000727 s
BITGET x5 | 0.000045 s
Как видите, развернутый BITGET очень быстрый.
Старый ответ: (для потомков)
Если вы хотите построить матрицу из каждого возможного вектора из нулей и единиц, имеющих длину 5, это будет одним из способов сделать это с помощью функций PERMS и UNIQUE (поскольку PERMS создает повторяющиеся строки):
allCombos = [0 0 0 0 0;
unique(perms([0 0 0 0 1]),'rows'); ...
unique(perms([0 0 0 1 1]),'rows'); ...
unique(perms([0 0 1 1 1]),'rows'); ...
unique(perms([0 1 1 1 1]),'rows'); ...
1 1 1 1 1];