Alle Kombinationen mit Wiederholung mit MATLAB erzeugen
Wie erstelle ich alle k-Kombinationen mit Wiederholungen einer gegebenen Menge (auch @ genann k-Multikombinationen oder multisubsets) mit MATLAB?
Dies ist dem kartesischen Produkt ähnlich, aber zwei Zeilen, die sich nur durch ihre Sortierung unterscheiden, sollten als gleich angesehen werden (z. B. die Vektoren[1,1,2]=~=[1,2,1]
werden als gleich angesehen), so dass das kartesische Produkt erzeugt und dann @ angewendet wiunique(sort(cartesianProduct,2),'rows')
sollte die gleichen Ergebnisse liefern.
Beispiel Der Anrufnmultichoosek(1:n,k)
sollte die folgende Matrix erzeugen:
nmultichoosek(1:3,3)
ans =
1 1 1
1 1 2
1 1 3
1 2 2
1 2 3
1 3 3
2 2 2
2 2 3
2 3 3
3 3 3