元素之和在索引向量中的点之间的向量中

时间:2014-07-23 06:39:04

标签: matlab matrix sum

我有以下问题。

我有一个像这样的矩阵:

  

[1 0 1 0 0 1 0 1 1],

     

[1 1 1 1 1 1 1 1 1]

现在想要在第一列的1之间添加第二列中的所有值。 像距离测量。

在这种情况下,人们会期待

  

[2 3 2 1 1]

任何帮助都会非常感激!

2 个答案:

答案 0 :(得分:2)

看起来你可以使用accumarray。由于我不能完全理解您的数组设置,因为您可以互换地讨论行和列,为简单起见,我将行放在2个不同的变量中;

>>> a=[1 0 1 0 0 1 0 1 1]      -- Vector of ones for the cutoff points
>>> b=[1 1 1 1 1 1 1 1 1]      -- Your sample vector
>>> c=[1 2 1 2 1 1 0 1 1]      -- A slightly more complicated sample vector

>>> accumarray(cumsum(a)',b)
ans =
   2
   3
   2
   1
   1

>>> accumarray(cumsum(a)',c)
ans =
   3
   4
   1
   1
   1

答案 1 :(得分:1)

您可以使用累积和函数,然后在A> 0的点上对其值进行采样。然后只计算数组元素之间的差异:

A=[1 0 1 0 0 1 0 1 1];
B=[1 1 1 1 1 1 1 1 1];
Bsum=cumsum(B);
BsumAtA=Bsum(A>0);
Result=diff(BsumAtA)

' accumarray'函数在单个命令中执行。