Nouvelle réponse:
Vous pouvez accélérer la solution DEC2BINsuggested by AB (avec une aide par woodchips) par la place en utilisant la fonction BITGET. Il y a deux façons d'aborder cela. La première utilise la fonction REPMAT pour rendre les entrées de taille égale (les deux 32 par-5 matrices):
allCombos = bitget(repmat((0:31)',1,5),repmat(5:-1:1,32,1));
et le second appelle simplement BITGET une fois pour chaque bit individuel que vous voulez obtenir:
vec = (0:31)';
allCombos = [bitget(vec,5) bitget(vec,4) bitget(vec,3) ...
bitget(vec,2) bitget(vec,1)];
Et voici quelques exemples: horaires d'
Method | Average Time
-----------------+------------------
DEC2BIN | 0.000788 s
BITGET+REPMAT | 0.000727 s
BITGET x5 | 0.000045 s
Comme vous pouvez le voir, la BITGET déroula est très rapide.
Vieille réponse: (pour la postérité)
Si vous êtes désireux de construire une matrice de tous les vecteurs possibles de zéros et ceux qui a une longueur de 5, ce serait une façon de le faire en utilisant les fonctions PERMS et UNIQUE (depuis PERMS crée des lignes répétées):
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];
Merci! Je pense que c'est exactement ce dont j'ai besoin. –
@Kiran: Gardez à l'esprit que vous devez d'abord choisir un vecteur à 5 éléments de uns et de zéros pour commencer, puis PERMS vous donnera toutes les permutations de cela. – gnovice
Merci pour le conseil, gnovice. Cela rend mon code beaucoup plus rapide que plus tôt et c'est vraiment bien. –