我在维度A
(m*d)x2
A=[1 1;
3 2;
8 3;
-----
9 1;
2 2;
5 3;
-----
6 1;
1 2;
4 3;
-----
8 1;
1 2;
5 3];
因此,m=max(A(:,2))=3
和d=4
是维A
的{{1}}中的子矩阵数。第二列总是由始终以循环方式排列的整数组成。
我希望通过将mx2
的元素与第二列的相同整数相关联而不使用循环来获取维度B
的向量mx1
,即
A(:,1)
你能帮帮我吗?
答案 0 :(得分:3)
按一般性顺序递增:
result = sum(reshape(A(:,1), m, []), 2);
如果第二列由整数组成:请使用accumarray
:
result = accumarray(A(:,2), A(:,1));
在最常见的情况下,accumarray
之前需要unique
:
[~, ~, u] = unique(A(:,2));
result = accumarray(u, A(:,1));