Permutation with repeating elements.
21 ビュー (過去 30 日間)
古いコメントを表示
Hello, greetings! I have the following array, A= 1:7. I want to get all the possible permutations of seven elements and I am trying to get my answer like this
ans =
1 2 3 4 5 6 7
1 2 5 3 4 7 6
2 3 4 5 1 7 6...... etc
It should be easy. But in the 'A' matrix, 1 and 2 indicates the simillar thing; 3 and 4 indicates the simillar thing; 5, 6, and 7 indicates the simillar thing. So, in the 'ans' 1 2 3 4 5 6 7 and 2 1 4 3 7 6 5 will be same. I want the code to return the values without repitating it. Is there any way to do this?
note: I want this code to do linear indexing. So, I can't replace A with any other matrix. It has to be 1:7.
0 件のコメント
採用された回答
Bruno Luong
2022 年 10 月 16 日
Just brute force of filter out what is considered as duplicated
g = [1 1 2 2 3 3 3];
x = 1:7;
p = perms(x);
[~,i] = unique(perms(g),'rows');
p = p(i,:);
p
5 件のコメント
Bruno Luong
2022 年 10 月 16 日
編集済み: Bruno Luong
2022 年 10 月 16 日
Simplify lperms
function p = lperms(x, k)
p = nchoosek(x,k);
p = reshape(p(:,perms(1:k)),[],k);
end
その他の回答 (1 件)
参考
カテゴリ
Help Center および File Exchange で Creating and Concatenating Matrices についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!