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];

前もって感謝します

4

2 に答える 2

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
于 2012-07-24T02:22:03.077 に答える
0

最初に巡回行列を作成し、次に最初の列と残りの列の差を計算します。巡回行列を作成するためのリファレンスは次のとおりです

于 2012-07-24T02:20:08.377 に答える