2012-07-24 44 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