Come faccio a creare tutte k-combinations with repetitions di un dato insieme (chiamato anche k-multicombinations o multisubsets) con MATLAB?Generazione di tutte le combinazioni con ripetizione con MATLAB
Questo è simile al prodotto cartesiano, ma due righe che differiscono solo per il loro smistamento deve essere considerato lo stesso (ad esempio, i vettori [1,1,2]=~=[1,2,1]
sono considerate essere la stessa), così generando il prodotto cartesiano e poi applicando unique(sort(cartesianProduct,2),'rows')
dovrebbe produrre gli stessi risultati.
Esempio: La chiamata nmultichoosek(1:n,k)
dovrebbe generare la seguente matrice:
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
Ver veloce e la memoria-efficiente! Grande domanda e risposta –
Hai davvero bisogno di 'rimodellare? ' Non è 'petts = values (combs); abbastanza? –
@LuisMendo: l'ho appena fatto, quindi per 'k = 1' restituirà un vettore di colonna. Altrimenti potrebbe essere omesso. – knedlsepp