Matlab中带非标量下标的Accumarray?
我在Matlab中有一个矩阵Matlab中带非标量下标的Accumarray?,matlab,Matlab,我在Matlab中有一个矩阵a,其维数为mx3,例如m=18 A=[ 2| 1 1; 3| 1 2; -8| 1 3; ------- -5| 1 1; 2| 1 2; 6| 1 3; ------- 7| 2 1; 3| 2 2; 1| 2 3; 5| 2 4; ------- 3| 2 1; -8| 2 2; 1| 2 3; 0| 2 4; ------- 1|
a
,其维数为mx3
,例如m=18
A=[ 2| 1 1;
3| 1 2;
-8| 1 3;
-------
-5| 1 1;
2| 1 2;
6| 1 3;
-------
7| 2 1;
3| 2 2;
1| 2 3;
5| 2 4;
-------
3| 2 1;
-8| 2 2;
1| 2 3;
0| 2 4;
-------
1| 2 1;
2| 2 2;
7| 2 3;
9| 2 4]
A
的特点如下:
t
子矩阵组成。在示例t=5
中t
都有维度bx3
和b在检查行上的A
时使用unique
的第三个输出,并使用'stable'
标志,然后将其作为accumarray
的输入。第三个输出为矩阵a
中出现的行向量的每个唯一匹配项分配一个唯一ID,非常适合在accumarray
中使用:
[~,~,f] = unique(A(:,2:end), 'rows', 'stable');
B = accumarray(f, A(:,1));
我们得到:
B =
-3 %// 2-5
5 %// 3+2
-2 %// -8+6
11 %// 7+3+1
-3 %// 3-8+2
9 %// 1+1+7
14 %// 5+0+9
B =
-3 %// 2-5
5 %// 3+2
-2 %// -8+6
11 %// 7+3+1
-3 %// 3-8+2
9 %// 1+1+7
14 %// 5+0+9