我有以下问题。
我有一个像这样的矩阵:
[1 0 1 0 0 1 0 1 1],
[1 1 1 1 1 1 1 1 1]
现在想要在第一列的1之间添加第二列中的所有值。 像距离测量。
在这种情况下,人们会期待
[2 3 2 1 1]
任何帮助都会非常感激!
答案 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'函数在单个命令中执行。