2012-07-24 2 views
3

이의 내가 같은 벡터의 구성원 사이의 모든 차이를 계산하는 가장 좋은 방법이 될 것입니다 무엇 짧은 벡터 x = [a,b,c,d,e]; 있다고 가정 해 봅시다 : 사전에계산 모든 차이의 가능성

y = [e-d e-c e-b e-a 
    d-e d-c d-b d-a 
    c-e c-d c-b c-a 
    b-e b-d b-c b-a 
    a-e a-d a-c a-b]; 

감사를

답변

7

그 정확한 매트릭스 정제하여 순환 행렬을 생성하기위한 기준이며, 시도 :

x = [1;2;3;4;5];  %# note this is a column vector (matrix of rows in general) 

D = squareform(pdist(x,@(p,q)q-p)); 
U = triu(D); 
L = tril(D); 
y = flipud(fliplr(L(:,1:end-1) - U(:,2:end))) 

결과이 경우 :

y = 
    1  2  3  4 
    -1  1  2  3 
    -2 -1  1  2 
    -3 -2 -1  1 
    -4 -3 -2 -1