0
나는 combnk
을 사용하여 조합 목록을 생성합니다. 그러나 결과 모양이 내 필요한 데이터가 아닙니다. 나는 combnk(1:3,2)
에 대한 예를 들어 원하는 : 내가 그것을 어떻게조합, 부분 집합, MATLAB
1 2
1 3
2 3
하지
1 1 0
0 1 1
1 0 1
? 결과를 내기 위해 combnk
을 어떻게 바꿀 수 있습니까?
나는 combnk
을 사용하여 조합 목록을 생성합니다. 그러나 결과 모양이 내 필요한 데이터가 아닙니다. 나는 combnk(1:3,2)
에 대한 예를 들어 원하는 : 내가 그것을 어떻게조합, 부분 집합, MATLAB
1 2
1 3
2 3
하지
1 1 0
0 1 1
1 0 1
? 결과를 내기 위해 combnk
을 어떻게 바꿀 수 있습니까?
당신은 각 행이 원래 벡터 v
에 대한 논리적 선택 벡터이다 그래서 대신
1 2
1 3
2 3
의
1 1 0
1 0 1
0 1 1
원하는 의미하지 않는다?
다음에 이것을 얻을 수:
v = 1:3;
k = 2;
tmp = combnk(v,k);
M = size(tmp,1);
output = false(M,numel(v));
output(sub2ind(size(output),repmat((1:M)',1,k),tmp))=true;
결과 :
output =
1 1 0
1 0 1
0 1 1
또 다른 해결책 :
c = combnk(1:3,2);
r = repmat(1:size(c,1), [1 size(c,2)]);
output = full(sparse(r,c(:),1))
결과 :
output =
1 1 0
1 0 1
0 1 1