¿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