2012-06-11 4 views
2

in matlab 어떻게해야합니까? 필자는 n 개의 요소 집합을 가지고 있습니다.주어진 세트에서 가능한 별개 세트 쌍을 생성하는 방법은 무엇입니까?

이 집합으로부터 다른 쌍의 요소가 구별되도록 n/2 쌍의 새로운 집합을 만듭니다. matlab에서 n 개의 요소로 구성된 이러한 n/2 쌍의 고유 한 집합을 생성하려면 어떻게해야합니까?

입력 세트 - {1,2,3,4}

가능한 출력 세트 -

{{1,2}, {3,4}}

{{1,3}, { 2,4}}

{{1,4}, 내가 요구 사항은 "각 절반 벡터에 대한 별개의 요소"에 대한 깨끗한 해결책을 찾을 수 없습니다

+2

은 귀하의 질문에 어떻게 전혀 그것을 할 수 있나요, 아니면 연필 및 종이 함께 할과 MATLAB 구현에 대한 질문이있을 수 있을까? 어느 쪽이든, 지금까지 시도한 것은 무엇이고 어디에서 붙어 있습니까? –

+0

[Mathematica.SE에서이 질문을하고 잘 대답했습니다.] (http://mathematica.stackexchange.com/q/3044/121) Accepted answer를 사용할 수 있도록 조정할 수도 있습니다. –

답변

0

{2,3}}. 따라서 각 결과를 개별적으로 확인하는 것이 좋습니다. 더 좋은 해결책이있을 것으로 기대합니다. 이건 단지 일을하는 것입니다.

x = [1 2 3 3]; 
xsize = size(x,2); 

p = perms(x); 
up = unique(p,'rows'); 

result = []; 

for entry=up' 
    left = entry(1:xsize/2); 
    right = entry(xsize/2+1:xsize); 
    if numel(unique(left)) == xsize/2 && numel(unique(right)) == xsize/2 
    result = vertcat(result,entry') 
    end 
end 

그냥 완성도, 결과는 다음과 같습니다

1 3 2 3 
1 3 3 2 
2 3 1 3 
2 3 3 1 
3 1 2 3 
3 1 3 2 
3 2 1 3 
3 2 3 1 

난 당신이 실제로 절반 가까이 떨어졌다 벡터를 분할 필요한 경우 확실하지 않았다. 이 경우 leftright을 원하는대로 넣으십시오.

+0

수정 된 질문 –

+0

@ user494461을 확인하십시오. 이제는 각 반쪽 벡터에 고유 한 요소가 필요하다는 차이점이 있습니다. 반복되는 가치가있는 제 의견으로는 더 웅변적인 예를 제시해야합니다. –