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

Antworten auf die Frage(6)

Ihre Antwort auf die Frage