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
76 次查看(过去 30 天)
显示 更早的评论
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.
采纳的回答
更多回答(3 个)
Jonas
2021-7-13
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 个评论
Alec Jacobson
2023-6-3
https://stackoverflow.com/questions/28284671/generating-all-combinations-with-repetition-using-matlab/28284672#28284672
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Discrete Math 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!