Arrays 根据重复索引对数组求和
我有一个两行数组Arrays 根据重复索引对数组求和,arrays,matlab,Arrays,Matlab,我有一个两行数组a,如下所示。当第一行中的索引重复时,我想对第二行中的元素求和,并最终生成一个矩阵B。 如何在MATLAB中实现它 A = [1, 2, 2, 1, 2, 1, 2, 2, 1; 1, 2, 3, 4, 5, 1, 2, 3, 4]; B = [1, 2, 1, 2, 1, 2, 1; 1, 5, 4, 5, 1, 5, 4]; 我尝试使用diff函数(见下文)计算索引 d = diff(A(1,:))==0 goodIdx = ~([d',false]|
a
,如下所示。当第一行中的索引重复时,我想对第二行中的元素求和,并最终生成一个矩阵B
。
如何在MATLAB中实现它
A = [1, 2, 2, 1, 2, 1, 2, 2, 1;
1, 2, 3, 4, 5, 1, 2, 3, 4];
B = [1, 2, 1, 2, 1, 2, 1;
1, 5, 4, 5, 1, 5, 4];
我尝试使用diff
函数(见下文)计算索引
d = diff(A(1,:))==0
goodIdx = ~([d',false]|[false,d'])
但我不知道如何继续下去
谢谢。这是一种可能的方法:
A = [1, 2, 2, 1, 2, 1, 2, 2, 1;
1, 2, 3, 4, 5, 1, 2, 3, 4]; % data
ind = [true diff(A(1,:))~=0]; % logical indices of "new" values
s = accumarray(cumsum(ind).', A(2,:).').'; % sum values in second row of A in groups
% defined by the cumulative sum of ind
B = [A(1,ind); s]; % build result