我有一个两行数组 transform(A,correct=zoo::na.locf0(correct,T))
index A B correct
1 1 1 1 0
2 2 1 2 0
3 3 1 3 0
4 4 2 1 1
5 5 2 2 1
6 6 2 3 1
,如下所示。我想在第一行中的索引重复时总结第二行中的元素,并最终生成矩阵A
。
我怎么能在MATLAB中做到这一点?
B
我尝试使用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
但我不知道如何继续前进。
感谢。
答案 0 :(得分:4)
这是一种可行的方法:
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