我在维度A
的Matlab中有一个矩阵m x 3
,例如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
的维度b x 3
都带有b<=m
,而b
可以取{3,4,5,...,m}
中的任何值(显然,某种方式是这样的所有行的总和是m
)。在示例中,第一个和第二个子矩阵的维度为3 x 3
,最后三个子矩阵的维度为4 x 3
。
相同维度的所有子矩阵一个接一个地堆叠。在示例中,首先我们有子矩阵3 x 3
,然后是子矩阵4 x 3
。
我想计算维B
的向量f x 1
f=size(unique(A(:,2:end),'rows','stable'),1)
,(在示例f=7
中),以便通过求和获得B(i,1)
j
A(:,1)
的元素A(j,2:end)
i
等于第unique(A(:,2:end),'rows','stable')
行B=[2-5;
3+2;
-8+6
7+3+1;
3-8+2;
1+1+7;
5+0+9]
,即
update openquery (LINKSERVERID, 'select tng_email from user_list where tng_id = 62873')
set tng_email = 'blah@blah.com';
答案 0 :(得分:3)
在检查行unique
和A
标记时使用'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