How to obtain discernable permutations of a vector ?
이전 댓글 표시
Hi everyone,
I have the following problem : let's say I have the vector v=(1,1,1,0,0) and I want to generate the permutations of this vector. The problem is, if I simply use perms(v), matlab is going to generate many degenerate vectors because it does not understand that the elements of my vector are similar (so for instance I will have like ten exemplars of (1,0,1,1,0) , then ten of (0,1,1,1,0), etc). Of course I can easily make a code that gets rid of those degenerate vectors, but it is very time consuming when the length of the vector gets bigger.
Thank you for your help guys.
Alex.
채택된 답변
추가 답변 (1개)
szenicer
2014년 11월 18일
0 개 추천
댓글 수: 2
Roger Stafford
2014년 11월 18일
x = [1,1,1,0,0];
n = size(x,2);
k = nnz(x);
C = nchoosek(1:n,k);
m = size(C,1);
A = zeros(m,n);
for ix = 1:m
A(ix,C(ix,:)) = 1;
end
The ten rows of A will have all possible distinct permutations of the 1's and 0's in x.
szenicer
2014년 11월 20일
카테고리
도움말 센터 및 File Exchange에서 Profile and Improve Performance에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!