2014-12-09 4 views
0

MATLAB을 사용하여 배열의 연속 된 숫자 쌍을 어떻게 찾으십니까? 예를 들어 : 분명히배열의 연속 된 숫자 쌍을 모두 찾으십시오.

A = [1 2 3 4]; 
B = desiredFunction(A) % B = [1 2;2 3;3 4] 

, 나는 for를 배열을 통해 반복 사용 할 수 있지만, 나는이 일을 더 우아한 방법이 있다고 가정합니다. 어쩌면 모양이 변형 된 것일 수도 있습니다.

내 시나리오의 A는 항상 정렬되지만 모두를 fullfil 할 필요는 없습니다 (diff (A) == 1). A의 정렬이 도움이된다면 두 가지 해결책이 환영받을 것입니다 (하나는 항상 A로 정렬되고 하나는 일반적인 해결책).

감사합니다.

답변

0

당신은 당신이 연속 위치을 의미하고 반복하지 않고 쌍을 원하는 해석

B = [A(1:end-1)',A(2:end)']; 
+0

, 아주 쉬운 :

B = unique([A(1:end-1).' A(2:end).'], 'rows'); 

당신은 또한 당신에게 각 쌍의 발생 횟수를 줄 것이다, sparse를 사용할 수 있습니다. 그 생각을해야한다 :) – user1809923

1

를 사용할 수 있습니다.

unique이 쉽게 수행 : 사실

>> A = [1 2 3 4 3 4]; %// note: [3 4] appears twice 
>> sparse(A(1:end-1), A(2:end), 1) 
ans = 
    (1,2)  1 
    (2,3)  1 
    (4,3)  1 
    (3,4)  2 
+0

질문에 "conescutive numbers"를 해석하는 방법을 모르겠다.하지만 idx = find (diff (A) == 1); 결과 = B (idx, :)'. – jolo

+0

"연속 _positions_"이 아닌 "연속 _positions_"을 해석합니다. –

+0

예 - 눈치 챘습니다. 왜 당신은'독특한'을 사용합니까? – jolo