计算向量中的所有差异可能性

时间:2012-07-24 01:55:56

标签: matlab math vector

假设我有一个短向量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];

提前致谢

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

首先创建一个circulant matrix,然后计算第一列和其余列之间的差异。 Here是创建循环矩阵的参考