how to make a matrix only showing Permutation without order ?

3 visualizzazioni (ultimi 30 giorni)
iam currently on projekt calculation every 3 Dart Single Kombination possible but without giving me the same number in a differnt order.
Code
c=[1:20 25]
c = 1×21
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 25
Single1=c
Single1 = 1×21
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 25
Single2=Single1;
Single3=Single1;
Singlkomb = fliplr(combvec(Single1,Single2,Single3)')
Singlkomb = 9261×3
1 1 1 1 1 2 1 1 3 1 1 4 1 1 5 1 1 6 1 1 7 1 1 8 1 1 9 1 1 10
the combination fliplr(combvec(Single1,Single2,Single3)') brings me all the combination e.g 1 2 1, 2 1 1 and 1 1 2 but i only want that the same numbers appears one time in the matrix. I want to find a method that shows me permutation without order.
Thx

Risposta accettata

Torsten
Torsten il 28 Ott 2022
Modificato: Torsten il 28 Ott 2022
You mean
nchoosek([1:20,25],3)
ans = 1330×3
1 2 3 1 2 4 1 2 5 1 2 6 1 2 7 1 2 8 1 2 9 1 2 10 1 2 11 1 2 12
nchoosek(21,3)
ans = 1330
not
21^3
ans = 9261
?
  2 Commenti
Simon Gühring
Simon Gühring il 28 Ott 2022
hey thank you for your answer
no maybe i havn`t expressed myself very well i want as output
1 1 1
1 1 2
1 1 3 and so on
but every kombination should appear just once for example only 1 1 2 and not 1 2 1 or 2 1 1 its about the order.
Torsten
Torsten il 28 Ott 2022
Modificato: Torsten il 28 Ott 2022
c=[1:20 25];
Single1=c;
Single2=Single1;
Single3=Single1;
Singlkomb = fliplr(combvec(Single1,Single2,Single3)')
Singlkomb = 9261×3
1 1 1 1 1 2 1 1 3 1 1 4 1 1 5 1 1 6 1 1 7 1 1 8 1 1 9 1 1 10
Singlkomb = unique(sort(Singlkomb,2),'rows')
Singlkomb = 1771×3
1 1 1 1 1 2 1 1 3 1 1 4 1 1 5 1 1 6 1 1 7 1 1 8 1 1 9 1 1 10
nchoosek(21,1)+nchoosek(21,2)*2+nchoosek(21,3)
ans = 1771

Accedi per commentare.

Più risposte (1)

Bruno Luong
Bruno Luong il 29 Ott 2022
This is called combination with repetition
You don't need to generate the permutation and filter out which can take much larger amount of memory
a=[1:20,25]
a = 1×21
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 25
k=3
k = 3
c=repcomb(a, k)
c = 1771×3
1 1 1 1 1 2 1 1 3 1 1 4 1 1 5 1 1 6 1 1 7 1 1 8 1 1 9 1 1 10
%% return combination of k elements of array a with repetition
function c = repcomb(a, k)
n=length(a);
q=n+k-1;
j=nchoosek(1:q,k)-(0:k-1);
c=a(j);
end

Prodotti


Release

R2022b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by