2014-07-15 1 views
0

나는 포지티브 리얼 int의 스트림을 포함하는 벡터를 가지고있다. 즉 소자 (A)의 i는에서의 소자 jW(i,j) 횟수의 카운트를 포함 다음하나의 요소가 다른 하나를 따르는 횟수의 카운트

A = [1 2 1 1 3 2 ]; 

I는 희소 행렬을 생성하고자는 WW (A의 고유 요소 경우 WxW는, W는 수이다) 스트림.

WW = 
    (1,1)  1 
    (1,2)  1 
    (1,3)  0 
    (2,1)  1 
    (2,2)  0 
    (2,3)  1 
    (3,1)  1 
    (3,2)  0 
    (3,3)  0 
+1

할 수 있습니까? 예제의 출력은? – Ben

답변

1

이것은 accumarray을위한 완벽한 작업과 같습니다

result = accumarray([A(2:end).' A(1:end-1).'], 1, [], @sum, [], true); 

또는 직접 sparse을 사용할 수 있습니다 : 당신의 예에서

result = sparse(A(2:end), A(1:end-1), 1); 

, 위의 중 하나가

result = 
    (1,1)  1 
    (2,1)  1 
    (3,1)  1 
    (1,2)  1 
    (2,3)  1 
을 제공합니다