一个元素跟随另一个元素的次数的计数

时间:2014-07-15 22:34:53

标签: matlab count sparse-matrix

我有一个包含正实数int流的向量。

A = [1 2 1 1 3 2 ];

我想创建一个稀疏矩阵WW(WxW,W是A中不同元素的数字),其中W(i,j)包含元素i的次数计数一个A跟随流中的A的元素j

WW = 
   (1,1)        1
   (1,2)        1
   (1,3)        0
   (2,1)        1
   (2,2)        0
   (2,3)        1
   (3,1)        1
   (3,2)        0
   (3,3)        0

1 个答案:

答案 0 :(得分:1)

对于accumarray来说,这看起来很完美:

result = accumarray([A(2:end).' A(1:end-1).'], 1, [], @sum, [], true);

或者您可以直接使用sparse

result = sparse(A(2:end), A(1:end-1), 1);

在您的示例中,上述任一项都给出了

result =
   (1,1)        1
   (2,1)        1
   (3,1)        1
   (1,2)        1
   (2,3)        1