Thank you to David and Jonas for providing those answers! I really do appreciate the help. I tried both and they worked!
Producing all combinations of a vector with replacement
78 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
May_the_degrees_of_freedom_be_with_you
el 13 de Jul. de 2021
Respondida: Alec Jacobson
el 3 de Jun. de 2023
I am trying to produce all unique combinations of a vector with replacement, given some "choose" parameter, but neither the nchoosek() nor the perms() functions do exactly what I am trying to do.
For example, all unique combinations of the integers 1 and 2, derived manually, are:
uc = [1 1; 1 2; 2 2]
uc =
1 1
1 2
2 2
Similarly, all unique combinations of the integers 1, 2, and 3, choosing only two in any permutation are:
uc2 = [1 1; 1 2; 1 3; 2 2; 2 3; 3 3]
uc2 =
1 1
1 2
1 3
2 2
2 3
3 3
The C output for nchoosek() does not produce the desired result because it returns all possible combinations without replacement. For example:
L2 = [1 2];
L2k2 = nchoosek(L2,2)
L2k2 =
1 2
L3 = [1 2 3];
L3k2 = nchoosek(L3,2)
L3k2 =
1 2
1 3
2 3
The perms() function also does not work for this purpose because it both samples without replacement and produces duplicate combinations. For example:
test1 = perms(L2)
test2 = perms(L3)
test1 =
2 1
1 2
test2 =
3 2 1
3 1 2
2 3 1
2 1 3
1 3 2
1 2 3
Is there a way to toggle the settings of the nchoosek() function so that it produces all possible combinations of a vector v, given k values in each row, with replacement?
Thank you in advance.
1 comentario
Respuesta aceptada
David Hill
el 13 de Jul. de 2021
[x,y]=meshgrid(1:4);
z=unique(sort([x(:),y(:)],2),'rows');
0 comentarios
Más respuestas (3)
Jonas
el 13 de Jul. de 2021
you could e.g. use
nchoosek(repelem(1:3,2),2)
but then you whould have to use unique(...,'rows') on the resulting combinations
0 comentarios
Alec Jacobson
el 3 de Jun. de 2023
https://stackoverflow.com/questions/28284671/generating-all-combinations-with-repetition-using-matlab/28284672#28284672
0 comentarios
Ver también
Categorías
Más información sobre Discrete 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!