Generating a select set of permutations

2 visualizaciones (últimos 30 días)
Mason Dyess
Mason Dyess el 15 de Ag. de 2019
Comentada: Mason Dyess el 15 de Ag. de 2019
So for example say I have a vector of length 17. I can fill each element with a -1, 0 or a 1, and I want MATLAB to output the permutations for this situation. However, I realize that trying to output all the permutations would be way too large and unfeasible (3^17 for my example), and I'm only really interested in the permutations that have a low number of non-zero elements (Ex: Only 4 of the 17 elements in the vector are a 1 or -1 and the rest are zeros). Is there a way to generate just this select set of permutations?

Respuesta aceptada

Bruno Luong
Bruno Luong el 15 de Ag. de 2019
m = 17;
nnz = 4;
p=(nchoosek(1:m,nnz));
q=2*(dec2bin(0:2^nnz-1)-'0')-1;
C=repelem(p,size(q,1),1);
R=repmat((1:size(C,1))',1,size(C,2));
V=repmat(q,size(p,1),1);
A = accumarray([R(:) C(:)],V(:))
  1 comentario
Mason Dyess
Mason Dyess el 15 de Ag. de 2019
Thank you so much Bruno Luong. I honestly was skeptical that this scenario was even solvable, but your solution works exactly like I envisioned. Thanks again!

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Elementary Math en Help Center y File Exchange.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by