在矩阵中成对减去列

时间:2013-09-07 16:35:34

标签: matrix octave

我有一个 m x n 矩阵。有人可以帮我制作一个新的矩阵,由n列的成对减法产生吗? n可能非常大。

例如,A是3 x 4矩阵

octave:39> A = [1, 2, 3, 4; 11, 22, 33, 44; 111, 222, 333, 444]

A =

     1     2     3     4
    11    22    33    44
   111   222   333   444

我想制作一个矩阵B:

octave:40> B = [A(:,1)-A(:,2), A(:,1)-A(:,3), A(:,1)-A(:,4), A(:,2)-A(:,3), A(:,2)-A(:,4), A(:,3)-A(:,4)]

B =

    -1    -2    -3    -1    -2    -1
   -11   -22   -33   -11   -22   -11
  -111  -222  -333  -111  -222  -111

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

[m n]=size(a);
k=1;
b=zeros(m,nchoosek(n,2));
for i=1:n
  for j=i+1:n
    b(:,k)=a(:,i)-a(:,j);
    k=k+1;
  end
end