¿cómo producir cada permutación de posicionamiento de 20 valores de -1 en un vector de uno por 41?

He escrito un código diferente para producir diferentes permutaciones de unos y menos. funcionan para matrices de pequeñas dimensiones:

por ejemplo

S=[-1 -1 1 1 1 1 1 1];
P=unique(perms(S),'rows');

productos:

-1  -1   1   1   1   1   1   1
-1   1  -1   1   1   1   1   1
-1   1   1  -1   1   1   1   1
-1   1   1   1  -1   1   1   1
-1   1   1   1   1  -1   1   1
-1   1   1   1   1   1  -1   1
-1   1   1   1   1   1   1  -1
 1  -1  -1   1   1   1   1   1
 1  -1   1  -1   1   1   1   1
 1  -1   1   1  -1   1   1   1
 1  -1   1   1   1  -1   1   1
 1  -1   1   1   1   1  -1   1
 1  -1   1   1   1   1   1  -1
 1   1  -1  -1   1   1   1   1
 1   1  -1   1  -1   1   1   1
 1   1  -1   1   1  -1   1   1
 1   1  -1   1   1   1  -1   1
 1   1  -1   1   1   1   1  -1
 1   1   1  -1  -1   1   1   1
 1   1   1  -1   1  -1   1   1
 1   1   1  -1   1   1  -1   1
 1   1   1  -1   1   1   1  -1
 1   1   1   1  -1  -1   1   1
 1   1   1   1  -1   1  -1   1
 1   1   1   1  -1   1   1  -1
 1   1   1   1   1  -1  -1   1
 1   1   1   1   1  -1   1  -1
 1   1   1   1   1   1  -1  -1

indices = nchoosek(1:41, 6);
N = size(indices, 1);
S = ones(N, 41);
S(sub2ind([N 41], [1:N 1:N 1:N 1:N 1:N 1:N].', indices(:))) = -1;

puede producir una matriz de 4496388_by_41 de todas las permutaciones de 6 menos uno (-1) y 35 uno (1).

estos códigos funcionan para dimensiones más pequeñas pero no funcionan para las matrices con dimensiones más grandes.

mi objetivo es producir todas las permutaciones de 20 menos uno (-1) y 21 uno (1) esta matriz tiene 269128937220 filas y 41 columnas. pero los siguientes códigos no funcionan:

indices = nchoosek(1:41, 20);
N = size(indices, 1);
S = ones(N, 41);
S(sub2ind([N 41], [1:N 1:N 1:N 1:N 1:N 1:N 1:N 1:N 1:N 1:N 1:N 1:N 1:N 1:N 1:N 1:N 1:N 1:N 1:N 1:N].', indices(:))) = -1;

S=[-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1];
P=unique(perms(S),'rows');

Realizo un cálculo simple en cada permutación (cada fila de esta matriz). si pudiera escribir cada fila de esta matriz con bucles for y luego hacer el cálculo en esa fila, podría mantener el mejor resultado y en esta situación no tendría que guardar todos estos datos en la memoria y no lo haría No salga de los errores de memoria de matlab.

si sabes cómo producir una matriz de todas las permutaciones de 20 menos uno (-1) y 21 uno (1) con bucles for o cualquier otra forma de almacenarlos en mi computadora, por favor ayuda.

gracias por adelantad

Respuestas a la pregunta(1)

Su respuesta a la pregunta